From 62d3e0ae26e92b985f0d9f40fef7c15bd5dac523 Mon Sep 17 00:00:00 2001
From: Anton Kozhevnikov
Date: Thu, 4 Jan 2024 11:29:34 +0100
Subject: [PATCH] Update master branch (#948)
* [update] bump version; add link to discourse.group (#930)
* [refactor] get rid of template in radial_integrals_sum_L3() (#932)
* apply @simonpintarelli proposed code change
* get rid of one more tempale
* default: -> throw, whitespace
* fix
* apply format
---------
Co-authored-by: Simon Pintarelli
* [fix] subspace initialization in test_lr_solver (#934)
* [cmake] remove std::filesystem target (#936)
std::filesystem is part of C++17 which is required via CXX_STANDARD, there is no
need to check for it explicitly
* [fix] compilation error for ~memory_pool+tests (#939)
* Ci/rebuild base image (#942)
* CI: rebuild base images / pin spack to v0.21
* CI: use anonymous environments instead of dev-build with SPEC
* avoid creating partitions with empty intervals in COSTA `custom_layout`
---------
Co-authored-by: Anton Kozhevnikov
* [fix] truncate very small occupation numbers to 0 (#943)
* [refactor] minor cleaups (#938)
* minor cleaups
* apply format
* [cmake] add missing REQUIRED (#945)
* [fix] scalar-relativistic radial solver (#941)
Introduce a few fixes for the scalar-relativistic radial solver.
* [feature] port lr_addusdens to sirius (#937)
Use a different sequence of operations to compute G+q augmentation charge.
---------
Co-authored-by: Simon Pintarelli
Co-authored-by: Simon Pintarelli <1237199+simonpintarelli@users.noreply.github.com>
---
CMakeLists.txt | 13 +-
README.md | 1 +
apps/atoms/atom.cpp | 2 +-
apps/mini_app/CMakeLists.txt | 2 +-
apps/tests/CMakeLists.txt | 2 +-
apps/tests/test_enu.cpp | 65 +-
apps/tests/test_lr_solver.cpp | 2 +-
apps/tests/test_radial_solver.cpp | 38 +-
ci/baseimage.cuda.Dockerfile | 74 +-
ci/baseimage.rocm.Dockerfile | 15 +-
ci/build.Dockerfile | 15 +-
ci/cscs-daint.yml | 59 +-
cmake/modules/FindFilesystem.cmake | 250 --
doc/doxygen.cfg | 2 +-
spack/packages/sirius/fj.patch | 13 +
spack/packages/sirius/package.py | 8 +-
src/api/sirius.f90 | 101 +
src/api/sirius_api.cpp | 126 +
src/context/config.hpp | 12 +
src/context/input_schema.json | 5 +
src/context/simulation_context.cpp | 29 +-
src/core/memory.hpp | 2 +-
src/core/wf/wave_functions.hpp | 22 +-
src/dft/smearing.cpp | 9 +-
src/geometry/force.cpp | 2 +-
src/hamiltonian/hamiltonian.cpp | 22 +-
src/hamiltonian/hamiltonian.hpp | 3 +-
src/hamiltonian/hamiltonian_k.cpp | 23 +-
src/radial/radial_solver.hpp | 37 +-
src/sirius.hpp | 4 +-
src/testing.hpp | 2 +-
src/unit_cell/atom.hpp | 93 +-
src/unit_cell/atom_symmetry_class.cpp | 34 +-
src/unit_cell/atom_type_base.hpp | 25 -
src/unit_cell/unit_cell.cpp | 18 +-
verification/test31/H.json | 4369 +++++++++++++++++++++++++
verification/test31/output_ref.json | 273 ++
verification/test31/sirius.json | 53 +
38 files changed, 5284 insertions(+), 541 deletions(-)
delete mode 100644 cmake/modules/FindFilesystem.cmake
create mode 100644 spack/packages/sirius/fj.patch
create mode 100644 verification/test31/H.json
create mode 100644 verification/test31/output_ref.json
create mode 100644 verification/test31/sirius.json
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ca15ed623..351abf174 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ include(CMakePackageConfigHelpers)
project(SIRIUS
DESCRIPTION "Domain specific library for electronic structure calculations"
HOMEPAGE_URL "https://github.com/electronic-structure/SIRIUS"
- VERSION 7.5.0
+ VERSION 7.5.1
LANGUAGES CXX C)
# for CUDA_ARCHITECTURES
@@ -146,15 +146,6 @@ if(NOT SIRIUS_USE_FP32 STREQUAL "OFF")
endif()
endif()
-find_package(Filesystem COMPONENTS Final Experimental)
-
-add_library(sirius::filesystem INTERFACE IMPORTED)
- target_link_libraries(sirius::filesystem INTERFACE std::filesystem)
- target_compile_definitions(sirius::filesystem INTERFACE
- $<$:SIRIUS_STD_FILESYSTEM>
- $<$:SIRIUS_STD_FILESYSTEM_EXPERIMENTAL>
- )
-
if (SIRIUS_USE_OPENMP)
find_package(OpenMP REQUIRED)
endif()
@@ -215,7 +206,7 @@ if(SIRIUS_USE_ROCM)
endif()
if(SIRIUS_USE_MEMORY_POOL)
- find_package(umpire)
+ find_package(umpire REQUIRED)
endif()
# check if git command exists
diff --git a/README.md b/README.md
index 471a1460b..44d6f55e3 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,7 @@
[![GitHub Releases](https://img.shields.io/github/release/electronic-structure/sirius.svg)](https://github.com/electronic-structure/SIRIUS/releases)
+[![Forum](https://img.shields.io/badge/user_forum-discourse-blue.svg)](https://sirius-dsl.discourse.group/latest)
[![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](https://electronic-structure.github.io/SIRIUS-doc)
[![Licence](https://img.shields.io/badge/license-BSD-blue.svg)](https://raw.githubusercontent.com/electronic-structure/SIRIUS/master/LICENSE)
[![Build](https://github.com/electronic-structure/SIRIUS/workflows/Build/badge.svg?branch=master)](https://github.com/electronic-structure/SIRIUS/actions)
diff --git a/apps/atoms/atom.cpp b/apps/atoms/atom.cpp
index c78ea537e..3b50e55d7 100644
--- a/apps/atoms/atom.cpp
+++ b/apps/atoms/atom.cpp
@@ -25,7 +25,7 @@
using namespace sirius;
-double const rmin{1e-5};
+double const rmin{1e-6};
class Free_atom : public sirius::Atom_type
{
diff --git a/apps/mini_app/CMakeLists.txt b/apps/mini_app/CMakeLists.txt
index 27d73b8e2..eb41b9c38 100644
--- a/apps/mini_app/CMakeLists.txt
+++ b/apps/mini_app/CMakeLists.txt
@@ -2,7 +2,7 @@ if(SIRIUS_USE_VCSQNM)
find_package (Eigen3 3.3 REQUIRED NO_MODULE)
endif()
add_executable(sirius.scf sirius.scf.cpp)
-target_link_libraries(sirius.scf PRIVATE sirius sirius::filesystem)
+target_link_libraries(sirius.scf PRIVATE sirius)
if(SIRIUS_USE_VCSQNM)
target_link_libraries (sirius.scf PRIVATE Eigen3::Eigen sirius)
endif()
diff --git a/apps/tests/CMakeLists.txt b/apps/tests/CMakeLists.txt
index 9cc5010ad..42878e5b9 100644
--- a/apps/tests/CMakeLists.txt
+++ b/apps/tests/CMakeLists.txt
@@ -4,7 +4,7 @@ test_mpi_grid;test_enu;test_eigen;test_gemm;test_gemm2;test_wf_inner;test_memop;
test_mem_pool;test_mem_alloc;test_examples;test_bcast_v2;test_p2p_cyclic;\
test_wf_ortho;test_mixer;test_davidson;test_lapw_xc;test_phase;test_bessel;test_fp;test_pppw_xc;\
test_exc_vxc;test_atomic_orbital_index;test_sym;test_blacs;test_reduce;test_comm_split;test_wf_trans;\
-test_wf_fft;test_potrf;test_lr_solver")
+test_wf_fft;test_potrf;test_lr_solver;test_radial_solver")
foreach(_test ${_tests})
add_executable(${_test} ${_test}.cpp)
diff --git a/apps/tests/test_enu.cpp b/apps/tests/test_enu.cpp
index 4d2a6ee07..8810e6356 100644
--- a/apps/tests/test_enu.cpp
+++ b/apps/tests/test_enu.cpp
@@ -1,52 +1,61 @@
-#include
+#include "sirius.hpp"
+#include "testing.hpp"
using namespace sirius;
-void
-test_enu(int zn__, int n__, int l__, double R__)
+int
+test_enu(cmd_args const& args__)
{
- auto rgrid = Radial_grid_factory(radial_grid_t::lin_exp, 1500, 1e-7, R__, 6.0);
+ auto rel = get_relativity_t(args__.value("rel", "none"));
+ auto zn = args__.value("zn", 1);
+ auto l = args__.value("l", 0);
+ auto n = args__.value("n", 1);
+ auto R = args__.value("R", 2.2);
+
+ auto rgrid = Radial_grid_factory(radial_grid_t::lin_exp, 1500, 1e-7, R, 6.0);
std::vector v(rgrid.num_points());
for (int ir = 0; ir < rgrid.num_points(); ir++) {
- v[ir] = -double(zn__) / rgrid[ir];
+ v[ir] = -double(zn) / rgrid[ir];
}
- Enu_finder e(relativity_t::none, zn__, n__, l__, rgrid, v, -0.1);
+ Enu_finder e(rel, zn, n, l, rgrid, v, -0.1);
- printf("Z: %i n: %i l: %i band energies (bottom, top, enu): %12.6f %12.6f %12.6f\n", zn__, n__, l__, e.ebot(),
- e.etop(), e.enu());
+ printf("Z: %i n: %i l: %i band energies (bottom, top, enu): %12.6f %12.6f %12.6f\n", zn, n, l, e.ebot(), e.etop(),
+ e.enu());
- Radial_solver solver(zn__, v, rgrid);
+ Radial_solver solver(zn, v, rgrid);
std::vector p1, p2, p3, rdudr;
std::array uderiv;
- solver.solve(relativity_t::none, 0, l__, e.ebot(), p1, rdudr, uderiv);
- solver.solve(relativity_t::none, 0, l__, e.etop(), p2, rdudr, uderiv);
- solver.solve(relativity_t::none, 0, l__, e.enu(), p3, rdudr, uderiv);
+ int dme{0};
+
+ solver.solve(rel, dme, l, e.ebot(), p1, rdudr, uderiv);
+ solver.solve(rel, dme, l, e.etop(), p2, rdudr, uderiv);
+ solver.solve(rel, dme, l, e.enu(), p3, rdudr, uderiv);
- // printf("uderiv: %12.6f %12.6f\n", uderiv[0], uderiv[1]);
+ printf("uderiv: %12.6f %12.6f\n", uderiv[0], uderiv[1]);
- // FILE* fout = fopen("radial_solution.dat", "w");
- // for (int i = 0; i < rgrid.num_points(); i++)
- //{
- // double x = rgrid[i];
- // fprintf(fout, "%18.12f %18.12f %18.12f %18.12f\n", x, p1[i] / x, p2[i] / x, p3[i] / x);
- // }
- // fclose(fout);
+ FILE* fout = fopen("radial_solution.dat", "w");
+ for (int i = 0; i < rgrid.num_points(); i++) {
+ double x = rgrid[i];
+ fprintf(fout, "%18.12f %18.12f %18.12f %18.12f\n", x, p1[i] / x, p2[i] / x, p3[i] / x);
+ }
+ fclose(fout);
+ return 0;
}
int
main(int argn, char** argv)
{
+ cmd_args args(argn, argv,
+ {{"rel=", "(string) type of scalar-relativistic equation"},
+ {"zn=", "(int) nuclear charge"},
+ {"l=", "(int) orbital quantum number"},
+ {"n=", "(int) principal quantum number"},
+ {"R=", "(double) muffin-tin radius"}});
+
sirius::initialize(1);
- for (int zn = 1; zn < 100; zn++) {
- #pragma omp parallel for
- for (int n = 1; n < 7; n++) {
- for (int l = 0; l < n; l++) {
- test_enu(zn, n, l, 1.5);
- }
- }
- }
+ call_test("test_enu", test_enu, args);
sirius::finalize();
}
diff --git a/apps/tests/test_lr_solver.cpp b/apps/tests/test_lr_solver.cpp
index 66335fb00..e0f1c2205 100644
--- a/apps/tests/test_lr_solver.cpp
+++ b/apps/tests/test_lr_solver.cpp
@@ -209,7 +209,7 @@ solve_lr(Simulation_context& ctx__, std::array vk__, Potential& pot__
Hamiltonian0 H0(pot__, true);
auto Hk = H0(kp);
/* initialize kp.spinor_wave_functions */
- sirius::initialize_subspace(Hk, kp, ctx__.unit_cell().num_ps_atomic_wf().first);
+ sirius::initialize_subspace>(Hk, kp, ctx__.unit_cell().num_ps_atomic_wf().first);
/* create auxiliary wave-functions */
auto dpsi = wave_function_factory(ctx__, kp, wf::num_bands(ctx__.num_bands()), wf::num_mag_dims(0), false);
diff --git a/apps/tests/test_radial_solver.cpp b/apps/tests/test_radial_solver.cpp
index ee26aa1c3..23be9715b 100644
--- a/apps/tests/test_radial_solver.cpp
+++ b/apps/tests/test_radial_solver.cpp
@@ -1,12 +1,18 @@
-#include
+#include "sirius.hpp"
+#include "testing.hpp"
using namespace sirius;
-void
-test_radial_solver()
+int
+test_radial_solver(cmd_args const& args__)
{
- Radial_grid_lin_exp rgrid(1500, 1e-7, 2.0);
- int zn{38};
+ auto rel = get_relativity_t(args__.value("rel", "none"));
+ auto zn = args__.value("zn", 1);
+ auto l = args__.value("l", 0);
+ auto dme = args__.value("dme", 0);
+ auto enu = args__.value("enu", -0.5);
+
+ Radial_grid_lin_exp rgrid(1500, 1e-7, 3.0);
std::vector v(rgrid.num_points());
for (int ir = 0; ir < rgrid.num_points(); ir++) {
v[ir] = -zn * rgrid.x_inv(ir);
@@ -15,10 +21,10 @@ test_radial_solver()
Radial_solver rsolver(zn, v, rgrid);
std::vector p, rdudr;
std::array uderiv;
- rsolver.solve(relativity_t::iora, 1, 2, -0.524233, p, rdudr, uderiv);
+ rsolver.solve(rel, dme, l, enu, p, rdudr, uderiv);
std::stringstream s;
- s << "radial_functions.dat";
+ s << "radial_functions_" << args__.value("rel", "none") << ".dat";
FILE* fout = fopen(s.str().c_str(), "w");
for (int ir = 0; ir < rgrid.num_points(); ir++) {
@@ -28,21 +34,21 @@ test_radial_solver()
fprintf(fout, "\n");
}
fclose(fout);
+
+ return 0;
}
int
main(int argn, char** argv)
{
- cmd_args args;
-
- args.parse_args(argn, argv);
- if (args.exist("help")) {
- printf("Usage: %s [options]\n", argv[0]);
- args.print_help();
- return 0;
- }
+ cmd_args args(argn, argv,
+ {{"rel=", "(string) type of scalar-relativistic equation"},
+ {"zn=", "(int) nuclear charge"},
+ {"l=", "(int) orbital quantum number"},
+ {"enu=", "(double) energy of the equation"},
+ {"dme=", "(int) energy derivative"}});
sirius::initialize(1);
- test_radial_solver();
+ call_test("test_radial_solver", test_radial_solver, args);
sirius::finalize();
}
diff --git a/ci/baseimage.cuda.Dockerfile b/ci/baseimage.cuda.Dockerfile
index cbed039a7..aa97159c4 100644
--- a/ci/baseimage.cuda.Dockerfile
+++ b/ci/baseimage.cuda.Dockerfile
@@ -27,7 +27,7 @@ RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cm
tar zxvf cmake.tar.gz --strip-components=1 -C /usr
# get latest version of spack
-RUN git clone https://github.com/spack/spack.git
+RUN git clone -b v0.21.0 https://github.com/spack/spack.git
# set the location of packages built by spack
RUN spack config add config:install_tree:root:/opt/local
@@ -50,11 +50,9 @@ RUN yq -i '.compilers[0].compiler.paths.f77 = "/usr/bin/gfortran"' /root/.spack/
yq -i '.compilers[1].compiler.paths.fc = "/usr/bin/gfortran"' /root/.spack/linux/compilers.yaml
# install MPICH
-RUN spack install --only=dependencies mpich@${MPICH_VERSION} %gcc
RUN spack install mpich@${MPICH_VERSION} %gcc
# install openmpi
-RUN spack install --only=dependencies openmpi %gcc
RUN spack install openmpi %gcc
# install libvdwxc
@@ -71,28 +69,48 @@ RUN spack install nlcglib@master %gcc +cuda
RUN echo $(spack find --format='{prefix.lib}' mpich) > /etc/ld.so.conf.d/mpich.conf
RUN ldconfig
-# install dependencies of several basic configurations
-
-RUN spack install --only=dependencies --fail-fast \
- "sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +cuda +scalapack ^mpich ^spfft+single_precision+cuda ^intel-oneapi-mkl+cluster ^umpire+cuda~device_alloc"
-
-RUN spack install --only=dependencies --fail-fast \
- "sirius@develop %gcc build_type=RelWithDebInfo +tests +apps +cuda +scalapack +elpa ^mpich ^intel-oneapi-mkl+cluster ^elpa+cuda ^spfft+single_precision+cuda ^umpire+cuda~device_alloc"
-
-RUN spack install --only=dependencies --fail-fast \
- "sirius@develop %gcc build_type=RelWithDebInfo +tests +apps +cuda +magma ^mpich ^openblas ^magma+cuda ^umpire+cuda~device_alloc"
-
-RUN spack install --only=dependencies --fail-fast \
- "sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +cuda +scalapack +single_precision ^mpich ^intel-oneapi-mkl+cluster ^umpire+cuda~device_alloc"
-
-RUN spack install --only=dependencies --fail-fast \
- "sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +cuda +scalapack +vdwxc ^mpich ^openblas ^umpire+cuda~device_alloc"
-
-RUN spack install --only=dependencies --fail-fast \
- "sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +vdwxc +cuda +nlcglib ^openblas ^mpich ^nlcglib +cuda ^umpire+cuda~device_alloc"
-
-RUN spack install --only=dependencies --fail-fast \
- "sirius@develop %gcc +tests +apps +scalapack +fortran build_type=RelWithDebInfo ^openblas ^openmpi ^umpire~cuda~device_alloc"
-
-RUN spack install --only=dependencies --fail-fast \
- "sirius@develop %clang build_type=RelWithDebInfo ~fortran +tests ^openblas%gcc ^libxc%gcc ^mpich%gcc ^umpire~cuda~device_alloc"
\ No newline at end of file
+# create environments for several configurations and install dependencies
+RUN spack env create -d /sirius-env-clang && \
+ spack -e /sirius-env-clang add "sirius@develop %clang build_type=RelWithDebInfo ~cuda ~fortran +tests ^openblas%gcc ^libxc%gcc ^mpich%gcc " && \
+ spack -e /sirius-env-clang develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-clang install --only=dependencies --fail-fast
+
+RUN spack env create -d /sirius-env-cuda && \
+ spack -e /sirius-env-cuda add "sirius@develop %gcc build_type=RelWithDebInfo +scalapack +tests +apps +cuda +magma ^netlib-scalapack ^mpich ^openblas threads=openmp" && \
+ spack -e /sirius-env-cuda develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-cuda install --only=dependencies --fail-fast
+
+RUN spack env create -d /sirius-env-cuda-mkl-mpich && \
+ spack -e /sirius-env-cuda-mkl-mpich add "sirius@develop %gcc build_type=RelWithDebInfo +tests +apps +cuda +scalapack +magma ^mpich ^intel-oneapi-mkl+cluster" && \
+ spack -e /sirius-env-cuda-mkl-mpich develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-cuda-mkl-mpich install --only=dependencies --fail-fast
+
+RUN spack env create -d /sirius-env-elpa && \
+ spack -e /sirius-env-elpa add "sirius@develop %gcc build_type=RelWithDebInfo +tests +apps +cuda +scalapack +elpa ^netlib-scalapack ^mpich ^openblas ^elpa+cuda" && \
+ spack -e /sirius-env-elpa develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-elpa install --only=dependencies --fail-fast
+
+RUN spack env create -d /sirius-env-fp32 && \
+ spack -e /sirius-env-fp32 add "sirius@develop %gcc build_type=RelWithDebInfo +tests +apps +cuda ^mpich ^openblas ^elpa+cuda ^spfft+single_precision+cuda" && \
+ spack -e /sirius-env-fp32 develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-fp32 install --only=dependencies --fail-fast
+
+RUN spack env create -d /sirius-env-nlcg && \
+ spack -e /sirius-env-nlcg add "sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +cuda +nlcglib ^openblas ^mpich" && \
+ spack -e /sirius-env-nlcg develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-nlcg install --only=dependencies --fail-fast
+
+RUN spack env create -d /sirius-env-openmpi && \
+ spack -e /sirius-env-openmpi add "sirius@develop %gcc +tests +apps +scalapack +fortran build_type=RelWithDebInfo ^netlib-scalapack ^openblas ^openmpi" && \
+ spack -e /sirius-env-openmpi develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-openmpi install --only=dependencies --fail-fast
+
+RUN spack env create -d /sirius-env-cuda-sequential && \
+ spack -e /sirius-env-cuda-sequential add "sirius@develop %gcc +cuda +tests +apps +fortran build_type=RelWithDebInfo ^openblas ^openmpi" && \
+ spack -e /sirius-env-cuda-sequential develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-cuda-sequential install --only=dependencies --fail-fast
+
+RUN spack env create -d /sirius-env-vdwxc-cuda && \
+ spack -e /sirius-env-vdwxc-cuda add "sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +vdwxc +cuda +nlcglib ^openblas ^mpich +cuda" && \
+ spack -e /sirius-env-vdwxc-cuda develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-vdwxc-cuda install --only=dependencies --fail-fast
diff --git a/ci/baseimage.rocm.Dockerfile b/ci/baseimage.rocm.Dockerfile
index 2f243489a..7ca36a7bf 100644
--- a/ci/baseimage.rocm.Dockerfile
+++ b/ci/baseimage.rocm.Dockerfile
@@ -23,7 +23,7 @@ RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cm
tar zxvf cmake.tar.gz --strip-components=1 -C /usr
# get latest version of spack
-RUN git clone https://github.com/spack/spack.git
+RUN git clone -b v0.21.0 https://github.com/spack/spack.git
# set the location of packages built by spack
RUN spack config add config:install_tree:root:/opt/local
@@ -34,7 +34,9 @@ RUN spack config add packages:all:target:x86_64
# find gcc and clang compilers
RUN spack compiler find
-RUN spack external find --all
+RUN spack external find --all --exclude ncurses
+# workaround hip wants to call /usr/bin/llvm-config, but ubuntu renamed it to /usr/bin/llvm-config-14
+RUN ln -s /usr/bin/llvm-config-14 /usr/bin/llvm-config
# install big packages
RUN spack install --fail-fast hip%gcc
@@ -42,8 +44,7 @@ RUN spack install --fail-fast rocblas%gcc
RUN spack install --fail-fast rocsolver%gcc
RUN spack install --fail-fast hipfft%gcc
-ENV SPEC="sirius@develop %gcc build_type=Release +scalapack +fortran +tests +rocm ^openblas ^mpich ^spfft ^umpire+rocm~device_alloc"
-
-RUN spack spec $SPEC
-
-RUN spack install --fail-fast --only=dependencies $SPEC
\ No newline at end of file
+RUN spack env create -d /sirius-env-rocm && \
+ spack -e /sirius-env-rocm add "sirius@develop %gcc build_type=Release +scalapack +fortran +tests +rocm ^openblas ^mpich ^spfft ^umpire+rocm~device_alloc" && \
+ spack -e /sirius-env-rocm develop -p /sirius-src sirius@develop && \
+ spack -e /sirius-env-rocm install --only=dependencies --fail-fast
diff --git a/ci/build.Dockerfile b/ci/build.Dockerfile
index 453c17e15..9d9e02bc4 100644
--- a/ci/build.Dockerfile
+++ b/ci/build.Dockerfile
@@ -1,20 +1,17 @@
ARG BASE_IMAGE
FROM $BASE_IMAGE
-ARG SPECDEV
-
-# show the spack's spec
-RUN spack spec -I $SPECDEV
-
-RUN spack env create --with-view /opt/sirius sirius-env
-RUN spack -e sirius-env add $SPECDEV
+ARG ENVPATH
# copy source files of the pull request into container
COPY . /sirius-src
# build SIRIUS
-RUN spack --color always -e sirius-env dev-build --source-path /sirius-src $SPECDEV
+RUN spack -e $ENVPATH install
+
+# # show the spack's spec
+RUN spack -e $ENVPATH find -lcdv sirius
# we need a fixed name for the build directory
# here is a hacky workaround to link ./spack-build-{hash} to ./spack-build
-RUN cd /sirius-src && ln -s $(find . -name "spack-build-*" -type d) spack-build
+RUN cd /sirius-src && ln -s $(spack -e $ENVPATH location -b sirius) spack-build
diff --git a/ci/cscs-daint.yml b/ci/cscs-daint.yml
index a9500c30a..3ef40c4b6 100644
--- a/ci/cscs-daint.yml
+++ b/ci/cscs-daint.yml
@@ -27,15 +27,26 @@ build base rocm image:
PERSIST_IMAGE_NAME: $CSCS_REGISTRY_PATH/base/sirius-ci
DOCKER_BUILD_ARGS: '["ROCM_ARCH=gfx90a"]'
+build cuda image mkl:
+ extends: .container-builder
+ needs: ["build base cuda image"]
+ stage: build
+ variables:
+ DOCKERFILE: ci/build.Dockerfile
+ PERSIST_IMAGE_NAME: discard
+ ENVPATH: "/sirius-env-cuda-mkl-mpich"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
+
build cuda image:
extends: .container-builder
needs: ["build base cuda image"]
stage: build
variables:
+ CSCS_REBUILD_POLICY: always
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: $CSCS_REGISTRY_PATH/sirius/sirius-ci:$CI_COMMIT_SHA
- SPEC: 'sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +cuda +scalapack ^mpich ^spfft+single_precision+cuda ^intel-oneapi-mkl+cluster ^umpire+cuda~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-cuda"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
build rocm image:
extends: .container-builder
@@ -44,8 +55,8 @@ build rocm image:
variables:
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: discard
- SPEC: 'sirius@develop %gcc build_type=RelWithDebInfo ~fortran+tests +apps +rocm +scalapack ^mpich ^openblas ^umpire+rocm~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-rocm"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
build elpa cuda image:
extends: .container-builder
@@ -54,8 +65,8 @@ build elpa cuda image:
variables:
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: discard
- SPEC: 'sirius@develop %gcc build_type=RelWithDebInfo +tests +apps +cuda +scalapack +elpa ^mpich ^intel-oneapi-mkl+cluster ^elpa+cuda ^spfft+single_precision+cuda ^umpire+cuda~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-elpa"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
build sequential eigen-solver cuda image:
extends: .container-builder
@@ -64,8 +75,8 @@ build sequential eigen-solver cuda image:
variables:
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: discard
- SPEC: 'sirius@develop %gcc build_type=RelWithDebInfo +tests +apps +cuda +magma ^mpich ^openblas ^magma+cuda ^umpire+cuda~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-cuda-sequential"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
build fp32 cuda image:
extends: .container-builder
@@ -74,8 +85,8 @@ build fp32 cuda image:
variables:
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: discard
- SPEC: 'sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +cuda +scalapack +single_precision ^mpich ^intel-oneapi-mkl+cluster ^umpire+cuda~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-fp32"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
build vdwxc cuda image:
extends: .container-builder
@@ -85,8 +96,8 @@ build vdwxc cuda image:
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: discard
# we can't use MKL here because vdwxc needs parallel FFT and MKL doesn't provide it
- SPEC: 'sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +cuda +scalapack +vdwxc ^mpich ^openblas ^umpire+cuda~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-vdwxc-cuda"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
build nlcg image:
extends: .container-builder
@@ -95,8 +106,8 @@ build nlcg image:
variables:
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: discard
- SPEC: 'sirius@develop %gcc build_type=RelWithDebInfo +fortran +tests +apps +vdwxc +cuda +nlcglib ^openblas ^mpich ^nlcglib +cuda ^umpire+cuda~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-nlcg"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
build clang image:
extends: .container-builder
@@ -106,8 +117,8 @@ build clang image:
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: discard
# reuse openblas, libxc and spfft from gcc build
- SPEC: 'sirius@develop %clang build_type=RelWithDebInfo ~fortran +tests ^openblas%gcc ^libxc%gcc ^mpich%gcc ^umpire~cuda~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-nlcg"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
build openmpi image:
extends: .container-builder
@@ -116,8 +127,8 @@ build openmpi image:
variables:
DOCKERFILE: ci/build.Dockerfile
PERSIST_IMAGE_NAME: discard
- SPEC: 'sirius@develop %gcc +tests +apps +scalapack +fortran build_type=RelWithDebInfo ^openblas ^openmpi ^umpire~cuda~device_alloc'
- DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "SPECDEV=$SPEC"]'
+ ENVPATH: "/sirius-env-openmpi"
+ DOCKER_BUILD_ARGS: '["BASE_IMAGE=${BASE_IMAGE}", "ENVPATH=$ENVPATH"]'
.run_tests:
extends: .container-runner-daint-gpu
@@ -150,7 +161,7 @@ gpu serial:
SLURM_CONSTRAINT: gpu
SLURM_CPUS_PER_TASK: 12
SLURM_NTASKS: 1
- SLURM_TIMELIMIT: "30:00"
+ SLURM_TIMELIMIT: "60:00"
TEST_COMMAND: ctest -L gpu_serial
gpu band parallel:
@@ -160,8 +171,8 @@ gpu band parallel:
SLURM_CONSTRAINT: gpu
SLURM_CPUS_PER_TASK: 3
SLURM_NTASKS: 4
- SLURM_TIMELIMIT: "30:00"
- TEST_COMMAND: ctest -L gpu_band_parallel
+ SLURM_TIMELIMIT: "60:00"
+ TEST_COMMAND: ctest -L gpu_band_parallel --timeout 3600
USE_MPI: 'YES'
gpu k-point parallel:
@@ -183,7 +194,7 @@ cpu single:
SLURM_CPU_BIND: sockets
SLURM_CPUS_PER_TASK: 12
SLURM_NTASKS: 1
- SLURM_TIMELIMIT: "30:00"
+ SLURM_TIMELIMIT: "60:00"
TEST_COMMAND: ctest -L cpu_serial
cpu band parallel:
@@ -194,6 +205,6 @@ cpu band parallel:
SLURM_CPU_BIND: sockets
SLURM_CPUS_PER_TASK: 3
SLURM_NTASKS: 4
- SLURM_TIMELIMIT: "30:00"
- TEST_COMMAND: ctest -L cpu_band_parallel
+ SLURM_TIMELIMIT: "60:00"
+ TEST_COMMAND: ctest -L cpu_band_parallel --timeout 3600
USE_MPI: 'YES'
diff --git a/cmake/modules/FindFilesystem.cmake b/cmake/modules/FindFilesystem.cmake
deleted file mode 100644
index c71493169..000000000
--- a/cmake/modules/FindFilesystem.cmake
+++ /dev/null
@@ -1,250 +0,0 @@
-# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
-# file Copyright.txt or https://cmake.org/licensing for details.
-
-#[=======================================================================[.rst:
-
-FindFilesystem
-##############
-
-This module supports the C++17 standard library's filesystem utilities. Use the
-:imp-target:`std::filesystem` imported target to
-
-Options
-*******
-
-The ``COMPONENTS`` argument to this module supports the following values:
-
-.. find-component:: Experimental
- :name: fs.Experimental
-
- Allows the module to find the "experimental" Filesystem TS version of the
- Filesystem library. This is the library that should be used with the
- ``std::experimental::filesystem`` namespace.
-
-.. find-component:: Final
- :name: fs.Final
-
- Finds the final C++17 standard version of the filesystem library.
-
-If no components are provided, behaves as if the
-:find-component:`fs.Final` component was specified.
-
-If both :find-component:`fs.Experimental` and :find-component:`fs.Final` are
-provided, first looks for ``Final``, and falls back to ``Experimental`` in case
-of failure. If ``Final`` is found, :imp-target:`std::filesystem` and all
-:ref:`variables ` will refer to the ``Final`` version.
-
-
-Imported Targets
-****************
-
-.. imp-target:: std::filesystem
-
- The ``std::filesystem`` imported target is defined when any requested
- version of the C++ filesystem library has been found, whether it is
- *Experimental* or *Final*.
-
- If no version of the filesystem library is available, this target will not
- be defined.
-
- .. note::
- This target has ``cxx_std_17`` as an ``INTERFACE``
- :ref:`compile language standard feature `. Linking
- to this target will automatically enable C++17 if no later standard
- version is already required on the linking target.
-
-
-.. _fs.variables:
-
-Variables
-*********
-
-.. variable:: CXX_FILESYSTEM_IS_EXPERIMENTAL
-
- Set to ``TRUE`` when the :find-component:`fs.Experimental` version of C++
- filesystem library was found, otherwise ``FALSE``.
-
-.. variable:: CXX_FILESYSTEM_HAVE_FS
-
- Set to ``TRUE`` when a filesystem header was found.
-
-.. variable:: CXX_FILESYSTEM_HEADER
-
- Set to either ``filesystem`` or ``experimental/filesystem`` depending on
- whether :find-component:`fs.Final` or :find-component:`fs.Experimental` was
- found.
-
-.. variable:: CXX_FILESYSTEM_NAMESPACE
-
- Set to either ``std::filesystem`` or ``std::experimental::filesystem``
- depending on whether :find-component:`fs.Final` or
- :find-component:`fs.Experimental` was found.
-
-
-Examples
-********
-
-Using `find_package(Filesystem)` with no component arguments:
-
-.. code-block:: cmake
-
- find_package(Filesystem REQUIRED)
-
- add_executable(my-program main.cpp)
- target_link_libraries(my-program PRIVATE std::filesystem)
-
-
-#]=======================================================================]
-
-
-if(TARGET std::filesystem)
- # This module has already been processed. Don't do it again.
- return()
-endif()
-
-cmake_minimum_required(VERSION 3.10)
-
-include(CMakePushCheckState)
-include(CheckIncludeFileCXX)
-
-# If we're not cross-compiling, try to run test executables.
-# Otherwise, assume that compile + link is a sufficient check.
-if(CMAKE_CROSSCOMPILING)
- include(CheckCXXSourceCompiles)
- macro(_cmcm_check_cxx_source code var)
- check_cxx_source_compiles("${code}" ${var})
- endmacro()
-else()
- include(CheckCXXSourceRuns)
- macro(_cmcm_check_cxx_source code var)
- check_cxx_source_runs("${code}" ${var})
- endmacro()
-endif()
-
-cmake_push_check_state()
-
-set(CMAKE_REQUIRED_QUIET ${Filesystem_FIND_QUIETLY})
-
-# All of our tests required C++17 or later
-set(_SAVE_CMAKE_CXX_STANDARD ${CMAKE_CXX_STANDARD})
-set(CMAKE_CXX_STANDARD 17)
-
-# Normalize and check the component list we were given
-set(want_components ${Filesystem_FIND_COMPONENTS})
-if(Filesystem_FIND_COMPONENTS STREQUAL "")
- set(want_components Final)
-endif()
-
-# Warn on any unrecognized components
-set(extra_components ${want_components})
-list(REMOVE_ITEM extra_components Final Experimental)
-foreach(component IN LISTS extra_components)
- message(WARNING "Extraneous find_package component for Filesystem: ${component}")
-endforeach()
-
-# Detect which of Experimental and Final we should look for
-set(find_experimental TRUE)
-set(find_final TRUE)
-if(NOT "Final" IN_LIST want_components)
- set(find_final FALSE)
-endif()
-if(NOT "Experimental" IN_LIST want_components)
- set(find_experimental FALSE)
-endif()
-
-if(find_final)
- check_include_file_cxx("filesystem" _CXX_FILESYSTEM_HAVE_HEADER)
- mark_as_advanced(_CXX_FILESYSTEM_HAVE_HEADER)
- if(_CXX_FILESYSTEM_HAVE_HEADER)
- # We found the non-experimental header. Don't bother looking for the
- # experimental one.
- set(find_experimental FALSE)
- endif()
-else()
- set(_CXX_FILESYSTEM_HAVE_HEADER FALSE)
-endif()
-
-if(find_experimental)
- check_include_file_cxx("experimental/filesystem" _CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER)
- mark_as_advanced(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER)
-else()
- set(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER FALSE)
-endif()
-
-if(_CXX_FILESYSTEM_HAVE_HEADER)
- set(_have_fs TRUE)
- set(_fs_header filesystem)
- set(_fs_namespace std::filesystem)
- set(_is_experimental FALSE)
-elseif(_CXX_FILESYSTEM_HAVE_EXPERIMENTAL_HEADER)
- set(_have_fs TRUE)
- set(_fs_header experimental/filesystem)
- set(_fs_namespace std::experimental::filesystem)
- set(_is_experimental TRUE)
-else()
- set(_have_fs FALSE)
-endif()
-
-set(CXX_FILESYSTEM_HAVE_FS ${_have_fs} CACHE BOOL "TRUE if we have the C++ filesystem headers")
-set(CXX_FILESYSTEM_HEADER ${_fs_header} CACHE STRING "The header that should be included to obtain the filesystem APIs")
-set(CXX_FILESYSTEM_NAMESPACE ${_fs_namespace} CACHE STRING "The C++ namespace that contains the filesystem APIs")
-set(CXX_FILESYSTEM_IS_EXPERIMENTAL ${_is_experimental} CACHE BOOL "TRUE if the C++ filesystem library is the experimental version")
-
-set(_found FALSE)
-
-if(CXX_FILESYSTEM_HAVE_FS)
- # We have some filesystem library available. Do link checks
- string(CONFIGURE [[
- #include
- #include <@CXX_FILESYSTEM_HEADER@>
-
- int main() {
- auto cwd = @CXX_FILESYSTEM_NAMESPACE@::current_path();
- printf("%s", cwd.c_str());
- return EXIT_SUCCESS;
- }
- ]] code @ONLY)
-
- # Check a simple filesystem program without any linker flags
- _cmcm_check_cxx_source("${code}" CXX_FILESYSTEM_NO_LINK_NEEDED)
-
- set(can_link ${CXX_FILESYSTEM_NO_LINK_NEEDED})
-
- if(NOT CXX_FILESYSTEM_NO_LINK_NEEDED)
- set(prev_libraries ${CMAKE_REQUIRED_LIBRARIES})
- # Add the libstdc++ flag
- set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lstdc++fs)
- _cmcm_check_cxx_source("${code}" CXX_FILESYSTEM_STDCPPFS_NEEDED)
- set(can_link ${CXX_FILESYSTEM_STDCPPFS_NEEDED})
- if(NOT CXX_FILESYSTEM_STDCPPFS_NEEDED)
- # Try the libc++ flag
- set(CMAKE_REQUIRED_LIBRARIES ${prev_libraries} -lc++fs)
- _cmcm_check_cxx_source("${code}" CXX_FILESYSTEM_CPPFS_NEEDED)
- set(can_link ${CXX_FILESYSTEM_CPPFS_NEEDED})
- endif()
- endif()
-
- if(can_link)
- add_library(std::filesystem INTERFACE IMPORTED)
- set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_COMPILE_FEATURES cxx_std_17)
- set(_found TRUE)
-
- if(CXX_FILESYSTEM_NO_LINK_NEEDED)
- # Nothing to add...
- elseif(CXX_FILESYSTEM_STDCPPFS_NEEDED)
- set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_LINK_LIBRARIES -lstdc++fs)
- elseif(CXX_FILESYSTEM_CPPFS_NEEDED)
- set_property(TARGET std::filesystem APPEND PROPERTY INTERFACE_LINK_LIBRARIES -lc++fs)
- endif()
- endif()
-endif()
-
-cmake_pop_check_state()
-
-set(Filesystem_FOUND ${_found} CACHE BOOL "TRUE if we can run a program using std::filesystem" FORCE)
-
-if(Filesystem_FIND_REQUIRED AND NOT Filesystem_FOUND)
- message(FATAL_ERROR "Cannot run simple program using std::filesystem")
-endif()
-
-set(CMAKE_CXX_STANDARD ${_SAVE_CMAKE_CXX_STANDARD})
diff --git a/doc/doxygen.cfg b/doc/doxygen.cfg
index ecb81b1c7..1699418c3 100644
--- a/doc/doxygen.cfg
+++ b/doc/doxygen.cfg
@@ -39,7 +39,7 @@ PROJECT_NAME = "SIRIUS"
# control system is used.
-PROJECT_NUMBER = "7.5.0"
+PROJECT_NUMBER = "7.5.1"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/spack/packages/sirius/fj.patch b/spack/packages/sirius/fj.patch
new file mode 100644
index 000000000..567ced347
--- /dev/null
+++ b/spack/packages/sirius/fj.patch
@@ -0,0 +1,13 @@
+diff --git a/src/hamiltonian/hamiltonian.cpp b/src/hamiltonian/hamiltonian.cpp
+index 54a91df..ea66ecf 100644
+--- a/src/hamiltonian/hamiltonian.cpp
++++ b/src/hamiltonian/hamiltonian.cpp
+@@ -74,7 +74,7 @@ Hamiltonian0::Hamiltonian0(Potential& potential__, bool precompute_lapw__)
+ for (int j1 = 0; j1 <= j2; j1++) {
+ int lm1 = type.indexb(j1).lm;
+ int idxrf1 = type.indexb(j1).idxrf;
+- hmt_[ia](j1, j2) = atom.radial_integrals_sum_L3(idxrf1, idxrf2,
++ hmt_[ia](j1, j2) = atom.template radial_integrals_sum_L3(idxrf1, idxrf2,
+ type.gaunt_coefs().gaunt_vector(lm1, lm2));
+ hmt_[ia](j2, j1) = std::conj(hmt_[ia](j1, j2));
+ }
diff --git a/spack/packages/sirius/package.py b/spack/packages/sirius/package.py
index 0e1e6203f..e6da96a84 100644
--- a/spack/packages/sirius/package.py
+++ b/spack/packages/sirius/package.py
@@ -21,6 +21,7 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage):
version("develop", branch="develop")
version("master", branch="master")
+ version("7.5.0", sha256="c583f88ffc02e9acac24e786bc35c7c32066882d2f70a1e0c14b5780b510365d")
version("7.4.3", sha256="015679a60a39fa750c5d1bd8fb1ce73945524bef561270d8a171ea2fd4687fec")
version("7.4.0", sha256="f9360a695a1e786d8cb9d6702c82dd95144a530c4fa7e8115791c7d1e92b020b")
version("7.3.2", sha256="a256508de6b344345c295ad8642dbb260c4753cd87cc3dd192605c33542955d7")
@@ -83,7 +84,7 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage):
variant("python", default=False, description="Build Python bindings")
variant("memory_pool", default=True, description="Build with memory pool")
variant("elpa", default=False, description="Use ELPA")
- variant("dlaf", default=False, when="@develop", description="Use DLA-Future")
+ variant("dlaf", default=False, when="@7.5.0:", description="Use DLA-Future")
variant("vdwxc", default=False, description="Enable libvdwxc support")
variant("scalapack", default=False, description="Enable scalapack support")
variant("magma", default=False, description="Enable MAGMA support")
@@ -101,9 +102,7 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage):
variant(
"profiler", default=True, description="Use internal profiler to measure execution time"
)
- variant(
- "nvtx", default=False, description="Use NVTX profiler"
- )
+ variant("nvtx", default=False, description="Use NVTX profiler")
depends_on("cmake@3.23:", type="build")
depends_on("mpi")
@@ -188,6 +187,7 @@ class Sirius(CMakePackage, CudaPackage, ROCmPackage):
depends_on("umpire+rocm~device_alloc", when="+rocm")
patch("mpi_datatypes.patch", when="@:7.2.6")
+ patch("fj.patch", when="@7.3.2: %fj")
def cmake_args(self):
spec = self.spec
diff --git a/src/api/sirius.f90 b/src/api/sirius.f90
index e9a010adb..f1e38a727 100644
--- a/src/api/sirius.f90
+++ b/src/api/sirius.f90
@@ -6059,6 +6059,107 @@ subroutine sirius_linear_solver_aux(handler,vkq,num_gvec_kq_loc,gvec_kq_loc,dpsi
&nbnd_occ_ptr,tol_ptr,niter_ptr,error_code_ptr)
end subroutine sirius_linear_solver
+!
+!> @brief Generate augmentation charge in case of complex density (linear response)
+!> @param [in] handler DFT ground state handler.
+!> @param [in] iat Index of atom type.
+!> @param [in] num_atoms Total number of atoms.
+!> @param [in] num_gvec_loc Local number of G-vectors
+!> @param [in] num_spin_comp Number of spin components.
+!> @param [in] qpw Augmentation operator for a givem atom type.
+!> @param [in] ld1 Leading dimension of qpw array.
+!> @param [in] phase_factors_q Phase factors exp(i*q*r_alpha)
+!> @param [in] mill Miller indices (G-vectors in lattice coordinates)
+!> @param [in] dens_mtrx Density matrix
+!> @param [in] ld Leading dimension of density matrix.
+!> @param [inout] rho_aug Resulting augmentation charge.
+!> @param [out] error_code Error code
+subroutine sirius_generate_rhoaug_q(handler,iat,num_atoms,num_gvec_loc,num_spin_comp,&
+&qpw,ld1,phase_factors_q,mill,dens_mtrx,ld,rho_aug,error_code)
+implicit none
+!
+type(sirius_ground_state_handler), target, intent(in) :: handler
+integer, target, intent(in) :: iat
+integer, target, intent(in) :: num_atoms
+integer, target, intent(in) :: num_gvec_loc
+integer, target, intent(in) :: num_spin_comp
+complex(8), target, intent(in) :: qpw(ld1, num_gvec_loc)
+integer, target, intent(in) :: ld1
+complex(8), target, intent(in) :: phase_factors_q(num_atoms)
+integer, target, intent(in) :: mill(3, num_gvec_loc)
+complex(8), target, intent(in) :: dens_mtrx(ld, num_atoms, num_spin_comp)
+integer, target, intent(in) :: ld
+complex(8), target, intent(inout) :: rho_aug(num_gvec_loc, num_spin_comp)
+integer, optional, target, intent(out) :: error_code
+!
+type(C_PTR) :: handler_ptr
+type(C_PTR) :: iat_ptr
+type(C_PTR) :: num_atoms_ptr
+type(C_PTR) :: num_gvec_loc_ptr
+type(C_PTR) :: num_spin_comp_ptr
+type(C_PTR) :: qpw_ptr
+type(C_PTR) :: ld1_ptr
+type(C_PTR) :: phase_factors_q_ptr
+type(C_PTR) :: mill_ptr
+type(C_PTR) :: dens_mtrx_ptr
+type(C_PTR) :: ld_ptr
+type(C_PTR) :: rho_aug_ptr
+type(C_PTR) :: error_code_ptr
+!
+interface
+subroutine sirius_generate_rhoaug_q_aux(handler,iat,num_atoms,num_gvec_loc,num_spin_comp,&
+&qpw,ld1,phase_factors_q,mill,dens_mtrx,ld,rho_aug,error_code)&
+&bind(C, name="sirius_generate_rhoaug_q")
+use, intrinsic :: ISO_C_BINDING
+type(C_PTR), value :: handler
+type(C_PTR), value :: iat
+type(C_PTR), value :: num_atoms
+type(C_PTR), value :: num_gvec_loc
+type(C_PTR), value :: num_spin_comp
+type(C_PTR), value :: qpw
+type(C_PTR), value :: ld1
+type(C_PTR), value :: phase_factors_q
+type(C_PTR), value :: mill
+type(C_PTR), value :: dens_mtrx
+type(C_PTR), value :: ld
+type(C_PTR), value :: rho_aug
+type(C_PTR), value :: error_code
+end subroutine
+end interface
+!
+handler_ptr = C_NULL_PTR
+handler_ptr = C_LOC(handler%handler_ptr_)
+iat_ptr = C_NULL_PTR
+iat_ptr = C_LOC(iat)
+num_atoms_ptr = C_NULL_PTR
+num_atoms_ptr = C_LOC(num_atoms)
+num_gvec_loc_ptr = C_NULL_PTR
+num_gvec_loc_ptr = C_LOC(num_gvec_loc)
+num_spin_comp_ptr = C_NULL_PTR
+num_spin_comp_ptr = C_LOC(num_spin_comp)
+qpw_ptr = C_NULL_PTR
+qpw_ptr = C_LOC(qpw)
+ld1_ptr = C_NULL_PTR
+ld1_ptr = C_LOC(ld1)
+phase_factors_q_ptr = C_NULL_PTR
+phase_factors_q_ptr = C_LOC(phase_factors_q)
+mill_ptr = C_NULL_PTR
+mill_ptr = C_LOC(mill)
+dens_mtrx_ptr = C_NULL_PTR
+dens_mtrx_ptr = C_LOC(dens_mtrx)
+ld_ptr = C_NULL_PTR
+ld_ptr = C_LOC(ld)
+rho_aug_ptr = C_NULL_PTR
+rho_aug_ptr = C_LOC(rho_aug)
+error_code_ptr = C_NULL_PTR
+if (present(error_code)) then
+error_code_ptr = C_LOC(error_code)
+endif
+call sirius_generate_rhoaug_q_aux(handler_ptr,iat_ptr,num_atoms_ptr,num_gvec_loc_ptr,&
+&num_spin_comp_ptr,qpw_ptr,ld1_ptr,phase_factors_q_ptr,mill_ptr,dens_mtrx_ptr,ld_ptr,&
+&rho_aug_ptr,error_code_ptr)
+end subroutine sirius_generate_rhoaug_q
+
!
!> @brief Generate D-operator matrix.
!> @param [in] handler Ground state handler.
diff --git a/src/api/sirius_api.cpp b/src/api/sirius_api.cpp
index c3b1f4aff..69f2224ab 100644
--- a/src/api/sirius_api.cpp
+++ b/src/api/sirius_api.cpp
@@ -6251,6 +6251,132 @@ sirius_linear_solver(void* const* handler__, double const* vkq__, int const* num
error_code__);
}
+/*
+@api begin
+sirius_generate_rhoaug_q:
+ doc: Generate augmentation charge in case of complex density (linear response)
+ arguments:
+ handler:
+ type: gs_handler
+ attr: in, required
+ doc: DFT ground state handler.
+ iat:
+ type: int
+ attr: in, required
+ doc: Index of atom type.
+ num_atoms:
+ type: int
+ attr: in, required
+ doc: Total number of atoms.
+ num_gvec_loc:
+ type: int
+ attr: in, required
+ doc: Local number of G-vectors
+ num_spin_comp:
+ type: int
+ attr: in, required
+ doc: Number of spin components.
+ qpw:
+ type: complex
+ attr: in, required, dimension(ldq, num_gvec_loc)
+ doc: Augmentation operator for a givem atom type.
+ ldq:
+ type: int
+ attr: in, required
+ doc: Leading dimension of qpw array.
+ phase_factors_q:
+ type: complex
+ attr: in, required, dimension(num_atoms)
+ doc: Phase factors exp(i*q*r_alpha)
+ mill:
+ type: int
+ attr: in, required, dimension(3, num_gvec_loc)
+ doc: Miller indices (G-vectors in lattice coordinates)
+ dens_mtrx:
+ type: complex
+ attr: in, required, dimension(ld, num_atoms, num_spin_comp)
+ doc: Density matrix
+ ldd:
+ type: int
+ attr: in, required
+ doc: Leading dimension of density matrix.
+ rho_aug:
+ type: complex
+ attr: inout, required, dimension(num_gvec_loc, num_spin_comp)
+ doc: Resulting augmentation charge.
+ error_code:
+ type: int
+ attr: out, optional
+ doc: Error code
+@api end
+*/
+void
+sirius_generate_rhoaug_q(void* const* handler__, int const* iat__, int const* num_atoms__, int const* num_gvec_loc__,
+ int const* num_spin_comp__, std::complex const* qpw__, int const* ldq__,
+ std::complex const* phase_factors_q__, int const* mill__,
+ std::complex const* dens_mtrx__, int const* ldd__, std::complex* rho_aug__,
+ int* error_code__)
+{
+ using namespace sirius;
+ PROFILE("sirius_api::sirius_generate_rhoaug_q");
+ call_sirius(
+ [&]() {
+ auto& gs = get_gs(handler__);
+ auto& sctx = gs.ctx();
+ /* index of atom type */
+ int iat = *iat__ - 1;
+ int num_beta = sctx.unit_cell().atom_type(iat).mt_basis_size();
+ int num_gvec_loc = *num_gvec_loc__;
+ int num_spin_comp = *num_spin_comp__;
+
+ mdarray, 2> qpw({*ldq__, num_gvec_loc}, const_cast*>(qpw__));
+ mdarray mill({3, num_gvec_loc}, const_cast(mill__));
+ mdarray, 3> dens_mtrx({*ldd__, *num_atoms__, num_spin_comp},
+ const_cast*>(dens_mtrx__));
+ mdarray, 2> rho_aug({num_gvec_loc, num_spin_comp}, rho_aug__);
+
+ /* density matrix for all atoms of a given type */
+ mdarray, 2> tmp2(
+ {num_beta * (num_beta + 1) / 2, sctx.unit_cell().atom_type(iat).num_atoms()},
+ get_memory_pool(memory_t::host));
+
+ mdarray, 2> tmp1({sctx.unit_cell().atom_type(iat).num_atoms(), num_gvec_loc},
+ get_memory_pool(memory_t::host));
+ for (int is = 0; is < num_spin_comp; is++) {
+ PROFILE_START("sirius_generate_rhoaug_q:tmp2")
+ for (int i = 0; i < sctx.unit_cell().atom_type(iat).num_atoms(); i++) {
+ int ia = sctx.unit_cell().atom_type(iat).atom_id(i);
+ for (int j = 0; j < num_beta * (num_beta + 1) / 2; j++) {
+ tmp2(j, i) = dens_mtrx(j, ia, is);
+ }
+ }
+ PROFILE_STOP("sirius_generate_rhoaug_q:tmp2")
+
+ PROFILE_START("sirius_generate_rhoaug_q:gemm")
+ la::wrap(la::lib_t::blas)
+ .gemm('T', 'N', sctx.unit_cell().atom_type(iat).num_atoms(), num_gvec_loc,
+ num_beta * (num_beta + 1) / 2, &la::constant>::one(),
+ tmp2.at(memory_t::host), tmp2.ld(), qpw.at(memory_t::host), qpw.ld(),
+ &la::constant>::zero(), tmp1.at(memory_t::host), tmp1.ld());
+ PROFILE_STOP("sirius_generate_rhoaug_q:gemm")
+
+ PROFILE_START("sirius_generate_rhoaug_q:sum")
+ #pragma omp parallel for
+ for (int ig = 0; ig < num_gvec_loc; ig++) {
+ std::complex z(0, 0);
+ for (int i = 0; i < sctx.unit_cell().atom_type(iat).num_atoms(); i++) {
+ int ia = sctx.unit_cell().atom_type(iat).atom_id(i);
+ z += tmp1(i, ig) * phase_factors_q__[ia] *
+ std::conj(sctx.gvec_phase_factor(r3::vector(&mill(0, ig)), ia));
+ }
+ rho_aug(ig, is) += z * 2.0;
+ }
+ PROFILE_STOP("sirius_generate_rhoaug_q:sum")
+ }
+ },
+ error_code__);
+}
+
/*
@api begin
sirius_generate_d_operator_matrix:
diff --git a/src/context/config.hpp b/src/context/config.hpp
index 55a6dcc63..a3a45608c 100644
--- a/src/context/config.hpp
+++ b/src/context/config.hpp
@@ -886,6 +886,18 @@ class config_t
}
dict_["/control/ortho_rf"_json_pointer] = ortho_rf__;
}
+ /// Save LAPW radial functions in text file for inspection.
+ inline auto save_rf() const
+ {
+ return dict_.at("/control/save_rf"_json_pointer).get();
+ }
+ inline void save_rf(bool save_rf__)
+ {
+ if (dict_.contains("locked")) {
+ throw std::runtime_error(locked_msg);
+ }
+ dict_["/control/save_rf"_json_pointer] = save_rf__;
+ }
/// Type of the output stream (stdout:, file:name)
inline auto output() const
{
diff --git a/src/context/input_schema.json b/src/context/input_schema.json
index 83018cf89..b670199ac 100644
--- a/src/context/input_schema.json
+++ b/src/context/input_schema.json
@@ -483,6 +483,11 @@
"default": false,
"title": "Orthogonalize LAPW radial functions."
},
+ "save_rf": {
+ "type": "boolean",
+ "default": false,
+ "title": "Save LAPW radial functions in text file for inspection."
+ },
"output": {
"type": "string",
"default": "stdout:",
diff --git a/src/context/simulation_context.cpp b/src/context/simulation_context.cpp
index 1b23cf6ad..a57fe8d14 100644
--- a/src/context/simulation_context.cpp
+++ b/src/context/simulation_context.cpp
@@ -27,6 +27,7 @@
#include "core/env/env.hpp"
#include "core/omp.hpp"
#include "core/sirius_version.hpp"
+#include "core/ostream_tools.hpp"
#include "simulation_context.hpp"
#include "symmetry/lattice.hpp"
#include "symmetry/crystal_symmetry.hpp"
@@ -390,8 +391,8 @@ Simulation_context::initialize()
is_magma = false;
}
- int npr = cfg().control().mpi_grid_dims()[0];
- int npc = cfg().control().mpi_grid_dims()[1];
+ int npr = mpi_grid_dims()[0];
+ int npc = mpi_grid_dims()[1];
/* deduce the default eigen-value solver */
for (int i : {0, 1}) {
@@ -491,7 +492,7 @@ Simulation_context::initialize()
/* create G-vectors on the first call to update() */
update();
- ::sirius::print_memory_usage(this->out(), FILE_LINE);
+ print_memory_usage(this->out(), FILE_LINE);
if (verbosity() >= 1 && comm().rank() == 0) {
print_info(this->out());
@@ -530,11 +531,10 @@ Simulation_context::print_info(std::ostream& out__) const
char buf[100];
strftime(buf, sizeof(buf), "%a, %e %b %Y %H:%M:%S", ptm);
- os << "SIRIUS version : " << sirius::major_version() << "." << sirius::minor_version() << "."
- << sirius::revision() << std::endl
- << "git hash : " << sirius::git_hash() << std::endl
- << "git branch : " << sirius::git_branchname() << std::endl
- << "build time : " << sirius::build_date() << std::endl
+ os << "SIRIUS version : " << major_version() << "." << minor_version() << "." << revision() << std::endl
+ << "git hash : " << git_hash() << std::endl
+ << "git branch : " << git_branchname() << std::endl
+ << "build time : " << build_date() << std::endl
<< "start time : " << std::string(buf) << std::endl
<< std::endl
<< "number of MPI ranks : " << this->comm().size() << std::endl;
@@ -1273,15 +1273,18 @@ Simulation_context::init_comm()
PROFILE("sirius::Simulation_context::init_comm");
/* check MPI grid dimensions and set a default grid if needed */
- if (!cfg().control().mpi_grid_dims().size()) {
+ if (!mpi_grid_dims().size()) {
mpi_grid_dims({1, 1});
}
- if (cfg().control().mpi_grid_dims().size() != 2) {
- RTE_THROW("wrong MPI grid");
+ if (mpi_grid_dims().size() != 2) {
+ std::stringstream s;
+ auto g = mpi_grid_dims();
+ s << "MPI grid for band parallelization " << g << " is not 2D";
+ RTE_THROW(s);
}
- const int npr = cfg().control().mpi_grid_dims()[0];
- const int npc = cfg().control().mpi_grid_dims()[1];
+ const int npr = mpi_grid_dims()[0];
+ const int npc = mpi_grid_dims()[1];
const int npb = npr * npc;
if (npb <= 0) {
std::stringstream s;
diff --git a/src/core/memory.hpp b/src/core/memory.hpp
index 1567c90a5..4a4a94b42 100644
--- a/src/core/memory.hpp
+++ b/src/core/memory.hpp
@@ -361,7 +361,7 @@ class memory_pool
return static_cast(memory_pool_allocator_.allocate(num_elements__ * sizeof(T)));
#else
- return allocate(num_elements__, M_);
+ return sirius::allocate(num_elements__, M_);
#endif
}
diff --git a/src/core/wf/wave_functions.hpp b/src/core/wf/wave_functions.hpp
index d653920ba..bee2943ab 100644
--- a/src/core/wf/wave_functions.hpp
+++ b/src/core/wf/wave_functions.hpp
@@ -25,6 +25,7 @@
#ifndef __WAVE_FUNCTIONS_HPP__
#define __WAVE_FUNCTIONS_HPP__
+#include
#include
#include
#include
@@ -634,18 +635,17 @@ class Wave_functions_mt : public Wave_functions_base
/// Return COSTA layout for the muffin-tin part for a given spin index and band range.
auto
- grid_layout_mt(spin_index ispn__, band_range b__)
+ grid_layout_mt(spin_index ispn__, band_range b__) -> costa::grid_layout>
{
- std::vector rowsplit(comm_.size() + 1);
- rowsplit[0] = 0;
+ std::vector rowsplit({0});
+ std::vector owners;
for (int i = 0; i < comm_.size(); i++) {
- rowsplit[i + 1] = rowsplit[i] + mt_coeffs_distr_.counts[i];
+ if (mt_coeffs_distr_.counts[i] > 0) {
+ rowsplit.push_back(rowsplit.back() + mt_coeffs_distr_.counts[i]);
+ owners.push_back(i);
+ }
}
std::vector colsplit({0, b__.size()});
- std::vector owners(comm_.size());
- for (int i = 0; i < comm_.size(); i++) {
- owners[i] = i;
- }
costa::block_t localblock;
localblock.data =
this->num_mt_ ? this->data_[ispn__.get()].at(memory_t::host, this->num_pw_, b__.begin()) : nullptr;
@@ -653,8 +653,10 @@ class Wave_functions_mt : public Wave_functions_base
localblock.row = comm_.rank();
localblock.col = 0;
- return costa::custom_layout>(comm_.size(), 1, rowsplit.data(), colsplit.data(), owners.data(),
- 1, &localblock, 'C');
+ int nlocal_blocks = this->num_mt_ ? 1 : 0;
+
+ return costa::custom_layout>(rowsplit.size() - 1, 1, rowsplit.data(), colsplit.data(),
+ owners.data(), nlocal_blocks, &localblock, 'C');
}
/// Compute checksum of the muffin-tin coefficients.
diff --git a/src/dft/smearing.cpp b/src/dft/smearing.cpp
index 9204f3b11..784bbfac0 100644
--- a/src/dft/smearing.cpp
+++ b/src/dft/smearing.cpp
@@ -74,11 +74,8 @@ cold::occupancy(double x__, double width__)
double x = x__ / width__ - 1.0 / sqrt2;
double x2 = x * x;
double f = std::erf(x) / 2.0 + 0.5;
-
- if (x2 > 700)
+ if (x2 > 200)
return f;
-
- // std::erf(x) / 2.0 + std::exp(-x2) / std::sqrt(2 * pi) + 0.5;
return f + std::exp(-x2) / std::sqrt(2 * pi);
}
@@ -139,11 +136,13 @@ methfessel_paxton::occupancy(double x__, double width__, int n__)
double z = -x__ / width__;
double result{0};
result = 0.5 * (1 - std::erf(z));
- // todo s0 is missing
for (int i = 1; i <= n__; ++i) {
double A = mp_coefficients(i);
result += A * sf::hermiteh(2 * i - 1, z) * std::exp(-z * z);
}
+ if (result < 1e-30) {
+ return 0;
+ }
return result;
}
diff --git a/src/geometry/force.cpp b/src/geometry/force.cpp
index 103eeac19..3fb03bdbe 100644
--- a/src/geometry/force.cpp
+++ b/src/geometry/force.cpp
@@ -771,7 +771,7 @@ Force::add_ibs_force(K_point* kp__, Hamiltonian_k& Hk__, mdarray
Hk__.set_fv_h_o_apw_lo(atom, ia, alm_row, alm_col, h, o);
/* apply MT Hamiltonian to column coefficients */
- Hk__.H0().apply_hmt_to_apw(atom, kp__->num_gkvec_col(), alm_col, halm_col);
+ Hk__.H0().apply_hmt_to_apw(atom, spin_block_t::nm, kp__->num_gkvec_col(), alm_col, halm_col);
/* apw-apw block of the overlap matrix */
la::wrap(la::lib_t::blas)
diff --git a/src/hamiltonian/hamiltonian.cpp b/src/hamiltonian/hamiltonian.cpp
index 5ed1d099e..c9c6fada1 100644
--- a/src/hamiltonian/hamiltonian.cpp
+++ b/src/hamiltonian/hamiltonian.cpp
@@ -74,8 +74,8 @@ Hamiltonian0::Hamiltonian0(Potential& potential__, bool precompute_lapw__)
for (int j1 = 0; j1 <= j2; j1++) {
int lm1 = type.indexb(j1).lm;
int idxrf1 = type.indexb(j1).idxrf;
- hmt_[ia](j1, j2) = atom.radial_integrals_sum_L3(
- idxrf1, idxrf2, type.gaunt_coefs().gaunt_vector(lm1, lm2));
+ hmt_[ia](j1, j2) = atom.radial_integrals_sum_L3(spin_block_t::nm, idxrf1, idxrf2,
+ type.gaunt_coefs().gaunt_vector(lm1, lm2));
hmt_[ia](j2, j1) = std::conj(hmt_[ia](j1, j2));
}
}
@@ -96,10 +96,9 @@ Hamiltonian0::~Hamiltonian0()
}
template
-template
void
-Hamiltonian0::apply_hmt_to_apw(Atom const& atom__, int ngv__, mdarray, 2>& alm__,
- mdarray, 2>& halm__) const
+Hamiltonian0::apply_hmt_to_apw(Atom const& atom__, spin_block_t sblock__, int ngv__,
+ mdarray, 2>& alm__, mdarray, 2>& halm__) const
{
auto& type = atom__.type();
@@ -115,7 +114,7 @@ Hamiltonian0::apply_hmt_to_apw(Atom const& atom__, int ngv__, mdarray(idxrf1, idxrf2, type.gaunt_coefs().gaunt_vector(lm1, lm2));
+ atom__.radial_integrals_sum_L3(sblock__, idxrf1, idxrf2, type.gaunt_coefs().gaunt_vector(lm1, lm2));
}
}
la::wrap(la::lib_t::blas)
@@ -269,19 +268,8 @@ Hamiltonian0::apply_so_correction(wf::Wave_functions& psi__, std::vector;
-
-template void
-Hamiltonian0::apply_hmt_to_apw(Atom const& atom__, int ngv__,
- mdarray, 2>& alm__,
- mdarray, 2>& halm__) const;
-
#ifdef SIRIUS_USE_FP32
template class Hamiltonian0;
-
-template void
-Hamiltonian0::apply_hmt_to_apw(Atom const& atom__, int ngv__,
- mdarray, 2>& alm__,
- mdarray, 2>& halm__) const;
#endif
} // namespace sirius
diff --git a/src/hamiltonian/hamiltonian.hpp b/src/hamiltonian/hamiltonian.hpp
index 7ca2d2f41..028ddb05f 100644
--- a/src/hamiltonian/hamiltonian.hpp
+++ b/src/hamiltonian/hamiltonian.hpp
@@ -157,9 +157,8 @@ class Hamiltonian0
* \rangle \langle Y_{L_1} | R_{L_3} | Y_{L_2} \rangle
* \f]
*/
- template
void
- apply_hmt_to_apw(Atom const& atom__, int ngv__, mdarray, 2>& alm__,
+ apply_hmt_to_apw(Atom const& atom__, spin_block_t sblock__, int ngv__, mdarray, 2>& alm__,
mdarray, 2>& halm__) const;
/// Add correction to LAPW overlap arising in the infinite-order relativistic approximation (IORA).
diff --git a/src/hamiltonian/hamiltonian_k.cpp b/src/hamiltonian/hamiltonian_k.cpp
index 53dff1a3d..995cb4363 100644
--- a/src/hamiltonian/hamiltonian_k.cpp
+++ b/src/hamiltonian/hamiltonian_k.cpp
@@ -250,7 +250,7 @@ Hamiltonian_k::get_h_o_diag_lapw() const
kp_.alm_coeffs_loc().template generate(atom, alm);
if (what & 1) {
- H0_.template apply_hmt_to_apw(atom, kp_.num_gkvec_loc(), alm, halm);
+ H0_.apply_hmt_to_apw(atom, spin_block_t::nm, kp_.num_gkvec_loc(), alm, halm);
}
for (int xi = 0; xi < nmt; xi++) {
@@ -436,7 +436,7 @@ Hamiltonian_k::set_fv_h_o(la::dmatrix>& h__, la::dmatrix(atom, alm_col_atom);
/* can't copy alm to device how as it might be modified by the iora */
- H0_.template apply_hmt_to_apw(atom, kp_.num_gkvec_col(), alm_col_atom, halm_col_atom);
+ H0_.apply_hmt_to_apw(atom, spin_block_t::nm, kp_.num_gkvec_col(), alm_col_atom, halm_col_atom);
if (pu == device_t::GPU) {
halm_col_atom.copy_to(memory_t::device, acc::stream_id(tid));
}
@@ -540,8 +540,8 @@ Hamiltonian_k::set_fv_h_o_apw_lo(Atom const& atom__, int ia__, mdarray(idxrf, idxrf1,
- type.gaunt_coefs().gaunt_vector(lm1, lm));
+ auto zsum = atom__.radial_integrals_sum_L3(spin_block_t::nm, idxrf, idxrf1,
+ type.gaunt_coefs().gaunt_vector(lm1, lm));
if (std::abs(zsum) > 1e-14) {
for (int igkloc = 0; igkloc < kp_.num_gkvec_row(); igkloc++) {
@@ -582,8 +582,8 @@ Hamiltonian_k::set_fv_h_o_apw_lo(Atom const& atom__, int ia__, mdarray(idxrf1, idxrf,
- type.gaunt_coefs().gaunt_vector(lm, lm1));
+ auto zsum = atom__.radial_integrals_sum_L3(spin_block_t::nm, idxrf1, idxrf,
+ type.gaunt_coefs().gaunt_vector(lm, lm1));
if (std::abs(zsum) > 1e-14) {
for (int igkloc = 0; igkloc < kp_.num_gkvec_col(); igkloc++) {
@@ -633,9 +633,8 @@ Hamiltonian_k::set_fv_h_o_lo_lo(la::dmatrix>& h__, la::dmatri
int lm1 = kp.lo_basis_descriptor_row(irow).lm;
int idxrf1 = kp.lo_basis_descriptor_row(irow).idxrf;
- h__(kp.num_gkvec_row() + irow, kp.num_gkvec_col() + icol) +=
- atom.template radial_integrals_sum_L3(
- idxrf1, idxrf2, atom.type().gaunt_coefs().gaunt_vector(lm1, lm2));
+ h__(kp.num_gkvec_row() + irow, kp.num_gkvec_col() + icol) += atom.radial_integrals_sum_L3(
+ spin_block_t::nm, idxrf1, idxrf2, atom.type().gaunt_coefs().gaunt_vector(lm1, lm2));
if (lm1 == lm2) {
int l = kp.lo_basis_descriptor_row(irow).l;
@@ -691,12 +690,8 @@ Hamiltonian_k::set_fv_h_o_it(la::dmatrix>& h__, la::dmatrix s(radial_grid_);
+ for (int i = 0; i < nr; i++) {
+ s(i) = std::pow(p__[i], 2);
+ }
+ auto norm = 1.0 / std::sqrt(s.interpolate().integrate(0));
+ for (int i = 0; i < nr; i++) {
+ p__[i] *= norm;
+ q__[i] *= norm;
+ }
+ }
+
for (int i = 0; i < nr; i++) {
if (rel == relativity_t::none || rel == relativity_t::koelling_harmon || rel == relativity_t::zora) {
double V = ve_(i) - zn_ * radial_grid_.x_inv(i);
@@ -428,7 +441,7 @@ class Radial_solver
double v1 = ll_half / M / std::pow(radial_grid_[i], 2);
/* P' = 2MQ + \frac{P}{r} */
- dpdr__[i] = 2 * M * q__[i] + p__[i] * radial_grid_.x_inv(i);
+ dpdr__[i] = 2 * M * q__[i] + p__[i] * radial_grid_.x_inv(i) + chi_p__(i);
/* Q' = (V - E + \frac{\ell(\ell + 1)}{2 M r^2}) P - \frac{Q}{r} */
dqdr__[i] = (V - enu__ + v1) * p__[i] - q__[i] * radial_grid_.x_inv(i) + chi_q__(i);
@@ -674,7 +687,6 @@ class Radial_solver
for (int i = 0; i < nr; i++) {
chi_q(i) = -j * p[j - 1][i];
}
- chi_q.interpolate();
} else if (rel__ == relativity_t::koelling_harmon) {
double sq_alpha = std::pow(speed_of_light, -2);
double ll_half = l__ * (l__ + 1) / 2.0;
@@ -686,6 +698,15 @@ class Radial_solver
chi_p(i) = sq_alpha * q[j - 1][i];
chi_q(i) = -p[j - 1][i] * (1 + 0.5 * sq_alpha * ll_half / std::pow(M * x, 2));
}
+ } else if (j == 2) {
+ for (int i = 0; i < nr; i++) {
+ double x = radial_grid_[i];
+ double V = ve_(i) - zn_ * radial_grid_.x_inv(i);
+ double M = 1 + 0.5 * sq_alpha * (enu__ - V);
+ chi_p(i) = 2 * sq_alpha * q[j - 1][i];
+ chi_q(i) = -2 * p[j - 1][i] * (1 + 0.5 * sq_alpha * ll_half / std::pow(M * x, 2)) +
+ p[j - 2][i] * (0.5 * ll_half * std::pow(sq_alpha, 2) / std::pow(M * x, 2) / M);
+ }
} else {
throw std::runtime_error("not implemented");
}
@@ -714,11 +735,11 @@ class Radial_solver
} else {
throw std::runtime_error("not implemented");
}
- chi_p.interpolate();
- chi_q.interpolate();
} else {
throw std::runtime_error("not implemented");
}
+ chi_p.interpolate();
+ chi_q.interpolate();
}
switch (rel__) {
diff --git a/src/sirius.hpp b/src/sirius.hpp
index 9b7b2b00b..4506f545a 100644
--- a/src/sirius.hpp
+++ b/src/sirius.hpp
@@ -102,8 +102,8 @@ initialize(bool call_mpi_init__ = true)
#endif
if (mpi::Communicator::world().rank() == 0) {
- std::printf("SIRIUS %i.%i.%i, git hash: %s\n", sirius::major_version(), sirius::minor_version(),
- sirius::revision(), sirius::git_hash().c_str());
+ std::printf("SIRIUS %i.%i.%i, git hash: %s\n", major_version(), minor_version(), revision(),
+ git_hash().c_str());
#if !defined(NDEBUG)
std::printf("Warning! Compiled in 'debug' mode with assert statements enabled!\n");
#endif
diff --git a/src/testing.hpp b/src/testing.hpp
index 430787612..8a5e54606 100644
--- a/src/testing.hpp
+++ b/src/testing.hpp
@@ -190,7 +190,7 @@ inline auto
create_simulation_context(nlohmann::json const& conf__, r3::matrix L__, int num_atoms__,
std::vector> coord__, bool add_vloc__, bool add_dion__)
{
- auto ctx = std::make_unique(conf__);
+ auto ctx = std::make_unique(conf__);
ctx->unit_cell().set_lattice_vectors(L__);
if (num_atoms__) {
diff --git a/src/unit_cell/atom.hpp b/src/unit_cell/atom.hpp
index d050d874f..375912914 100644
--- a/src/unit_cell/atom.hpp
+++ b/src/unit_cell/atom.hpp
@@ -431,48 +431,61 @@ class Atom
* \langle Y_{L_1} | R_{L_3} | Y_{L_2} \rangle
* \f]
*/
- template
- inline std::complex
- radial_integrals_sum_L3(int idxrf1__, int idxrf2__, std::vector>> const& gnt__) const
- {
- std::complex zsum(0, 0);
-
- for (size_t i = 0; i < gnt__.size(); i++) {
- switch (sblock) {
- case spin_block_t::nm: {
- /* just the Hamiltonian */
- zsum += gnt__[i].coef * h_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__);
- break;
- }
- case spin_block_t::uu: {
- /* h + Bz */
- zsum += gnt__[i].coef * (h_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__) +
- b_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__, 0));
- break;
- }
- case spin_block_t::dd: {
- /* h - Bz */
- zsum += gnt__[i].coef * (h_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__) -
- b_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__, 0));
- break;
- }
- case spin_block_t::ud: {
- /* Bx - i By */
- zsum += gnt__[i].coef *
- std::complex(b_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__, 1),
- -b_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__, 2));
- break;
- }
- case spin_block_t::du: {
- /* Bx + i By */
- zsum += gnt__[i].coef *
- std::complex(b_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__, 1),
- b_radial_integrals_(gnt__[i].lm3, idxrf1__, idxrf2__, 2));
- break;
- }
+ inline auto
+ radial_integrals_sum_L3(spin_block_t sblock, int idxrf1__, int idxrf2__,
+ std::vector>> const& gnt__) const
+ {
+ auto h_int = [this, idxrf1__, idxrf2__](int lm3) { return this->h_radial_integrals_(lm3, idxrf1__, idxrf2__); };
+ auto b_int = [this, idxrf1__, idxrf2__](int lm3, int i) {
+ return this->b_radial_integrals_(lm3, idxrf1__, idxrf2__, i);
+ };
+ /* just the Hamiltonian */
+ auto nm = [h_int](const auto& gaunt_l3) { return gaunt_l3.coef * h_int(gaunt_l3.lm3); };
+ /* h + Bz */
+ auto uu = [h_int, b_int](const auto& gaunt_l3) {
+ return gaunt_l3.coef * (h_int(gaunt_l3.lm3) + b_int(gaunt_l3.lm3, 0));
+ };
+ /* h - Bz */
+ auto dd = [h_int, b_int](const auto& gaunt_l3) {
+ return gaunt_l3.coef * (h_int(gaunt_l3.lm3) - b_int(gaunt_l3.lm3, 0));
+ };
+ /* Bx - i By */
+ auto ud = [b_int](const auto& gaunt_l3) {
+ return gaunt_l3.coef * std::complex(b_int(gaunt_l3.lm3, 1), -b_int(gaunt_l3.lm3, 2));
+ };
+ /* Bx + i By */
+ auto du = [b_int](const auto& gaunt_l3) {
+ return gaunt_l3.coef * std::complex(b_int(gaunt_l3.lm3, 1), b_int(gaunt_l3.lm3, 2));
+ };
+
+ std::complex res{0};
+ switch (sblock) {
+ case spin_block_t::nm: {
+ res = std::transform_reduce(gnt__.begin(), gnt__.end(), std::complex{0}, std::plus{}, nm);
+ break;
+ }
+ case spin_block_t::uu: {
+ res = std::transform_reduce(gnt__.begin(), gnt__.end(), std::complex{0}, std::plus{}, uu);
+ break;
+ }
+ case spin_block_t::dd: {
+ res = std::transform_reduce(gnt__.begin(), gnt__.end(), std::complex{0}, std::plus{}, dd);
+ break;
+ }
+ case spin_block_t::ud: {
+ res = std::transform_reduce(gnt__.begin(), gnt__.end(), std::complex{0}, std::plus{}, ud);
+ break;
+ }
+ case spin_block_t::du: {
+ res = std::transform_reduce(gnt__.begin(), gnt__.end(), std::complex{0}, std::plus{}, du);
+ break;
+ }
+ default: {
+ RTE_THROW("unknown value for spin_block_t");
}
}
- return zsum;
+
+ return res;
}
inline int
diff --git a/src/unit_cell/atom_symmetry_class.cpp b/src/unit_cell/atom_symmetry_class.cpp
index ae4c70072..82672288f 100644
--- a/src/unit_cell/atom_symmetry_class.cpp
+++ b/src/unit_cell/atom_symmetry_class.cpp
@@ -552,24 +552,21 @@ Atom_symmetry_class::generate_radial_functions(relativity_t rel__)
orthogonalize_radial_functions();
}
- //** if (true)
- //** {
- //** std::stringstream s;
- //** s << "radial_functions_" << id_ << ".dat";
- //** FILE* fout = fopen(s.str().c_str(), "w");
-
- //** for (int ir = 0; ir atomic_levels_;
- ///// Number of core electrons.
- // double num_core_electrons_{0};
-
- ///// Number of valence electrons.
- // double num_valence_electrons_{0};
-
/* forbid copy constructor */
Atom_type_base(Atom_type_base const& src) = delete;
@@ -93,15 +87,6 @@ class Atom_type_base
atomic_levels_.push_back(level);
}
}
- ///* get the number of core electrons */
- // for (auto& e : atomic_levels_) {
- // if (e.core) {
- // num_core_electrons_ += e.occupancy;
- // }
- // }
-
- ///* get number of valence electrons */
- // num_valence_electrons_ = zn_ - num_core_electrons_;
free_atom_radial_grid_ = Radial_grid_exp(2000 + 150 * zn(), 1e-7, 20.0 + 0.25 * zn(), 1.0);
}
@@ -188,16 +173,6 @@ class Atom_type_base
{
return atomic_levels_[idx];
}
-
- // inline double num_core_electrons() const
- //{
- // return num_core_electrons_;
- // }
-
- // inline double num_valence_electrons() const
- //{
- // return num_valence_electrons_;
- // }
};
} // namespace sirius
diff --git a/src/unit_cell/unit_cell.cpp b/src/unit_cell/unit_cell.cpp
index 4ee74d219..2572c2dea 100644
--- a/src/unit_cell/unit_cell.cpp
+++ b/src/unit_cell/unit_cell.cpp
@@ -545,7 +545,23 @@ Unit_cell::generate_radial_functions(std::ostream& out__)
}
RTE_OUT(out__) << pout.flush(0);
}
- if (parameters_.verbosity() >= 4 && comm_.rank() == 0) {
+ if (parameters_.verbosity() >= 3) {
+ std::stringstream s;
+ for (int ic = 0; ic < num_atom_symmetry_classes(); ic++) {
+ s << "Atom symmetry class : " << ic << std::endl;
+ for (int l = 0; l < this->lmax_apw(); l++) {
+ for (int o = 0; o < atom_symmetry_class(ic).atom_type().aw_order(l); o++) {
+ s << "l = " << l << ", o = " << o << ", deriv =";
+ for (int m = 0; m <= 2; m++) {
+ s << " " << atom_symmetry_class(ic).aw_surface_deriv(l, o, m);
+ }
+ s << std::endl;
+ }
+ }
+ }
+ RTE_OUT(out__) << s.str();
+ }
+ if (parameters_.cfg().control().save_rf() && comm_.rank() == 0) {
for (int ic = 0; ic < num_atom_symmetry_classes(); ic++) {
atom_symmetry_class(ic).dump_lo();
}
diff --git a/verification/test31/H.json b/verification/test31/H.json
new file mode 100644
index 000000000..74a79659c
--- /dev/null
+++ b/verification/test31/H.json
@@ -0,0 +1,4369 @@
+{
+ "core": "",
+ "free_atom": {
+ "density": [
+ 0.2730404032959547,
+ 0.27304040280776976,
+ 0.2730404023152205,
+ 0.27304040181826805,
+ 0.27304040131687285,
+ 0.2730404008109954,
+ 0.27304040030059534,
+ 0.2730403997856325,
+ 0.27304039926606605,
+ 0.2730403987418548,
+ 0.27304039821295706,
+ 0.2730403976793312,
+ 0.2730403971409348,
+ 0.27304039659772517,
+ 0.2730403960496594,
+ 0.273040395496694,
+ 0.27304039493878535,
+ 0.27304039437588906,
+ 0.2730403938079606,
+ 0.273040393234955,
+ 0.2730403926568268,
+ 0.2730403920735303,
+ 0.2730403914850192,
+ 0.2730403908912469,
+ 0.2730403902921665,
+ 0.27304038968773037,
+ 0.27304038907789063,
+ 0.27304038846259915,
+ 0.27304038784180706,
+ 0.2730403872154653,
+ 0.273040386583524,
+ 0.27304038594593344,
+ 0.2730403853026429,
+ 0.2730403846536015,
+ 0.27304038399875785,
+ 0.27304038333805986,
+ 0.2730403826714555,
+ 0.27304038199889175,
+ 0.27304038132031555,
+ 0.27304038063567293,
+ 0.2730403799449097,
+ 0.2730403792479713,
+ 0.27304037854480234,
+ 0.27304037783534735,
+ 0.2730403771195499,
+ 0.27304037639735346,
+ 0.27304037566870054,
+ 0.27304037493353367,
+ 0.27304037419179467,
+ 0.2730403734434245,
+ 0.27304037268836423,
+ 0.2730403719265538,
+ 0.2730403711579329,
+ 0.2730403703824408,
+ 0.2730403696000158,
+ 0.2730403688105964,
+ 0.2730403680141195,
+ 0.2730403672105223,
+ 0.2730403663997411,
+ 0.27304036558171174,
+ 0.2730403647563693,
+ 0.27304036392364844,
+ 0.2730403630834834,
+ 0.2730403622358073,
+ 0.27304036138055326,
+ 0.27304036051765335,
+ 0.27304035964703927,
+ 0.2730403587686422,
+ 0.2730403578823923,
+ 0.2730403569882196,
+ 0.2730403560860532,
+ 0.27304035517582165,
+ 0.27304035425745277,
+ 0.2730403533308738,
+ 0.27304035239601143,
+ 0.2730403514527917,
+ 0.27304035050113984,
+ 0.2730403495409802,
+ 0.2730403485722371,
+ 0.2730403475948336,
+ 0.27304034660869225,
+ 0.27304034561373497,
+ 0.27304034460988313,
+ 0.2730403435970569,
+ 0.27304034257517623,
+ 0.27304034154416024,
+ 0.2730403405039272,
+ 0.2730403394543947,
+ 0.27304033839547953,
+ 0.273040337327098,
+ 0.27304033624916524,
+ 0.27304033516159604,
+ 0.2730403340643041,
+ 0.27304033295720276,
+ 0.27304033184020404,
+ 0.27304033071321976,
+ 0.27304032957616026,
+ 0.27304032842893583,
+ 0.27304032727145544,
+ 0.27304032610362744,
+ 0.2730403249253592,
+ 0.27304032373655746,
+ 0.2730403225371282,
+ 0.27304032132697625,
+ 0.27304032010600576,
+ 0.2730403188741201,
+ 0.2730403176312217,
+ 0.2730403163772119,
+ 0.2730403151119916,
+ 0.27304031383546057,
+ 0.27304031254751754,
+ 0.2730403112480606,
+ 0.2730403099369868,
+ 0.2730403086141922,
+ 0.2730403072795722,
+ 0.2730403059330211,
+ 0.27304030457443185,
+ 0.27304030320369727,
+ 0.2730403018207085,
+ 0.2730403004253562,
+ 0.27304029901752963,
+ 0.27304029759711745,
+ 0.2730402961640071,
+ 0.273040294718085,
+ 0.27304029325923673,
+ 0.2730402917873467,
+ 0.27304029030229815,
+ 0.2730402888039737,
+ 0.2730402872922546,
+ 0.27304028576702094,
+ 0.27304028422815196,
+ 0.273040282675526,
+ 0.2730402811090197,
+ 0.27304027952850923,
+ 0.27304027793386937,
+ 0.27304027632497374,
+ 0.27304027470169484,
+ 0.2730402730639043,
+ 0.27304027141147225,
+ 0.27304026974426776,
+ 0.27304026806215886,
+ 0.2730402663650122,
+ 0.2730402646526935,
+ 0.273040262925067,
+ 0.27304026118199587,
+ 0.27304025942334204,
+ 0.2730402576489662,
+ 0.27304025585872793,
+ 0.2730402540524853,
+ 0.2730402522300951,
+ 0.27304025039141316,
+ 0.2730402485362939,
+ 0.2730402466645902,
+ 0.2730402447761538,
+ 0.2730402428708353,
+ 0.2730402409484836,
+ 0.27304023900894664,
+ 0.2730402370520705,
+ 0.2730402350777002,
+ 0.2730402330856795,
+ 0.27304023107585074,
+ 0.27304022904805436,
+ 0.27304022700213,
+ 0.27304022493791547,
+ 0.2730402228552473,
+ 0.2730402207539605,
+ 0.27304021863388866,
+ 0.2730402164948639,
+ 0.27304021433671666,
+ 0.27304021215927604,
+ 0.27304020996236955,
+ 0.27304020774582327,
+ 0.27304020550946145,
+ 0.2730402032531071,
+ 0.2730402009765813,
+ 0.273040198679704,
+ 0.2730401963622931,
+ 0.2730401940241651,
+ 0.2730401916651346,
+ 0.27304018928501494,
+ 0.27304018688361764,
+ 0.2730401844607521,
+ 0.2730401820162268,
+ 0.273040179549848,
+ 0.2730401770614202,
+ 0.27304017455074653,
+ 0.27304017201762787,
+ 0.2730401694618637,
+ 0.27304016688325167,
+ 0.27304016428158717,
+ 0.2730401616566645,
+ 0.2730401590082756,
+ 0.27304015633621065,
+ 0.2730401536402581,
+ 0.2730401509202041,
+ 0.2730401481758337,
+ 0.273040145406929,
+ 0.27304014261327103,
+ 0.2730401397946382,
+ 0.27304013695080753,
+ 0.2730401340815537,
+ 0.2730401311866492,
+ 0.273040128265865,
+ 0.27304012531896965,
+ 0.2730401223457295,
+ 0.27304011934590944,
+ 0.2730401163192715,
+ 0.2730401132655762,
+ 0.27304011018458146,
+ 0.27304010707604326,
+ 0.2730401039397155,
+ 0.27304010077534957,
+ 0.2730400975826949,
+ 0.27304009436149856,
+ 0.2730400911115055,
+ 0.27304008783245814,
+ 0.27304008452409684,
+ 0.2730400811861596,
+ 0.2730400778183819,
+ 0.27304007442049694,
+ 0.2730400709922357,
+ 0.27304006753332644,
+ 0.27304006404349546,
+ 0.27304006052246593,
+ 0.27304005696995937,
+ 0.2730400533856941,
+ 0.27304004976938634,
+ 0.27304004612074945,
+ 0.2730400424394947,
+ 0.27304003872533034,
+ 0.2730400349779621,
+ 0.27304003119709325,
+ 0.2730400273824243,
+ 0.273040023533653,
+ 0.2730400196504745,
+ 0.27304001573258135,
+ 0.27304001177966303,
+ 0.27304000779140636,
+ 0.2730400037674958,
+ 0.2730399997076122,
+ 0.27303999561143427,
+ 0.2730399914786374,
+ 0.2730399873088941,
+ 0.2730399831018744,
+ 0.2730399788572448,
+ 0.27303997457466916,
+ 0.27303997025380816,
+ 0.27303996589431967,
+ 0.27303996149585835,
+ 0.27303995705807577,
+ 0.27303995258062025,
+ 0.2730399480631375,
+ 0.2730399435052694,
+ 0.27303993890665496,
+ 0.27303993426692996,
+ 0.27303992958572676,
+ 0.2730399248626747,
+ 0.27303992009739964,
+ 0.27303991528952415,
+ 0.2730399104386672,
+ 0.27303990554444485,
+ 0.2730399006064691,
+ 0.2730398956243489,
+ 0.2730398905976898,
+ 0.27303988552609343,
+ 0.27303988040915805,
+ 0.27303987524647855,
+ 0.27303987003764596,
+ 0.27303986478224734,
+ 0.2730398594798668,
+ 0.2730398541300842,
+ 0.2730398487324756,
+ 0.2730398432866137,
+ 0.2730398377920669,
+ 0.27303983224840034,
+ 0.2730398266551745,
+ 0.27303982101194657,
+ 0.2730398153182695,
+ 0.27303980957369206,
+ 0.27303980377775944,
+ 0.27303979793001265,
+ 0.2730397920299883,
+ 0.273039786077219,
+ 0.27303978007123325,
+ 0.27303977401155544,
+ 0.27303976789770557,
+ 0.27303976172919925,
+ 0.2730397555055478,
+ 0.27303974922625845,
+ 0.27303974289083366,
+ 0.27303973649877156,
+ 0.2730397300495659,
+ 0.27303972354270584,
+ 0.2730397169776761,
+ 0.2730397103539563,
+ 0.2730397036710221,
+ 0.273039696928344,
+ 0.2730396901253878,
+ 0.27303968326161476,
+ 0.27303967633648135,
+ 0.2730396693494388,
+ 0.2730396622999336,
+ 0.2730396551874075,
+ 0.2730396480112971,
+ 0.273039640771034,
+ 0.27303963346604454,
+ 0.2730396260957502,
+ 0.27303961865956705,
+ 0.27303961115690634,
+ 0.2730396035871735,
+ 0.27303959594976906,
+ 0.273039588244088,
+ 0.27303958046952,
+ 0.27303957262544903,
+ 0.27303956471125407,
+ 0.27303955672630814,
+ 0.2730395486699785,
+ 0.27303954054162727,
+ 0.27303953234061046,
+ 0.2730395240662784,
+ 0.2730395157179759,
+ 0.27303950729504156,
+ 0.27303949879680817,
+ 0.2730394902226026,
+ 0.27303948157174573,
+ 0.2730394728435522,
+ 0.2730394640373306,
+ 0.2730394551523836,
+ 0.27303944618800746,
+ 0.2730394371434917,
+ 0.2730394280181201,
+ 0.27303941881116994,
+ 0.27303940952191186,
+ 0.27303940014961015,
+ 0.2730393906935221,
+ 0.2730393811528991,
+ 0.27303937152698504,
+ 0.27303936181501787,
+ 0.27303935201622814,
+ 0.2730393421298394,
+ 0.2730393321550687,
+ 0.27303932209112614,
+ 0.27303931193721415,
+ 0.2730393016925288,
+ 0.27303929135625854,
+ 0.2730392809275845,
+ 0.2730392704056806,
+ 0.2730392597897135,
+ 0.2730392490788422,
+ 0.2730392382722184,
+ 0.27303922736898606,
+ 0.27303921636828155,
+ 0.27303920526923336,
+ 0.27303919407096244,
+ 0.2730391827725818,
+ 0.2730391713731964,
+ 0.2730391598719032,
+ 0.2730391482677914,
+ 0.2730391365599417,
+ 0.2730391247474268,
+ 0.27303911282931104,
+ 0.2730391008046502,
+ 0.27303908867249194,
+ 0.2730390764318752,
+ 0.2730390640818305,
+ 0.2730390516213793,
+ 0.2730390390495349,
+ 0.27303902636530153,
+ 0.2730390135676743,
+ 0.2730390006556394,
+ 0.2730389876281742,
+ 0.2730389744842468,
+ 0.27303896122281596,
+ 0.2730389478428315,
+ 0.2730389343432333,
+ 0.2730389207229521,
+ 0.27303890698090916,
+ 0.2730388931160158,
+ 0.2730388791271738,
+ 0.27303886501327534,
+ 0.27303885077320217,
+ 0.27303883640582643,
+ 0.27303882191000994,
+ 0.2730388072846049,
+ 0.2730387925284523,
+ 0.2730387776403837,
+ 0.27303876261921955,
+ 0.2730387474637701,
+ 0.2730387321728349,
+ 0.27303871674520275,
+ 0.27303870117965173,
+ 0.27303868547494864,
+ 0.2730386696298497,
+ 0.2730386536430998,
+ 0.2730386375134325,
+ 0.2730386212395704,
+ 0.27303860482022424,
+ 0.2730385882540935,
+ 0.27303857153986594,
+ 0.2730385546762177,
+ 0.273038537661813,
+ 0.27303852049530397,
+ 0.27303850317533107,
+ 0.2730384857005223,
+ 0.2730384680694935,
+ 0.27303845028084794,
+ 0.27303843233317676,
+ 0.2730384142250583,
+ 0.2730383959550582,
+ 0.2730383775217292,
+ 0.2730383589236114,
+ 0.27303834015923145,
+ 0.2730383212271032,
+ 0.2730383021257269,
+ 0.27303828285358955,
+ 0.27303826340916476,
+ 0.27303824379091207,
+ 0.27303822399727773,
+ 0.2730382040266937,
+ 0.27303818387757833,
+ 0.2730381635483355,
+ 0.27303814303735485,
+ 0.2730381223430119,
+ 0.2730381014636674,
+ 0.2730380803976674,
+ 0.2730380591433434,
+ 0.2730380376990117,
+ 0.2730380160629739,
+ 0.273037994233516,
+ 0.27303797220890896,
+ 0.27303794998740827,
+ 0.27303792756725376,
+ 0.2730379049466696,
+ 0.27303788212386393,
+ 0.273037859097029,
+ 0.2730378358643408,
+ 0.2730378124239592,
+ 0.2730377887740273,
+ 0.27303776491267207,
+ 0.27303774083800325,
+ 0.27303771654811415,
+ 0.27303769204108036,
+ 0.27303766731496104,
+ 0.2730376423677977,
+ 0.273037617197614,
+ 0.2730375918024163,
+ 0.2730375661801933,
+ 0.27303754032891514,
+ 0.2730375142465345,
+ 0.2730374879309852,
+ 0.27303746138018276,
+ 0.2730374345920243,
+ 0.27303740756438777,
+ 0.2730373802951324,
+ 0.2730373527820983,
+ 0.27303732502310624,
+ 0.2730372970159571,
+ 0.2730372687584327,
+ 0.2730372402482949,
+ 0.27303721148328536,
+ 0.27303718246112546,
+ 0.2730371531795165,
+ 0.27303712363613925,
+ 0.27303709382865354,
+ 0.2730370637546982,
+ 0.2730370334118911,
+ 0.27303700279782916,
+ 0.2730369719100872,
+ 0.27303694074621865,
+ 0.27303690930375507,
+ 0.273036877580206,
+ 0.2730368455730586,
+ 0.2730368132797777,
+ 0.27303678069780535,
+ 0.27303674782456067,
+ 0.27303671465743984,
+ 0.273036681193816,
+ 0.27303664743103834,
+ 0.2730366133664326,
+ 0.2730365789973004,
+ 0.27303654432091967,
+ 0.27303650933454365,
+ 0.2730364740354011,
+ 0.2730364384206962,
+ 0.2730364024876077,
+ 0.27303636623328936,
+ 0.27303632965486996,
+ 0.2730362927494517,
+ 0.27303625551411176,
+ 0.27303621794590055,
+ 0.27303618004184244,
+ 0.27303614179893504,
+ 0.2730361032141495,
+ 0.27303606428442934,
+ 0.2730360250066909,
+ 0.27303598537782336,
+ 0.2730359453946875,
+ 0.27303590505411657,
+ 0.27303586435291516,
+ 0.2730358232878595,
+ 0.2730357818556968,
+ 0.27303574005314557,
+ 0.2730356978768944,
+ 0.27303565532360274,
+ 0.2730356123899001,
+ 0.2730355690723857,
+ 0.27303552536762843,
+ 0.2730354812721669,
+ 0.27303543678250797,
+ 0.2730353918951278,
+ 0.27303534660647116,
+ 0.27303530091295086,
+ 0.27303525481094754,
+ 0.2730352082968095,
+ 0.27303516136685246,
+ 0.27303511401735947,
+ 0.27303506624458,
+ 0.2730350180447299,
+ 0.2730349694139917,
+ 0.2730349203485134,
+ 0.2730348708444086,
+ 0.2730348208977563,
+ 0.2730347705046003,
+ 0.27303471966094917,
+ 0.2730346683627756,
+ 0.2730346166060167,
+ 0.27303456438657275,
+ 0.27303451170030774,
+ 0.2730344585430485,
+ 0.27303440491058467,
+ 0.27303435079866833,
+ 0.27303429620301317,
+ 0.27303424111929503,
+ 0.27303418554315084,
+ 0.27303412947017874,
+ 0.2730340728959373,
+ 0.2730340158159455,
+ 0.2730339582256822,
+ 0.2730339001205859,
+ 0.2730338414960545,
+ 0.27303378234744424,
+ 0.2730337226700706,
+ 0.27303366245920646,
+ 0.27303360171008284,
+ 0.27303354041788797,
+ 0.27303347857776733,
+ 0.27303341618482274,
+ 0.27303335323411215,
+ 0.27303328972064983,
+ 0.273033225639405,
+ 0.273033160985302,
+ 0.2730330957532199,
+ 0.27303302993799194,
+ 0.27303296353440537,
+ 0.2730328965372003,
+ 0.27303282894107067,
+ 0.27303276074066224,
+ 0.273032691930573,
+ 0.27303262250535326,
+ 0.2730325524595038,
+ 0.27303248178747697,
+ 0.273032410483675,
+ 0.2730323385424503,
+ 0.27303226595810476,
+ 0.2730321927248894,
+ 0.2730321188370037,
+ 0.27303204428859557,
+ 0.27303196907376026,
+ 0.27303189318654053,
+ 0.2730318166209256,
+ 0.27303173937085146,
+ 0.2730316614301993,
+ 0.27303158279279593,
+ 0.2730315034524129,
+ 0.2730314234027663,
+ 0.2730313426375158,
+ 0.2730312611502643,
+ 0.273031178934558,
+ 0.27303109598388475,
+ 0.27303101229167476,
+ 0.2730309278512993,
+ 0.2730308426560703,
+ 0.2730307566992399,
+ 0.2730306699740003,
+ 0.2730305824734823,
+ 0.2730304941907557,
+ 0.27303040511882826,
+ 0.27303031525064503,
+ 0.27303022457908827,
+ 0.2730301330969764,
+ 0.27303004079706394,
+ 0.2730299476720404,
+ 0.2730298537145301,
+ 0.27302975891709114,
+ 0.2730296632722154,
+ 0.2730295667723277,
+ 0.2730294694097848,
+ 0.2730293711768755,
+ 0.2730292720658194,
+ 0.27302917206876703,
+ 0.27302907117779773,
+ 0.2730289693849212,
+ 0.2730288666820754,
+ 0.2730287630611257,
+ 0.2730286585138653,
+ 0.27302855303201373,
+ 0.2730284466072168,
+ 0.2730283392310455,
+ 0.27302823089499545,
+ 0.27302812159048634,
+ 0.2730280113088609,
+ 0.27302790004138483,
+ 0.2730277877792459,
+ 0.2730276745135525,
+ 0.2730275602353341,
+ 0.2730274449355394,
+ 0.27302732860503703,
+ 0.2730272112346131,
+ 0.2730270928149723,
+ 0.27302697333673537,
+ 0.27302685279043964,
+ 0.27302673116653814,
+ 0.273026608455398,
+ 0.27302648464730045,
+ 0.27302635973244,
+ 0.27302623370092344,
+ 0.27302610654276893,
+ 0.273025978247906,
+ 0.27302584880617325,
+ 0.2730257182073193,
+ 0.27302558644100083,
+ 0.273025453496782,
+ 0.2730253193641337,
+ 0.27302518403243276,
+ 0.2730250474909613,
+ 0.2730249097289053,
+ 0.2730247707353541,
+ 0.27302463049929965,
+ 0.2730244890096356,
+ 0.2730243462551563,
+ 0.27302420222455553,
+ 0.27302405690642667,
+ 0.2730239102892609,
+ 0.27302376236144604,
+ 0.2730236131112671,
+ 0.2730234625269036,
+ 0.2730233105964297,
+ 0.27302315730781285,
+ 0.2730230026489131,
+ 0.273022846607482,
+ 0.2730226891711615,
+ 0.27302253032748314,
+ 0.27302237006386704,
+ 0.27302220836762114,
+ 0.27302204522593954,
+ 0.27302188062590205,
+ 0.27302171455447294,
+ 0.27302154699850006,
+ 0.2730213779447138,
+ 0.27302120737972585,
+ 0.27302103529002825,
+ 0.2730208616619922,
+ 0.27302068648186745,
+ 0.27302050973578046,
+ 0.2730203314097337,
+ 0.27302015148960496,
+ 0.27301996996114547,
+ 0.2730197868099792,
+ 0.2730196020216016,
+ 0.2730194155813786,
+ 0.27301922747454527,
+ 0.2730190376862047,
+ 0.2730188462013271,
+ 0.2730186530047478,
+ 0.2730184580811672,
+ 0.2730182614151484,
+ 0.2730180629911172,
+ 0.2730178627933596,
+ 0.2730176608060215,
+ 0.27301745701310726,
+ 0.2730172513984779,
+ 0.2730170439458502,
+ 0.273016834638796,
+ 0.2730166234607397,
+ 0.2730164103949576,
+ 0.2730161954245771,
+ 0.2730159785325743,
+ 0.2730157597017732,
+ 0.2730155389148447,
+ 0.2730153161543044,
+ 0.2730150914025118,
+ 0.27301486464166885,
+ 0.27301463585381824,
+ 0.27301440502084234,
+ 0.2730141721244617,
+ 0.2730139371462333,
+ 0.27301370006754927,
+ 0.2730134608696359,
+ 0.2730132195335512,
+ 0.27301297604018393,
+ 0.2730127303702527,
+ 0.27301248250430293,
+ 0.2730122324227068,
+ 0.2730119801056609,
+ 0.27301172553318515,
+ 0.27301146868512,
+ 0.27301120954112695,
+ 0.273010948080685,
+ 0.27301068428308983,
+ 0.27301041812745264,
+ 0.2730101495926972,
+ 0.2730098786575594,
+ 0.2730096053005852,
+ 0.2730093295001285,
+ 0.27300905123435015,
+ 0.27300877048121547,
+ 0.2730084872184933,
+ 0.27300820142375337,
+ 0.2730079130743654,
+ 0.2730076221474966,
+ 0.2730073286201103,
+ 0.27300703246896396,
+ 0.2730067336706075,
+ 0.273006432201381,
+ 0.27300612803741314,
+ 0.2730058211546196,
+ 0.2730055115287008,
+ 0.2730051991351397,
+ 0.27300488394920075,
+ 0.2730045659459267,
+ 0.27300424510013777,
+ 0.2730039213864293,
+ 0.27300359477916913,
+ 0.2730032652524965,
+ 0.2730029327803194,
+ 0.27300259733631294,
+ 0.27300225889391666,
+ 0.2730019174263329,
+ 0.27300157290652455,
+ 0.2730012253072132,
+ 0.2730008746008764,
+ 0.2730005207597456,
+ 0.27300016375580516,
+ 0.27299980356078785,
+ 0.2729994401461745,
+ 0.2729990734831912,
+ 0.2729987035428068,
+ 0.2729983302957309,
+ 0.27299795371241126,
+ 0.2729975737630315,
+ 0.2729971904175094,
+ 0.2729968036454933,
+ 0.27299641341636083,
+ 0.27299601969921555,
+ 0.2729956224628857,
+ 0.27299522167592055,
+ 0.2729948173065886,
+ 0.27299440932287455,
+ 0.2729939976924774,
+ 0.27299358238280724,
+ 0.27299316336098356,
+ 0.2729927405938314,
+ 0.27299231404788016,
+ 0.2729918836893595,
+ 0.2729914494841981,
+ 0.27299101139801973,
+ 0.27299056939614125,
+ 0.2729901234435696,
+ 0.2729896735049994,
+ 0.27298921954480954,
+ 0.2729887615270608,
+ 0.27298829941549313,
+ 0.27298783317352204,
+ 0.2729873627642369,
+ 0.2729868881503967,
+ 0.27298640929442847,
+ 0.2729859261584229,
+ 0.2729854387041324,
+ 0.2729849468929677,
+ 0.2729844506859948,
+ 0.2729839500439321,
+ 0.2729834449271468,
+ 0.2729829352956522,
+ 0.2729824211091043,
+ 0.2729819023267991,
+ 0.2729813789076688,
+ 0.2729808508102785,
+ 0.2729803179928237,
+ 0.2729797804131263,
+ 0.2729792380286312,
+ 0.2729786907964036,
+ 0.2729781386731251,
+ 0.27297758161509,
+ 0.27297701957820286,
+ 0.2729764525179741,
+ 0.2729758803895166,
+ 0.27297530314754276,
+ 0.27297472074635987,
+ 0.2729741331398678,
+ 0.2729735402815542,
+ 0.27297294212449136,
+ 0.27297233862133286,
+ 0.272971729724309,
+ 0.2729711153852238,
+ 0.2729704955554503,
+ 0.2729698701859277,
+ 0.2729692392271571,
+ 0.2729686026291972,
+ 0.2729679603416611,
+ 0.2729673123137115,
+ 0.2729666584940574,
+ 0.2729659988309496,
+ 0.2729653332721768,
+ 0.2729646617650616,
+ 0.27296398425645596,
+ 0.27296330069273744,
+ 0.27296261101980446,
+ 0.27296191518307267,
+ 0.2729612131274699,
+ 0.2729605047974328,
+ 0.27295979013690125,
+ 0.2729590690893147,
+ 0.272958341597608,
+ 0.2729576076042057,
+ 0.27295686705101896,
+ 0.27295611987943974,
+ 0.272955366030337,
+ 0.2729546054440516,
+ 0.2729538380603918,
+ 0.27295306381862816,
+ 0.2729522826574894,
+ 0.2729514945151568,
+ 0.27295069932926025,
+ 0.27294989703687206,
+ 0.2729490875745034,
+ 0.2729482708780981,
+ 0.2729474468830281,
+ 0.2729466155240888,
+ 0.2729457767354931,
+ 0.27294493045086665,
+ 0.27294407660324255,
+ 0.2729432151250562,
+ 0.27294234594813954,
+ 0.2729414690037162,
+ 0.2729405842223957,
+ 0.27293969153416825,
+ 0.2729387908683989,
+ 0.27293788215382236,
+ 0.27293696531853684,
+ 0.2729360402899993,
+ 0.2729351069950186,
+ 0.2729341653597506,
+ 0.2729332153096918,
+ 0.272932256769674,
+ 0.27293128966385755,
+ 0.27293031391572636,
+ 0.272929329448081,
+ 0.2729283361830334,
+ 0.27292733404199976,
+ 0.27292632294569535,
+ 0.27292530281412786,
+ 0.2729242735665907,
+ 0.27292323512165717,
+ 0.27292218739717383,
+ 0.272921130310254,
+ 0.2729200637772713,
+ 0.2729189877138533,
+ 0.2729179020348741,
+ 0.27291680665444845,
+ 0.2729157014859249,
+ 0.2729145864418782,
+ 0.2729134614341031,
+ 0.27291232637360757,
+ 0.2729111811706055,
+ 0.27291002573450873,
+ 0.27290885997392195,
+ 0.2729076837966336,
+ 0.27290649710960935,
+ 0.2729052998189853,
+ 0.27290409183005937,
+ 0.27290287304728506,
+ 0.27290164337426315,
+ 0.2729004027137342,
+ 0.27289915096757145,
+ 0.27289788803677223,
+ 0.2728966138214509,
+ 0.27289532822083057,
+ 0.2728940311332355,
+ 0.27289272245608287,
+ 0.27289140208587437,
+ 0.27289006991818865,
+ 0.272888725847673,
+ 0.2728873697680349,
+ 0.2728860015720334,
+ 0.27288462115147144,
+ 0.2728832283971864,
+ 0.27288182319904225,
+ 0.27288040544592046,
+ 0.27287897502571146,
+ 0.27287753182530583,
+ 0.27287607573058525,
+ 0.2728746066264135,
+ 0.2728731243966279,
+ 0.27287162892402944,
+ 0.2728701200903739,
+ 0.2728685977763628,
+ 0.27286706186163373,
+ 0.27286551222475075,
+ 0.27286394874319514,
+ 0.27286237129335594,
+ 0.2728607797505194,
+ 0.2728591739888601,
+ 0.2728575538814308,
+ 0.2728559193001522,
+ 0.27285427011580254,
+ 0.27285260619800894,
+ 0.27285092741523553,
+ 0.27284923363477354,
+ 0.2728475247227315,
+ 0.2728458005440243,
+ 0.27284406096236224,
+ 0.27284230584024094,
+ 0.27284053503893,
+ 0.2728387484184625,
+ 0.2728369458376239,
+ 0.2728351271539411,
+ 0.2728332922236705,
+ 0.27283144090178785,
+ 0.2728295730419761,
+ 0.27282768849661393,
+ 0.2728257871167648,
+ 0.27282386875216436,
+ 0.2728219332512092,
+ 0.2728199804609451,
+ 0.27281801022705454,
+ 0.27281602239384495,
+ 0.27281401680423634,
+ 0.27281199329974914,
+ 0.2728099517204914,
+ 0.27280789190514654,
+ 0.2728058136909611,
+ 0.27280371691373095,
+ 0.2728016014077895,
+ 0.2727994670059938,
+ 0.2727973135397119,
+ 0.27279514083881007,
+ 0.2727929487316381,
+ 0.2727907370450177,
+ 0.2727885056042272,
+ 0.2727862542329888,
+ 0.2727839827534549,
+ 0.2727816909861934,
+ 0.27277937875017433,
+ 0.27277704586275525,
+ 0.2727746921396672,
+ 0.2727723173950004,
+ 0.2727699214411889,
+ 0.2727675040889971,
+ 0.27276506514750376,
+ 0.27276260442408806,
+ 0.27276012172441383,
+ 0.2727576168524145,
+ 0.27275508961027806,
+ 0.2727525397984311,
+ 0.2727499672155235,
+ 0.27274737165841295,
+ 0.2727447529221481,
+ 0.2727421107999537,
+ 0.2727394450832136,
+ 0.2727367555614552,
+ 0.27273404202233187,
+ 0.2727313042516072,
+ 0.2727285420331385,
+ 0.2727257551488588,
+ 0.27272294337876085,
+ 0.2727201065008797,
+ 0.27271724429127486,
+ 0.27271435652401316,
+ 0.27271144297115163,
+ 0.2727085034027187,
+ 0.27270553758669636,
+ 0.2727025452890033,
+ 0.27269952627347493,
+ 0.2726964803018464,
+ 0.27269340713373275,
+ 0.27269030652661114,
+ 0.27268717823580124,
+ 0.27268402201444686,
+ 0.2726808376134958,
+ 0.2726776247816813,
+ 0.27267438326550164,
+ 0.2726711128092011,
+ 0.27266781315474947,
+ 0.2726644840418224,
+ 0.27266112520778074,
+ 0.27265773638765,
+ 0.27265431731410034,
+ 0.27265086771742486,
+ 0.27264738732551946,
+ 0.27264387586386096,
+ 0.272640333055486,
+ 0.2726367586209697,
+ 0.2726331522784032,
+ 0.27262951374337274,
+ 0.2726258427289368,
+ 0.2726221389456037,
+ 0.27261840210130966,
+ 0.2726146319013956,
+ 0.27261082804858444,
+ 0.2726069902429578,
+ 0.272603118181933,
+ 0.27259921156023925,
+ 0.2725952700698941,
+ 0.27259129340017907,
+ 0.27258728123761644,
+ 0.27258323326594386,
+ 0.2725791491660906,
+ 0.27257502861615224,
+ 0.27257087129136565,
+ 0.27256667686408453,
+ 0.27256244500375326,
+ 0.2725581753768811,
+ 0.27255386764701706,
+ 0.27254952147472333,
+ 0.2725451365175487,
+ 0.2725407124300029,
+ 0.27253624886352884,
+ 0.2725317454664761,
+ 0.2725272018840738,
+ 0.27252261775840264,
+ 0.2725179927283676,
+ 0.2725133264296696,
+ 0.2725086184947779,
+ 0.2725038685529008,
+ 0.27249907622995806,
+ 0.27249424114855053,
+ 0.2724893629279323,
+ 0.27248444118398046,
+ 0.2724794755291653,
+ 0.27247446557252136,
+ 0.27246941091961596,
+ 0.2724643111725194,
+ 0.2724591659297743,
+ 0.27245397478636385,
+ 0.2724487373336818,
+ 0.27244345315949964,
+ 0.2724381218479354,
+ 0.2724327429794215,
+ 0.2724273161306725,
+ 0.27242184087465204,
+ 0.27241631678054035,
+ 0.27241074341370086,
+ 0.2724051203356466,
+ 0.2723994471040063,
+ 0.27239372327249106,
+ 0.272387948390859,
+ 0.27238212200488093,
+ 0.27237624365630597,
+ 0.2723703128828252,
+ 0.27236432921803727,
+ 0.2723582921914113,
+ 0.2723522013282518,
+ 0.27234605614966156,
+ 0.27233985617250495,
+ 0.27233360090937075,
+ 0.2723272898685351,
+ 0.2723209225539231,
+ 0.2723144984650711,
+ 0.2723080170970885,
+ 0.27230147794061843,
+ 0.27229488048179934,
+ 0.272288224202225,
+ 0.2722815085789048,
+ 0.2722747330842247,
+ 0.2722678971859051,
+ 0.27226100034696166,
+ 0.2722540420256627,
+ 0.2722470216754895,
+ 0.2722399387450928,
+ 0.2722327926782515,
+ 0.27222558291383003,
+ 0.27221830888573545,
+ 0.27221097002287387,
+ 0.27220356574910715,
+ 0.2721960954832089,
+ 0.2721885586388201,
+ 0.27218095462440406,
+ 0.27217328284320164,
+ 0.2721655426931855,
+ 0.27215773356701434,
+ 0.27214985485198656,
+ 0.2721419059299936,
+ 0.2721338861774728,
+ 0.27212579496536005,
+ 0.2721176316590417,
+ 0.2721093956183068,
+ 0.2721010861972973,
+ 0.2720927027444603,
+ 0.2720842446024979,
+ 0.2720757111083168,
+ 0.272067101592979,
+ 0.2720584153816502,
+ 0.27204965179354856,
+ 0.27204081014189396,
+ 0.2720318897338549,
+ 0.27202288987049655,
+ 0.27201380984672763,
+ 0.27200464895124715,
+ 0.27199540646649034,
+ 0.27198608166857485,
+ 0.27197667382724483,
+ 0.27196718220581784,
+ 0.2719576060611266,
+ 0.27194794464346495,
+ 0.2719381971965301,
+ 0.2719283629573662,
+ 0.2719184411563061,
+ 0.27190843101691414,
+ 0.2718983317559268,
+ 0.2718881425831944,
+ 0.27187786270162123,
+ 0.2718674913071054,
+ 0.2718570275884792,
+ 0.27184647072744694,
+ 0.27183581989852434,
+ 0.2718250742689758,
+ 0.2718142329987529,
+ 0.27180329524043034,
+ 0.27179226013914287,
+ 0.2717811268325212,
+ 0.2717698944506271,
+ 0.27175856211588895,
+ 0.27174712894303493,
+ 0.27173559403902797,
+ 0.2717239565029983,
+ 0.271712215426176,
+ 0.27170036989182367,
+ 0.2716884189751678,
+ 0.27167636174332943,
+ 0.27166419725525487,
+ 0.27165192456164605,
+ 0.27163954270488844,
+ 0.2716270507189814,
+ 0.27161444762946535,
+ 0.27160173245334945,
+ 0.2715889041990383,
+ 0.2715759618662595,
+ 0.27156290444598746,
+ 0.2715497309203705,
+ 0.27153644026265406,
+ 0.2715230314371051,
+ 0.27150950339893576,
+ 0.27149585509422547,
+ 0.27148208545984287,
+ 0.2714681934233683,
+ 0.2714541779030136,
+ 0.27144003780754267,
+ 0.27142577203619084,
+ 0.27141137947858357,
+ 0.27139685901465566,
+ 0.27138220951456754,
+ 0.2713674298386224,
+ 0.2713525188371833,
+ 0.271337475350588,
+ 0.2713222982090637,
+ 0.2713069862326419,
+ 0.27129153823107105,
+ 0.2712759530037303,
+ 0.2712602293395411,
+ 0.27124436601687857,
+ 0.27122836180348253,
+ 0.2712122154563672,
+ 0.2711959257217309,
+ 0.27117949133486435,
+ 0.27116291102005824,
+ 0.27114618349051134,
+ 0.2711293074482357,
+ 0.2711122815839631,
+ 0.27109510457704983,
+ 0.2710777750953809,
+ 0.27106029179527275,
+ 0.27104265332137745,
+ 0.2710248583065829,
+ 0.27100690537191496,
+ 0.27098879312643753,
+ 0.27097052016715256,
+ 0.27095208507889773,
+ 0.2709334864342463,
+ 0.2709147227934019,
+ 0.27089579270409747,
+ 0.2708766947014892,
+ 0.27085742730805173,
+ 0.27083798903347284,
+ 0.27081837837454553,
+ 0.27079859381506133,
+ 0.27077863382570105,
+ 0.27075849686392683,
+ 0.2707381813738699,
+ 0.2707176857862217,
+ 0.2706970085181207,
+ 0.27067614797304057,
+ 0.2706551025406759,
+ 0.2706338705968286,
+ 0.27061245050329225,
+ 0.27059084060773564,
+ 0.27056903924358633,
+ 0.27054704472991287,
+ 0.27052485537130516,
+ 0.27050246945775586,
+ 0.27047988526453914,
+ 0.27045710105208937,
+ 0.2704341150658788,
+ 0.2704109255362943,
+ 0.27038753067851345,
+ 0.27036392869237874,
+ 0.2703401177622723,
+ 0.27031609605698825,
+ 0.2702918617296052,
+ 0.2702674129173574,
+ 0.270242747741505,
+ 0.27021786430720274,
+ 0.2701927607033688,
+ 0.27016743500255247,
+ 0.27014188526079946,
+ 0.2701161095175184,
+ 0.2700901057953445,
+ 0.2700638721000033,
+ 0.27003740642017343,
+ 0.2700107067273473,
+ 0.2699837709756924,
+ 0.26995659710191056,
+ 0.2699291830250963,
+ 0.26990152664659384,
+ 0.2698736258498549,
+ 0.26984547850029283,
+ 0.2698170824451376,
+ 0.2697884355132893,
+ 0.2697595355151703,
+ 0.26973038024257645,
+ 0.269700967468528,
+ 0.2696712949471183,
+ 0.26964136041336206,
+ 0.2696111615830431,
+ 0.2695806961525593,
+ 0.2695499617987689,
+ 0.2695189561788343,
+ 0.26948767693006387,
+ 0.26945612166975513,
+ 0.26942428799503476,
+ 0.2693921734826991,
+ 0.2693597756890517,
+ 0.2693270921497418,
+ 0.2692941203796001,
+ 0.26926085787247483,
+ 0.26922730210106555,
+ 0.26919345051675636,
+ 0.26915930054944803,
+ 0.2691248496073892,
+ 0.2690900950770058,
+ 0.2690550343227303,
+ 0.2690196646868293,
+ 0.26898398348922964,
+ 0.26894798802734377,
+ 0.2689116755758952,
+ 0.26887504338673995,
+ 0.26883808868869036,
+ 0.2688008086873345,
+ 0.26876320056485675,
+ 0.26872526147985665,
+ 0.2686869885671657,
+ 0.26864837893766463,
+ 0.268609429678098,
+ 0.26857013785088857,
+ 0.26853050049395005,
+ 0.2684905146205,
+ 0.2684501772188686,
+ 0.2684094852523105,
+ 0.2683684356588114,
+ 0.26832702535089614,
+ 0.26828525121543506,
+ 0.2682431101134484,
+ 0.2682005988799109,
+ 0.2681577143235536,
+ 0.26811445322666644,
+ 0.26807081234489766,
+ 0.26802678840705385,
+ 0.26798237811489833,
+ 0.2679375781429471,
+ 0.26789238513826547,
+ 0.2678467957202628,
+ 0.2678008064804862,
+ 0.26775441398241223,
+ 0.2677076147612395,
+ 0.26766040532367774,
+ 0.26761278214773726,
+ 0.26756474168251765,
+ 0.2675162803479935,
+ 0.26746739453480056,
+ 0.26741808060402084,
+ 0.26736833488696543,
+ 0.26731815368495726,
+ 0.2672675332691124,
+ 0.26721646988012,
+ 0.2671649597280222,
+ 0.26711299899199087,
+ 0.26706058382010567,
+ 0.26700771032912957,
+ 0.26695437460428323,
+ 0.2669005726990197,
+ 0.26684630063479603,
+ 0.2667915544008457,
+ 0.2667363299539488,
+ 0.26668062321820185,
+ 0.26662443008478615,
+ 0.2665677464117354,
+ 0.2665105680237019,
+ 0.26645289071172285,
+ 0.2663947102329837,
+ 0.266336022310583,
+ 0.26627682263329383,
+ 0.26621710685532607,
+ 0.266156870596087,
+ 0.2660961094399404,
+ 0.2660348189359664,
+ 0.26597299459771856,
+ 0.26591063190298136,
+ 0.26584772629352543,
+ 0.26578427317486414,
+ 0.2657202679160067,
+ 0.2656557058492124,
+ 0.26559058226974297,
+ 0.2655248924356149,
+ 0.26545863156734995,
+ 0.26539179484772585,
+ 0.2653243774215256,
+ 0.2652563743952865,
+ 0.2651877808370482,
+ 0.2651185917760995,
+ 0.265048802202726,
+ 0.2649784070679555,
+ 0.26490740128330326,
+ 0.26483577972051703,
+ 0.26476353721132095,
+ 0.2646906685471596,
+ 0.26461716847893996,
+ 0.2645430317167751,
+ 0.2644682529297251,
+ 0.26439282674553916,
+ 0.26431674775039615,
+ 0.26424001048864565,
+ 0.26416260946254755,
+ 0.26408453913201224,
+ 0.2640057939143399,
+ 0.2639263681839598,
+ 0.2638462562721685,
+ 0.26376545246686933,
+ 0.26368395101230996,
+ 0.2636017461088209,
+ 0.26351883191255365,
+ 0.26343520253521796,
+ 0.2633508520438206,
+ 0.2632657744604016,
+ 0.26317996376177366,
+ 0.26309341387925855,
+ 0.2630061186984253,
+ 0.2629180720588287,
+ 0.2628292677537463,
+ 0.2627396995299172,
+ 0.26264936108728065,
+ 0.2625582460787142,
+ 0.262466348109773,
+ 0.2623736607384294,
+ 0.26228017747481236,
+ 0.26218589178094814,
+ 0.2620907970705003,
+ 0.26199488670851184,
+ 0.26189815401114647,
+ 0.2618005922454316,
+ 0.2617021946290014,
+ 0.2616029543298408,
+ 0.26150286446603066,
+ 0.2614019181054928,
+ 0.2613001082657376,
+ 0.2611974279136111,
+ 0.26109386996504375,
+ 0.2609894272848008,
+ 0.26088409268623225,
+ 0.2607778589310265,
+ 0.26067071872896325,
+ 0.260562664737668,
+ 0.2604536895623696,
+ 0.2603437857556574,
+ 0.2602329458172413,
+ 0.2601211621937131,
+ 0.2600084272783083,
+ 0.25989473341067276,
+ 0.25978007287662813,
+ 0.25966443790794064,
+ 0.2595478206820927,
+ 0.2594302133220548,
+ 0.25931160789606145,
+ 0.2591919964173878,
+ 0.25907137084413084,
+ 0.25894972307899017,
+ 0.25882704496905384,
+ 0.25870332830558623,
+ 0.2585785648238177,
+ 0.25845274620273856,
+ 0.25832586406489483,
+ 0.2581979099761879,
+ 0.25806887544567686,
+ 0.2579387519253843,
+ 0.25780753081010555,
+ 0.25767520343722133,
+ 0.25754176108651433,
+ 0.2574071949799885,
+ 0.2572714962816934,
+ 0.25713465609755204,
+ 0.2569966654751925,
+ 0.2568575154037843,
+ 0.2567171968138785,
+ 0.2565757005772523,
+ 0.25643301750675906,
+ 0.25628913835618206,
+ 0.25614405382009303,
+ 0.2559977545337168,
+ 0.2558502310727997,
+ 0.25570147395348436,
+ 0.2555514736321885,
+ 0.2554002205054908,
+ 0.2552477049100217,
+ 0.2550939171223599,
+ 0.2549388473589346,
+ 0.2547824857759353,
+ 0.25462482246922585,
+ 0.25446584747426654,
+ 0.25430555076604244,
+ 0.2541439222589977,
+ 0.25398095180697805,
+ 0.2538166292031791,
+ 0.2536509441801038,
+ 0.25348388640952474,
+ 0.2533154455024569,
+ 0.2531456110091361,
+ 0.25297437241900667,
+ 0.25280171916071703,
+ 0.25262764060212267,
+ 0.2524521260503002,
+ 0.2522751647515673,
+ 0.2520967458915134,
+ 0.2519168585950391,
+ 0.25173549192640554,
+ 0.2515526348892921,
+ 0.2513682764268652,
+ 0.2511824054218564,
+ 0.25099501069665103,
+ 0.25080608101338764,
+ 0.25061560507406705,
+ 0.25042357152067357,
+ 0.25022996893530725,
+ 0.25003478584032623,
+ 0.2498380106985026,
+ 0.2496396319131888,
+ 0.24943963782849643,
+ 0.24923801672948837,
+ 0.2490347568423818,
+ 0.24882984633476593,
+ 0.2486232733158317,
+ 0.24841502583661534,
+ 0.2482050918902554,
+ 0.24799345941226397,
+ 0.2477801162808124,
+ 0.24756505031703072,
+ 0.24734824928532267,
+ 0.24712970089369504,
+ 0.2469093927941037,
+ 0.24668731258281368,
+ 0.24646344780077564,
+ 0.24623778593402038,
+ 0.24601031441406673,
+ 0.24578102061834936,
+ 0.24554989187066212,
+ 0.2453169154416189,
+ 0.24508207854913325,
+ 0.24484536835891502,
+ 0.24460677198498676,
+ 0.24436627649021775,
+ 0.2441238688868778,
+ 0.2438795361372102,
+ 0.2436332651540251,
+ 0.24338504280131282,
+ 0.2431348558948767,
+ 0.24288269120298867,
+ 0.24262853544706464,
+ 0.24237237530236178,
+ 0.24211419739869888,
+ 0.2418539883211966,
+ 0.24159173461104352,
+ 0.24132742276628277,
+ 0.24106103924262373,
+ 0.24079257045427616,
+ 0.24052200277481042,
+ 0.2402493225380404,
+ 0.23997451603893333,
+ 0.23969756953454313,
+ 0.23941846924497145,
+ 0.23913720135435354,
+ 0.23885375201187145,
+ 0.2385681073327946,
+ 0.23828025339954673,
+ 0.23799017626280217,
+ 0.2376978619426093,
+ 0.2374032964295431,
+ 0.23710646568588792,
+ 0.2368073556468475,
+ 0.23650595222178805,
+ 0.23620224129550904,
+ 0.23589620872954692,
+ 0.23558784036350908,
+ 0.23527712201644077,
+ 0.23496403948822236,
+ 0.23464857856100174,
+ 0.23433072500065777,
+ 0.23401046455829916,
+ 0.2336877829717961,
+ 0.23336266596734698,
+ 0.23303509926108032,
+ 0.23270506856069162,
+ 0.23237255956711728,
+ 0.2320375579762432,
+ 0.23170004948065195,
+ 0.23136001977140672,
+ 0.23101745453987196,
+ 0.23067233947957486,
+ 0.23032466028810278,
+ 0.22997440266904215,
+ 0.22962155233395548,
+ 0.22926609500440015,
+ 0.22890801641398584,
+ 0.22854730231047526,
+ 0.22818393845792503,
+ 0.22781791063886894,
+ 0.2274492046565447,
+ 0.22707780633716187,
+ 0.22670370153221492,
+ 0.22632687612084001,
+ 0.225947316012215,
+ 0.22556500714800642,
+ 0.22517993550485899,
+ 0.2247920870969346,
+ 0.22440144797849343,
+ 0.22400800424652526,
+ 0.223611742043426,
+ 0.2232126475597221,
+ 0.22281070703684405,
+ 0.222405906769947,
+ 0.22199823311078082,
+ 0.22158767247060965,
+ 0.22117421132318124,
+ 0.2207578362077462,
+ 0.2203385337321274,
+ 0.21991629057584172,
+ 0.21949109349327184,
+ 0.21906292931689,
+ 0.21863178496053434,
+ 0.2181976474227377,
+ 0.2177605037901086,
+ 0.21732034124076602,
+ 0.21687714704782754,
+ 0.2164309085829518,
+ 0.21598161331993374,
+ 0.21552924883835617,
+ 0.21507380282729477,
+ 0.21461526308907855,
+ 0.21415361754310575,
+ 0.21368885422971545,
+ 0.2132209613141143,
+ 0.2127499270903603,
+ 0.21227573998540195,
+ 0.2117983885631746,
+ 0.21131786152875212,
+ 0.21083414773255713,
+ 0.21034723617462733,
+ 0.20985711600893778,
+ 0.2093637765477824,
+ 0.20886720726621102,
+ 0.2083673978065249,
+ 0.2078643379828279,
+ 0.2073580177856373,
+ 0.2068484273865503,
+ 0.20633555714296775,
+ 0.20581939760287682,
+ 0.2052999395096884,
+ 0.20477717380713364,
+ 0.20425109164421631,
+ 0.20372168438022242,
+ 0.20318894358978615,
+ 0.20265286106801217,
+ 0.20211342883565434,
+ 0.20157063914435,
+ 0.20102448448190985,
+ 0.2004749575776623,
+ 0.19992205140785455,
+ 0.19936575920110602,
+ 0.1988060744439166,
+ 0.19824299088622788,
+ 0.19767650254703853,
+ 0.1971066037200703,
+ 0.19653328897948674,
+ 0.195956553185663,
+ 0.19537639149100647,
+ 0.19479279934582527,
+ 0.194205772504248,
+ 0.1936153070301902,
+ 0.19302139930336829,
+ 0.19242404602535965,
+ 0.19182324422570868,
+ 0.1912189912680767,
+ 0.19061128485643516,
+ 0.19000012304130107,
+ 0.18938550422601377,
+ 0.18876742717305098,
+ 0.18814589101038354,
+ 0.1875208952378681,
+ 0.18689243973367448,
+ 0.1862605247607478,
+ 0.18562515097330462,
+ 0.1849863194233584,
+ 0.18434403156727663,
+ 0.18369828927236428,
+ 0.18304909482347587,
+ 0.18239645092964943,
+ 0.1817403607307647,
+ 0.1810808278042217,
+ 0.18041785617163839,
+ 0.17975145030556425,
+ 0.17908161513620807,
+ 0.1784083560581803,
+ 0.17773167893724237,
+ 0.17705159011706598,
+ 0.17636809642599643,
+ 0.17568120518381966,
+ 0.1749909242085286,
+ 0.1742972618230873,
+ 0.1736002268621909,
+ 0.17289982867901624,
+ 0.1721960771519629,
+ 0.17148898269137935,
+ 0.1707785562462737,
+ 0.17006480931100332,
+ 0.16934775393194185,
+ 0.16862740271412066,
+ 0.16790376882783967,
+ 0.16717686601524584,
+ 0.16644670859687408,
+ 0.1657133114781496,
+ 0.1649766901558449,
+ 0.16423686072449062,
+ 0.1634938398827339,
+ 0.16274764493964203,
+ 0.16199829382094727,
+ 0.16124580507522696,
+ 0.16049019788001803,
+ 0.15973149204785791,
+ 0.15896970803225113,
+ 0.15820486693355476,
+ 0.15743699050477875,
+ 0.156666101157297,
+ 0.1558922219664649,
+ 0.15511537667713762,
+ 0.15433558970908445,
+ 0.15355288616229631,
+ 0.15276729182217821,
+ 0.15197883316462427,
+ 0.15118753736096893,
+ 0.15039343228281046,
+ 0.14959654650669957,
+ 0.148796909318689,
+ 0.14799455071874057,
+ 0.14718950142497964,
+ 0.14638179287779612,
+ 0.1455714572437842,
+ 0.14475852741951536,
+ 0.14394303703513966,
+ 0.1431250204578084,
+ 0.14230451279491468,
+ 0.1414815498971434,
+ 0.1406561683613261,
+ 0.13982840553309528,
+ 0.13899829950933143,
+ 0.13816588914039696,
+ 0.13733121403215048,
+ 0.1364943145477381,
+ 0.13565523180915143,
+ 0.13481400769854932,
+ 0.1339706848593369,
+ 0.13312530669699466,
+ 0.13227791737965214,
+ 0.13142856183840002,
+ 0.13057728576733574,
+ 0.12972413562333396,
+ 0.1288691586255379,
+ 0.12801240275456485,
+ 0.12715391675141968,
+ 0.12629375011611094,
+ 0.1254319531059616,
+ 0.12456857673361264,
+ 0.12370367276470846,
+ 0.12283729371526207,
+ 0.1219694928486926,
+ 0.12110032417253005,
+ 0.1202298424347814,
+ 0.11935810311995212,
+ 0.11848516244471888,
+ 0.11761107735324684,
+ 0.11673590551214635,
+ 0.11585970530506425,
+ 0.11498253582690578,
+ 0.1141044568776799,
+ 0.1132255289559638,
+ 0.11234581325198563,
+ 0.11146537164031423,
+ 0.11058426667215762,
+ 0.10970256156726245,
+ 0.10882032020541244,
+ 0.1079376071175204,
+ 0.10705448747631112,
+ 0.1061710270865923,
+ 0.10528729237510853,
+ 0.1044033503799764,
+ 0.10351926873969872,
+ 0.10263511568175339,
+ 0.10175096001075569,
+ 0.10086687109619308,
+ 0.0999829188597286,
+ 0.0990991737620716,
+ 0.09821570678941666,
+ 0.09733258943944725,
+ 0.09644989370690524,
+ 0.0955676920687235,
+ 0.09468605746872583,
+ 0.09380506330188954,
+ 0.09292478339817437,
+ 0.09204529200591798,
+ 0.09116666377479872,
+ 0.09028897373836853,
+ 0.08941229729615548,
+ 0.0885367101953427,
+ 0.08766228851202093,
+ 0.08678910863202219,
+ 0.08591724723133591,
+ 0.08504678125611229,
+ 0.08417778790225633,
+ 0.08331034459461771,
+ 0.08244452896578279,
+ 0.08158041883447176,
+ 0.08071809218354846,
+ 0.07985762713765027,
+ 0.07899910194044184,
+ 0.07814259493150351,
+ 0.07728818452285822,
+ 0.07643594917515001,
+ 0.07558596737347707,
+ 0.07473831760289264,
+ 0.07389307832358125,
+ 0.07305032794572068,
+ 0.07221014480404037,
+ 0.07137260713208529,
+ 0.07053779303620065,
+ 0.06970578046924374,
+ 0.06887664720403919,
+ 0.06805047080658876,
+ 0.06722732860904838,
+ 0.06640729768248697,
+ 0.06559045480943898,
+ 0.06477687645626856,
+ 0.06396663874535571,
+ 0.06315981742712297,
+ 0.06235648785191656,
+ 0.061556724941758796,
+ 0.06076060316198746,
+ 0.05996819649279906,
+ 0.05917957840071424,
+ 0.05839482180998089,
+ 0.057613999073934205,
+ 0.05683718194633152,
+ 0.056064441552680505,
+ 0.0552958483615795,
+ 0.05453147215608849,
+ 0.053771382005152406,
+ 0.053015646235093236,
+ 0.05226433240119334,
+ 0.05151750725938913,
+ 0.050775236738096176,
+ 0.050037585910185534,
+ 0.04930461896513245,
+ 0.0485763991813596,
+ 0.04785298889879366,
+ 0.04713444949165858,
+ 0.046420841341525736,
+ 0.04571222381064299,
+ 0.045008655215564214,
+ 0.04431019280109937,
+ 0.043616892714610285,
+ 0.042928809980668954,
+ 0.042245998476103816,
+ 0.041568510905453444,
+ 0.04089639877684988,
+ 0.04022971237835199,
+ 0.03956850075475203,
+ 0.03891281168487378,
+ 0.03826269165938518,
+ 0.0376181858591451,
+ 0.03697933813410503,
+ 0.03634619098278594,
+ 0.03571878553234914,
+ 0.0350971615192832,
+ 0.034481357270723025,
+ 0.03387140968642224,
+ 0.033267354221396435,
+ 0.03266922486925568,
+ 0.03207705414624387,
+ 0.03149087307600143,
+ 0.030910711175070108,
+ 0.03033659643915315,
+ 0.029768555330148997,
+ 0.029206612763972108,
+ 0.028650792099176363,
+ 0.028101115126394304,
+ 0.027557602058605475,
+ 0.027020271522247778,
+ 0.026489140549181733,
+ 0.025964224569520668,
+ 0.025445537405336463,
+ 0.024933091265251374,
+ 0.024426896739924445,
+ 0.02392696279844076,
+ 0.02343329678561267,
+ 0.0229459044201971,
+ 0.022464789794037366,
+ 0.02198995537213324,
+ 0.021521401993644152,
+ 0.021059128873828947,
+ 0.020603133606924215,
+ 0.02015341216996459,
+ 0.01970995892754364,
+ 0.019272766637517195,
+ 0.01884182645764742,
+ 0.01841712795318591,
+ 0.017998659105393666,
+ 0.017586406320993224,
+ 0.01718035444255059,
+ 0.01678048675977908,
+ 0.016386785021760886,
+ 0.015999229450078232,
+ 0.015617798752846466,
+ 0.015242470139640151,
+ 0.014873219337301962,
+ 0.014510020606625004,
+ 0.014152846759895428,
+ 0.013801669179284071,
+ 0.013456457836073722,
+ 0.01311718131070786,
+ 0.012783806813646204,
+ 0.012456300207011016,
+ 0.012134626027008764,
+ 0.011818747507108597,
+ 0.011508626601960668,
+ 0.011204224012035356,
+ 0.01090549920896377,
+ 0.010612410461559935,
+ 0.010324914862503023,
+ 0.010042968355659588,
+ 0.009766525764022123,
+ 0.009495540818242455,
+ 0.009229966185736243,
+ 0.008969753500334812,
+ 0.008714853392460057,
+ 0.008465215519797108,
+ 0.008220788598440476,
+ 0.007981520434486439,
+ 0.00774735795604647,
+ 0.007518247245654658,
+ 0.007294133573042181,
+ 0.007074961428251183,
+ 0.00686067455506118,
+ 0.0066512159846987984,
+ 0.006446528069803642,
+ 0.006246552518621342,
+ 0.0060512304293952055,
+ 0.005860502324927682,
+ 0.005674308187282484,
+ 0.005492587492598768,
+ 0.005315279245987591,
+ 0.005142322016481816,
+ 0.004973653972010262,
+ 0.004809212914366735,
+ 0.00464893631414494,
+ 0.004492761345609932,
+ 0.004340624921477697,
+ 0.004192463727573323,
+ 0.004048214257339583,
+ 0.003907812846167394,
+ 0.003771195705519732,
+ 0.0036382989568213317,
+ 0.00350905866508607,
+ 0.0033834108722553173,
+ 0.00326129163021949,
+ 0.0031426370334967407,
+ 0.0030273832515423263,
+ 0.0029154665606628822,
+ 0.0028068233755103754,
+ 0.00270139028013067,
+ 0.002599104058542855,
+ 0.0024999017248250053,
+ 0.0024037205526836196,
+ 0.002310498104483961,
+ 0.0022201722597194116,
+ 0.002132681242898533,
+ 0.0020479636508290893,
+ 0.0019659584792794476,
+ 0.001886605148997744,
+ 0.001809843531070656,
+ 0.0017356139716040602,
+ 0.0016638573157086662,
+ 0.0015945149307746483,
+ 0.0015275287290199258,
+ 0.0014628411892980368,
+ 0.0014003953781517536,
+ 0.0013401349701001848,
+ 0.0012820042671475443,
+ 0.0012259482175029127,
+ 0.001171912433501242,
+ 0.0011198432087166715,
+ 0.0010696875342605403,
+ 0.0010213931142569704,
+ 0.0009749083804903701,
+ 0.0009301825062199185,
+ 0.0008871654191572276,
+ 0.0008458078136043762,
+ 0.0008060611617504778,
+ 0.0007678777241261836,
+ 0.0007312105592162146,
+ 0.00069601353223139,
+ 0.0006622413230424497,
+ 0.0006298494332790769,
+ 0.0005987941925985463,
+ 0.0005690327641293822,
+ 0.0005405231490966111,
+ 0.0005132241906359023,
+ 0.00048709557680516537,
+ 0.0004620978428029895,
+ 0.000438192372404327,
+ 0.0004153413986247596,
+ 0.0003935080036255848,
+ 0.000372656117872977,
+ 0.00035275051856516106,
+ 0.0003337568273425959,
+ 0.00031564150729686735,
+ 0.00029837185929485285,
+ 0.0002819160176354258,
+ 0.00026624294505682715,
+ 0.0002513224271133571,
+ 0.00023712506594087714,
+ 0.00022362227343113828,
+ 0.00021078626383558134,
+ 0.00019859004581979626,
+ 0.00018700741399032034,
+ 0.00017601293991597805,
+ 0.00016558196266628142,
+ 0.0001556905788898953,
+ 0.0001463156324564276,
+ 0.0001374347036851158,
+ 0.0001290260981842081,
+ 0.00012106883532501406,
+ 0.00011354263637477432,
+ 0.00010642791231251655,
+ 9.970575135217969e-05,
+ 9.335790619722945e-05,
+ 8.736678105094911e-05,
+ 8.171541840647677e-05,
+ 7.638748564050273e-05,
+ 7.136726143436215e-05,
+ 6.663962204596346e-05,
+ 6.219002745575067e-05,
+ 5.800450740952693e-05,
+ 5.406964738060049e-05,
+ 5.0372574473288755e-05,
+ 4.690094328934984e-05,
+ 4.364292177842929e-05,
+ 4.058717709304307e-05,
+ 3.772286146807711e-05,
+ 3.503959814416249e-05,
+ 3.2527467353657444e-05,
+ 3.017699238730602e-05,
+ 2.797912575895039e-05,
+ 2.592523548497563e-05,
+ 2.4007091494412004e-05,
+ 2.2216852184890846e-05,
+ 2.0547051138869186e-05,
+ 1.899058401376147e-05,
+ 1.7540695618826587e-05,
+ 1.619096719085264e-05,
+ 1.4935303879885056e-05,
+ 1.376792245542065e-05,
+ 1.2683339242690919e-05,
+ 1.1676358297842216e-05,
+ 1.0742059830016063e-05,
+ 9.87578887753385e-06,
+ 9.07314424459744e-06,
+ 8.329967704141042e-06,
+ 7.64233347169459e-06,
+ 7.00653795437336e-06,
+ 6.419089778367544e-06,
+ 5.876700097588826e-06,
+ 5.3762731854332795e-06,
+ 4.914897310942366e-06,
+ 4.489835899993324e-06,
+ 4.098518981516843e-06,
+ 3.7385349181408384e-06,
+ 3.407622420079768e-06,
+ 3.103662840540086e-06,
+ 2.8246727503913854e-06,
+ 2.5687967893596396e-06,
+ 2.3343007905373924e-06,
+ 2.1195651745698445e-06,
+ 1.923078609474563e-06,
+ 1.743431931677584e-06,
+ 1.5793123235055203e-06,
+ 1.4294977420593947e-06,
+ 1.2928515941115397e-06,
+ 1.1683176514125039e-06,
+ 1.0549152005673953e-06,
+ 9.517344214441602e-07,
+ 8.579319879048111e-07,
+ 7.727268845070002e-07,
+ 6.95396432705127e-07,
+ 6.252725199875373e-07,
+ 5.617380253168527e-07,
+ 5.042234341952221e-07,
+ 4.5220363665204754e-07,
+ 4.0519490144897493e-07,
+ 3.6275201981367404e-07,
+ 3.244656120493832e-07,
+ 2.899595904202536e-07,
+ 2.588887717813045e-07,
+ 2.309366335063674e-07,
+ 2.0581320636520262e-07,
+ 1.832530981117892e-07,
+ 1.6301364166797942e-07,
+ 1.4487316191924534e-07,
+ 1.2862935528110167e-07,
+ 1.1409777634447599e-07,
+ 1.0111042606534422e-07,
+ 8.951443612670804e-08,
+ 7.917084426883639e-08,
+ 6.995345555555763e-08,
+ 6.174778471928671e-08,
+ 5.44500749046913e-08,
+ 4.796638830937513e-08,
+ 4.2211764399213476e-08,
+ 3.710944155500327e-08,
+ 3.2590138185404197e-08,
+ 2.859138951803456e-08,
+ 2.5056936455494135e-08,
+ 2.1936163055517095e-08,
+ 1.9183579363861627e-08,
+ 1.6758346494605578e-08,
+ 1.4623841014754195e-08,
+ 1.2747255848209397e-08,
+ 1.1099235067890139e-08,
+ 9.653540093883586e-09,
+ 8.386744959760696e-09,
+ 7.277958448404483e-09,
+ 6.30857103280038e-09,
+ 5.462024686079783e-09,
+ 4.723603748662541e-09,
+ 4.080245158567406e-09,
+ 3.5203664638491045e-09,
+ 3.0337101437053705e-09,
+ 2.61120286710977e-09,
+ 2.244828414952438e-09,
+ 1.927513083678211e-09,
+ 1.6530224754155709e-09,
+ 1.415868661703112e-09,
+ 1.21122678527394e-09,
+ 1.0348602370967184e-09,
+ 8.830536141405249e-10,
+ 7.525527272955878e-10,
+ 6.405109886998201e-10,
+ 5.444415635660352e-10,
+ 4.621747236462495e-10,
+ 3.918198878818538e-10,
+ 3.317318807463044e-10,
+ 2.804809804627051e-10,
+ 2.3682636784702884e-10,
+ 1.9969262215645748e-10,
+ 1.6814894318013936e-10,
+ 1.413908090593456e-10,
+ 1.1872380712483297e-10,
+ 9.954940054580033e-11,
+ 8.335241694588381e-11,
+ 6.969006650180584e-11,
+ 5.818231653668199e-11,
+ 4.850346738532795e-11,
+ 4.037479046888062e-11,
+ 3.355810419058886e-11,
+ 2.785017656744113e-11,
+ 2.307785555071594e-11,
+ 1.9093838864199033e-11,
+ 1.5773004996833233e-11,
+ 1.3009235816585907e-11,
+ 1.071266920800672e-11,
+ 8.807327255489258e-12,
+ 7.229071870394782e-12,
+ 5.923845460616505e-12,
+ 4.846159328446239e-12,
+ 3.9577970147249465e-12,
+ 3.2267038376234145e-12,
+ 2.6260374521792466e-12,
+ 2.1333574270585955e-12,
+ 1.729934639253469e-12,
+ 1.4001637633848964e-12,
+ 1.131064314403269e-12,
+ 9.118576221372145e-13,
+ 7.336088018082864e-13,
+ 5.88924262096613e-13,
+ 4.716965849299483e-13,
+ 3.7688973990161664e-13,
+ 3.0035858003423255e-13,
+ 2.386974214872213e-13,
+ 1.8911325299257658e-13,
+ 1.4931976491351618e-13,
+ 1.1744894500875744e-13,
+ 9.197746907442953e-14,
+ 7.166552924357205e-14,
+ 5.550609938269826e-14,
+ 4.268294328866231e-14,
+ 3.2535933936800604e-14,
+ 2.4532476756787607e-14,
+ 1.8244022024695964e-14,
+ 1.3326815529108162e-14,
+ 9.506176804580424e-15,
+ 6.563713864104261e-15,
+ 4.326986130592336e-15,
+ 2.6612148940589454e-15,
+ 1.4627187791696853e-15,
+ 6.538162069821416e-16,
+ 1.7899740606883023e-16,
+ 0.0
+ ],
+ "radial_grid": [
+ 1e-07,
+ 1.0089397933893211e-07,
+ 1.0179595066844862e-07,
+ 1.0270598543529407e-07,
+ 1.0362415572493222e-07,
+ 1.0455053426725598e-07,
+ 1.0548519444234838e-07,
+ 1.0642821028629534e-07,
+ 1.0737965649705005e-07,
+ 1.0833960844034995e-07,
+ 1.0930814215568664e-07,
+ 1.1028533436232903e-07,
+ 1.1127126246540047e-07,
+ 1.1226600456201005e-07,
+ 1.1326963944743901e-07,
+ 1.1428224662138204e-07,
+ 1.1530390629424462e-07,
+ 1.1633469939349683e-07,
+ 1.1737470757008348e-07,
+ 1.1842401320489201e-07,
+ 1.19482699415278e-07,
+ 1.2055085006164893e-07,
+ 1.2162854975410712e-07,
+ 1.227158838591516e-07,
+ 1.2381293850644038e-07,
+ 1.2491980059561266e-07,
+ 1.2603655780317264e-07,
+ 1.2716329858943425e-07,
+ 1.2830011220552835e-07,
+ 1.2944708870047249e-07,
+ 1.3060431892830386e-07,
+ 1.317718945552759e-07,
+ 1.3294990806711947e-07,
+ 1.3413845277636878e-07,
+ 1.3533762282975273e-07,
+ 1.365475132156526e-07,
+ 1.3776821977162612e-07,
+ 1.3899983919199906e-07,
+ 1.402424690355244e-07,
+ 1.4149620773311027e-07,
+ 1.4276115459561673e-07,
+ 1.4403740982172247e-07,
+ 1.4532507450586167e-07,
+ 1.4662425064623178e-07,
+ 1.479350411528731e-07,
+ 1.4925754985582055e-07,
+ 1.505918815133279e-07,
+ 1.5193814182016618e-07,
+ 1.5329643741599582e-07,
+ 1.5466687589381385e-07,
+ 1.560495658084763e-07,
+ 1.5744461668529738e-07,
+ 1.5885213902872482e-07,
+ 1.6027224433109333e-07,
+ 1.617050450814561e-07,
+ 1.6315065477449518e-07,
+ 1.6460918791951163e-07,
+ 1.6608076004949602e-07,
+ 1.6756548773027994e-07,
+ 1.6906348856976948e-07,
+ 1.7057488122726108e-07,
+ 1.720997854228408e-07,
+ 1.736383219468675e-07,
+ 1.7519061266954092e-07,
+ 1.7675678055055524e-07,
+ 1.7833694964883877e-07,
+ 1.7993124513238115e-07,
+ 1.8153979328814794e-07,
+ 1.8316272153208408e-07,
+ 1.8480015841920667e-07,
+ 1.8645223365378818e-07,
+ 1.8811907809963051e-07,
+ 1.8980082379043075e-07,
+ 1.9149760394024016e-07,
+ 1.93209552954016e-07,
+ 1.9493680643826798e-07,
+ 1.966795012118002e-07,
+ 1.9843777531654844e-07,
+ 2.002117680285149e-07,
+ 2.0200161986880056e-07,
+ 2.0380747261473581e-07,
+ 2.0562946931111126e-07,
+ 2.0746775428150838e-07,
+ 2.0932247313973153e-07,
+ 2.1119377280134243e-07,
+ 2.1308180149529772e-07,
+ 2.1498670877569003e-07,
+ 2.1690864553359485e-07,
+ 2.1884776400902267e-07,
+ 2.2080421780297828e-07,
+ 2.2277816188962757e-07,
+ 2.247697526285736e-07,
+ 2.2677914777724183e-07,
+ 2.2880650650337673e-07,
+ 2.3085198939764927e-07,
+ 2.3291575848637803e-07,
+ 2.3499797724436328e-07,
+ 2.370988106078363e-07,
+ 2.3921842498752416e-07,
+ 2.4135698828183144e-07,
+ 2.435146698901398e-07,
+ 2.4569164072622645e-07,
+ 2.4788807323180224e-07,
+ 2.501041413901714e-07,
+ 2.523400207400131e-07,
+ 2.545958883892859e-07,
+ 2.5687192302925677e-07,
+ 2.5916830494865594e-07,
+ 2.6148521604795753e-07,
+ 2.6382283985378826e-07,
+ 2.661813615334651e-07,
+ 2.685609679096625e-07,
+ 2.7096184747521096e-07,
+ 2.7338419040802814e-07,
+ 2.7582818858618274e-07,
+ 2.7829403560309393e-07,
+ 2.8078192678286597e-07,
+ 2.8329205919576027e-07,
+ 2.858246316738058e-07,
+ 2.8837984482654836e-07,
+ 2.9095790105694223e-07,
+ 2.935590045773819e-07,
+ 2.9618336142587844e-07,
+ 2.988311794823804e-07,
+ 3.0150266848524007e-07,
+ 3.0419804004782715e-07,
+ 3.0691750767529115e-07,
+ 3.0966128678147364e-07,
+ 3.1242959470597137e-07,
+ 3.1522265073135203e-07,
+ 3.180406761005245e-07,
+ 3.2088389403426327e-07,
+ 3.237525297488904e-07,
+ 3.266468104741155e-07,
+ 3.2956696547103487e-07,
+ 3.3251322605029153e-07,
+ 3.3548582559039773e-07,
+ 3.384849995562217e-07,
+ 3.415109855176388e-07,
+ 3.4456402316834996e-07,
+ 3.4764435434486827e-07,
+ 3.5075222304567536e-07,
+ 3.5388787545054886e-07,
+ 3.570515599400625e-07,
+ 3.602435271152615e-07,
+ 3.6346402981751226e-07,
+ 3.667133231485309e-07,
+ 3.699916644905902e-07,
+ 3.732993135269071e-07,
+ 3.7663653226221295e-07,
+ 3.800035850435076e-07,
+ 3.834007385809979e-07,
+ 3.868282619692252e-07,
+ 3.902864267083803e-07,
+ 3.9377550672580964e-07,
+ 3.9729577839771365e-07,
+ 4.008475205710387e-07,
+ 4.0443101458556547e-07,
+ 4.0804654429619394e-07,
+ 4.116943960954284e-07,
+ 4.15374858936063e-07,
+ 4.1908822435406977e-07,
+ 4.228347864916926e-07,
+ 4.26614842120746e-07,
+ 4.304286906661234e-07,
+ 4.342766342295146e-07,
+ 4.381589776133363e-07,
+ 4.420760283448757e-07,
+ 4.4602809670065047e-07,
+ 4.5001549573098654e-07,
+ 4.540385412848145e-07,
+ 4.5809755203468957e-07,
+ 4.621928495020335e-07,
+ 4.6632475808260335e-07,
+ 4.70493605072187e-07,
+ 4.7469972069252913e-07,
+ 4.789434381174888e-07,
+ 4.832250934994303e-07,
+ 4.875450259958507e-07,
+ 4.919035777962448e-07,
+ 4.963010941492112e-07,
+ 5.00737923389799e-07,
+ 5.052144169671016e-07,
+ 5.097309294720938e-07,
+ 5.142878186657209e-07,
+ 5.188854455072373e-07,
+ 5.235241741827978e-07,
+ 5.282043721343071e-07,
+ 5.329264100885238e-07,
+ 5.376906620864279e-07,
+ 5.424975055128478e-07,
+ 5.473473211263549e-07,
+ 5.522404930894229e-07,
+ 5.571774089988593e-07,
+ 5.621584599165062e-07,
+ 5.671840404002188e-07,
+ 5.722545485351172e-07,
+ 5.773703859651205e-07,
+ 5.825319579247613e-07,
+ 5.877396732712854e-07,
+ 5.929939445170377e-07,
+ 5.982951878621386e-07,
+ 6.036438232274513e-07,
+ 6.090402742878446e-07,
+ 6.144849685057534e-07,
+ 6.199783371650384e-07,
+ 6.255208154051489e-07,
+ 6.311128422555904e-07,
+ 6.367548606707026e-07,
+ 6.424473175647447e-07,
+ 6.481906638472972e-07,
+ 6.53985354458979e-07,
+ 6.598318484074843e-07,
+ 6.657306088039409e-07,
+ 6.716821028995952e-07,
+ 6.776868021228224e-07,
+ 6.837451821164703e-07,
+ 6.898577227755353e-07,
+ 6.960249082851762e-07,
+ 7.022472271590668e-07,
+ 7.085251722780925e-07,
+ 7.14859240929392e-07,
+ 7.212499348457477e-07,
+ 7.2769776024533e-07,
+ 7.342032278717952e-07,
+ 7.407668530347417e-07,
+ 7.473891556505298e-07,
+ 7.540706602834646e-07,
+ 7.60811896187348e-07,
+ 7.676133973474005e-07,
+ 7.744757025225612e-07,
+ 7.813993552881623e-07,
+ 7.883849040789871e-07,
+ 7.95432902232713e-07,
+ 8.025439080337416e-07,
+ 8.097184847574217e-07,
+ 8.169572007146673e-07,
+ 8.242606292969746e-07,
+ 8.316293490218413e-07,
+ 8.390639435785922e-07,
+ 8.46565001874614e-07,
+ 8.541331180820033e-07,
+ 8.617688916846331e-07,
+ 8.694729275256381e-07,
+ 8.772458358553256e-07,
+ 8.850882323795144e-07,
+ 8.930007383083066e-07,
+ 9.009839804052942e-07,
+ 9.090385910372059e-07,
+ 9.171652082239982e-07,
+ 9.253644756893943e-07,
+ 9.33637042911875e-07,
+ 9.419835651761239e-07,
+ 9.504047036249348e-07,
+ 9.589011253115806e-07,
+ 9.67473503252654e-07,
+ 9.761225164813754e-07,
+ 9.84848850101383e-07,
+ 9.936531953409999e-07,
+ 1.0025362496079874e-06,
+ 1.0114987165447876e-06,
+ 1.0205413060842615e-06,
+ 1.0296647345059229e-06,
+ 1.038869724492676e-06,
+ 1.0481570051880614e-06,
+ 1.0575273122540125e-06,
+ 1.0669813879291274e-06,
+ 1.0765199810874652e-06,
+ 1.086143847297863e-06,
+ 1.0958537488837881e-06,
+ 1.1056504549837224e-06,
+ 1.1155347416120858e-06,
+ 1.1255073917207078e-06,
+ 1.1355691952608446e-06,
+ 1.1457209492457539e-06,
+ 1.1559634578138283e-06,
+ 1.166297532292289e-06,
+ 1.1767239912614575e-06,
+ 1.187243660619592e-06,
+ 1.1978573736483123e-06,
+ 1.2085659710786035e-06,
+ 1.2193703011574101e-06,
+ 1.230271219714832e-06,
+ 1.2412695902319107e-06,
+ 1.2523662839090316e-06,
+ 1.26356217973493e-06,
+ 1.2748581645563204e-06,
+ 1.2862551331481436e-06,
+ 1.2977539882844413e-06,
+ 1.3093556408098723e-06,
+ 1.3210610097118544e-06,
+ 1.332871022193367e-06,
+ 1.3447866137463886e-06,
+ 1.356808728226006e-06,
+ 1.3689383179251744e-06,
+ 1.38117634365015e-06,
+ 1.393523774796601e-06,
+ 1.4059815894263892e-06,
+ 1.41855077434505e-06,
+ 1.4312323251799568e-06,
+ 1.4440272464591831e-06,
+ 1.456936551691079e-06,
+ 1.469961263444547e-06,
+ 1.483102413430047e-06,
+ 1.496361042581315e-06,
+ 1.5097382011378208e-06,
+ 1.523234948727959e-06,
+ 1.53685235445298e-06,
+ 1.5505914969716818e-06,
+ 1.5644534645858465e-06,
+ 1.5784393553264521e-06,
+ 1.5925502770406436e-06,
+ 1.6067873474794928e-06,
+ 1.6211516943865354e-06,
+ 1.6356444555870985e-06,
+ 1.6502667790784365e-06,
+ 1.6650198231206579e-06,
+ 1.6799047563284801e-06,
+ 1.6949227577637952e-06,
+ 1.7100750170290615e-06,
+ 1.725362734361542e-06,
+ 1.7407871207283679e-06,
+ 1.7563493979224716e-06,
+ 1.7720507986593567e-06,
+ 1.7878925666747524e-06,
+ 1.8038759568231284e-06,
+ 1.8200022351770908e-06,
+ 1.8362726791276773e-06,
+ 1.8526885774855337e-06,
+ 1.8692512305830102e-06,
+ 1.885961950377156e-06,
+ 1.902822060553649e-06,
+ 1.919832896631641e-06,
+ 1.93699580606955e-06,
+ 1.9543121483717938e-06,
+ 1.9717832951964777e-06,
+ 1.989410630464049e-06,
+ 2.007195550466917e-06,
+ 2.0251394639800552e-06,
+ 2.0432437923725986e-06,
+ 2.061509969720422e-06,
+ 2.079939442919749e-06,
+ 2.098533671801751e-06,
+ 2.117294129248192e-06,
+ 2.1362223013080937e-06,
+ 2.155319687315448e-06,
+ 2.174587800007985e-06,
+ 2.1940281656469943e-06,
+ 2.2136423241382308e-06,
+ 2.233431829153883e-06,
+ 2.253398248255652e-06,
+ 2.273543163018916e-06,
+ 2.2938681691580087e-06,
+ 2.314374876652622e-06,
+ 2.335064909875332e-06,
+ 2.3559399077202704e-06,
+ 2.377001523732947e-06,
+ 2.3982514262412203e-06,
+ 2.4196912984874623e-06,
+ 2.441322838761878e-06,
+ 2.463147760537041e-06,
+ 2.485167792603611e-06,
+ 2.507384679207282e-06,
+ 2.5298001801869454e-06,
+ 2.5524160711140838e-06,
+ 2.575234143433427e-06,
+ 2.598256204604847e-06,
+ 2.621484078246537e-06,
+ 2.6449196042794555e-06,
+ 2.6685646390730785e-06,
+ 2.6924210555924408e-06,
+ 2.716490743546495e-06,
+ 2.7407756095378045e-06,
+ 2.7652775772135627e-06,
+ 2.7899985874179756e-06,
+ 2.8149405983459897e-06,
+ 2.840105585698414e-06,
+ 2.8654955428384157e-06,
+ 2.8911124809494114e-06,
+ 2.9169584291943878e-06,
+ 2.943035434876624e-06,
+ 2.9693455636018714e-06,
+ 2.9958908994419705e-06,
+ 3.0226735450999282e-06,
+ 3.04969562207649e-06,
+ 3.0769592708381702e-06,
+ 3.104466650986821e-06,
+ 3.13221994143068e-06,
+ 3.1602213405569815e-06,
+ 3.1884730664060854e-06,
+ 3.2169773568471705e-06,
+ 3.24573646975551e-06,
+ 3.2747526831913074e-06,
+ 3.304028295580164e-06,
+ 3.333565625895121e-06,
+ 3.363367013840366e-06,
+ 3.393434820036558e-06,
+ 3.423771426207813e-06,
+ 3.454379235370373e-06,
+ 3.4852606720229444e-06,
+ 3.5164181823387556e-06,
+ 3.5478542343593175e-06,
+ 3.5795713181899174e-06,
+ 3.6115719461968762e-06,
+ 3.643858653206544e-06,
+ 3.6764339967061016e-06,
+ 3.70930055704613e-06,
+ 3.7424609376450154e-06,
+ 3.775917765195168e-06,
+ 3.8096736898710792e-06,
+ 3.843731385539261e-06,
+ 3.87809354997003e-06,
+ 3.912762905051222e-06,
+ 3.94774219700378e-06,
+ 3.983034196599298e-06,
+ 4.0186416993794976e-06,
+ 4.05456752587766e-06,
+ 4.090814521842059e-06,
+ 4.12738555846136e-06,
+ 4.164283532592072e-06,
+ 4.201511366987998e-06,
+ 4.239072010531754e-06,
+ 4.276968438468365e-06,
+ 4.315203652640918e-06,
+ 4.353780681728373e-06,
+ 4.3927025814854425e-06,
+ 4.431972434984659e-06,
+ 4.47159335286059e-06,
+ 4.511568473556225e-06,
+ 4.551900963571594e-06,
+ 4.5925940177145744e-06,
+ 4.633650859353977e-06,
+ 4.67507474067485e-06,
+ 4.716868942936117e-06,
+ 4.759036776730473e-06,
+ 4.801581582246623e-06,
+ 4.84450672953388e-06,
+ 4.887815618769088e-06,
+ 4.93151168052598e-06,
+ 4.975598376046907e-06,
+ 5.020079197517007e-06,
+ 5.06495766834084e-06,
+ 5.1102373434214635e-06,
+ 5.155921809442047e-06,
+ 5.202014685149953e-06,
+ 5.248519621643407e-06,
+ 5.2954403026606984e-06,
+ 5.3427804448719684e-06,
+ 5.390543798173631e-06,
+ 5.438734145985389e-06,
+ 5.4873553055499465e-06,
+ 5.536411128235356e-06,
+ 5.5859054998401185e-06,
+ 5.635842340900964e-06,
+ 5.686225607003404e-06,
+ 5.737059289095084e-06,
+ 5.7883474138018785e-06,
+ 5.840094043746878e-06,
+ 5.8923032778721824e-06,
+ 5.944979251763578e-06,
+ 5.998126137978147e-06,
+ 6.051748146374758e-06,
+ 6.1058495244475575e-06,
+ 6.160434557662402e-06,
+ 6.215507569796337e-06,
+ 6.27107292328008e-06,
+ 6.327135019543569e-06,
+ 6.383698299364629e-06,
+ 6.440767243220707e-06,
+ 6.498346371643811e-06,
+ 6.556440245578551e-06,
+ 6.615053466743451e-06,
+ 6.674190677995453e-06,
+ 6.733856563697664e-06,
+ 6.794055850090447e-06,
+ 6.854793305665763e-06,
+ 6.916073741544916e-06,
+ 6.977902011859639e-06,
+ 7.040283014136591e-06,
+ 7.103221689685321e-06,
+ 7.166723023989653e-06,
+ 7.230792047102612e-06,
+ 7.295433834044856e-06,
+ 7.360653505206677e-06,
+ 7.4264562267536105e-06,
+ 7.4928472110356236e-06,
+ 7.559831717000035e-06,
+ 7.627415050608051e-06,
+ 7.69560256525509e-06,
+ 7.764399662194797e-06,
+ 7.833811790966931e-06,
+ 7.903844449829007e-06,
+ 7.974503186191809e-06,
+ 8.04579359705885e-06,
+ 8.117721329469678e-06,
+ 8.19029208094722e-06,
+ 8.263511599949084e-06,
+ 8.337385686322886e-06,
+ 8.411920191765699e-06,
+ 8.487121020287541e-06,
+ 8.562994128679081e-06,
+ 8.63954552698344e-06,
+ 8.716781278972303e-06,
+ 8.79470750262622e-06,
+ 8.873330370619209e-06,
+ 8.952656110807737e-06,
+ 9.032691006724001e-06,
+ 9.113441398073695e-06,
+ 9.194913681238158e-06,
+ 9.277114309781067e-06,
+ 9.36004979495963e-06,
+ 9.443726706240324e-06,
+ 9.52815167181933e-06,
+ 9.613331379147507e-06,
+ 9.699272575460161e-06,
+ 9.78598206831149e-06,
+ 9.873466726113793e-06,
+ 9.96173347868159e-06,
+ 1.0050789317780485e-05,
+ 1.0140641297681042e-05,
+ 1.0231296535717526e-05,
+ 1.0322762212851716e-05,
+ 1.0415045574241707e-05,
+ 1.0508153929815788e-05,
+ 1.0602094654851527e-05,
+ 1.0696875190559924e-05,
+ 1.0792503044674888e-05,
+ 1.08889857920479e-05,
+ 1.0986331075248059e-05,
+ 1.1084546605167461e-05,
+ 1.1183640161631955e-05,
+ 1.1283619594017462e-05,
+ 1.1384492821871673e-05,
+ 1.1486267835541412e-05,
+ 1.1588952696805563e-05,
+ 1.1692555539513618e-05,
+ 1.1797084570230036e-05,
+ 1.1902548068884239e-05,
+ 1.2008954389426525e-05,
+ 1.2116311960489785e-05,
+ 1.2224629286057127e-05,
+ 1.2333914946135513e-05,
+ 1.244417759743543e-05,
+ 1.2555425974056526e-05,
+ 1.266766888817951e-05,
+ 1.2780915230764158e-05,
+ 1.2895173972253622e-05,
+ 1.3010454163284924e-05,
+ 1.3126764935405915e-05,
+ 1.3244115501798634e-05,
+ 1.3362515158009025e-05,
+ 1.34819732826833e-05,
+ 1.3602499338310829e-05,
+ 1.3724102871973709e-05,
+ 1.3846793516102948e-05,
+ 1.3970580989241492e-05,
+ 1.4095475096814093e-05,
+ 1.4221485731903936e-05,
+ 1.4348622876036325e-05,
+ 1.4476896599969382e-05,
+ 1.4606317064491678e-05,
+ 1.4736894521227157e-05,
+ 1.4868639313447136e-05,
+ 1.5001561876889695e-05,
+ 1.513567274058621e-05,
+ 1.527098252769542e-05,
+ 1.5407501956344955e-05,
+ 1.5545241840480246e-05,
+ 1.5684213090721176e-05,
+ 1.5824426715226298e-05,
+ 1.596589382056488e-05,
+ 1.6108625612596574e-05,
+ 1.62526333973591e-05,
+ 1.6397928581963877e-05,
+ 1.6544522675499483e-05,
+ 1.6692427289943396e-05,
+ 1.6841654141081743e-05,
+ 1.6992215049437424e-05,
+ 1.7144121941206316e-05,
+ 1.7297386849202012e-05,
+ 1.7452021913809046e-05,
+ 1.760803938394441e-05,
+ 1.776545161802791e-05,
+ 1.7924271084961045e-05,
+ 1.8084510365114785e-05,
+ 1.8246182151325955e-05,
+ 1.8409299249902716e-05,
+ 1.8573874581639037e-05,
+ 1.8739921182838063e-05,
+ 1.8907452206344802e-05,
+ 1.9076480922587976e-05,
+ 1.9247020720631246e-05,
+ 1.9419085109233675e-05,
+ 1.9592687717919855e-05,
+ 1.9767842298059556e-05,
+ 1.9944562723956897e-05,
+ 2.0122862993949412e-05,
+ 2.0302757231516944e-05,
+ 2.048425968640026e-05,
+ 2.0667384735729885e-05,
+ 2.0852146885164902e-05,
+ 2.1038560770042063e-05,
+ 2.1226641156534924e-05,
+ 2.141640294282359e-05,
+ 2.160786116027489e-05,
+ 2.1801030974632893e-05,
+ 2.1995927687220308e-05,
+ 2.219256673615049e-05,
+ 2.2390963697550407e-05,
+ 2.25911342867943e-05,
+ 2.279309435974864e-05,
+ 2.2996859914028098e-05,
+ 2.320244709026268e-05,
+ 2.3409872173376292e-05,
+ 2.3619151593876675e-05,
+ 2.3830301929157e-05,
+ 2.404333990480881e-05,
+ 2.4258282395947007e-05,
+ 2.4475146428546584e-05,
+ 2.469394918079118e-05,
+ 2.491470798443386e-05,
+ 2.513744032616995e-05,
+ 2.5362163849022304e-05,
+ 2.5588896353738686e-05,
+ 2.5817655800201843e-05,
+ 2.6048460308852262e-05,
+ 2.6281328162123345e-05,
+ 2.6516277805889683e-05,
+ 2.675332785092816e-05,
+ 2.6992497074392242e-05,
+ 2.723380442129917e-05,
+ 2.7477269006030746e-05,
+ 2.7722910113847465e-05,
+ 2.7970747202415997e-05,
+ 2.8220799903350508e-05,
+ 2.8473088023767843e-05,
+ 2.8727631547856293e-05,
+ 2.8984450638458684e-05,
+ 2.9243565638669456e-05,
+ 2.9504997073446225e-05,
+ 2.9768765651235372e-05,
+ 3.003489226561251e-05,
+ 3.0303397996937613e-05,
+ 3.0574304114024615e-05,
+ 3.084763207582628e-05,
+ 3.1123403533133944e-05,
+ 3.140164033029264e-05,
+ 3.1682364506931236e-05,
+ 3.196559829970834e-05,
+ 3.225136414407378e-05,
+ 3.253968467604557e-05,
+ 3.283058273400309e-05,
+ 3.312408136049607e-05,
+ 3.3420203804069976e-05,
+ 3.371897352110738e-05,
+ 3.402041417768605e-05,
+ 3.43245496514537e-05,
+ 3.46314040335192e-05,
+ 3.494100163036098e-05,
+ 3.525336696575231e-05,
+ 3.556852478270407e-05,
+ 3.588650004542441e-05,
+ 3.6207317941296345e-05,
+ 3.6531003882873006e-05,
+ 3.6857583509890386e-05,
+ 3.718708269129847e-05,
+ 3.751952752731025e-05,
+ 3.7854944351469365e-05,
+ 3.8193359732735765e-05,
+ 3.8534800477590416e-05,
+ 3.88792936321588e-05,
+ 3.9226866484353066e-05,
+ 3.9577546566033634e-05,
+ 3.9931361655190226e-05,
+ 4.02883397781419e-05,
+ 4.064850921175727e-05,
+ 4.101189848569427e-05,
+ 4.13785363846602e-05,
+ 4.174845195069159e-05,
+ 4.212167448545474e-05,
+ 4.249823355256696e-05,
+ 4.287815897993804e-05,
+ 4.3261480862133164e-05,
+ 4.3648229562756675e-05,
+ 4.403843571685739e-05,
+ 4.443213023335501e-05,
+ 4.4829344297488584e-05,
+ 4.523010937328689e-05,
+ 4.5634457206060484e-05,
+ 4.60424198249165e-05,
+ 4.6454029545295605e-05,
+ 4.686931897153198e-05,
+ 4.728832099943569e-05,
+ 4.771106881889851e-05,
+ 4.8137595916523155e-05,
+ 4.856793607827552e-05,
+ 4.9002123392161075e-05,
+ 4.944019225092498e-05,
+ 4.988217735477658e-05,
+ 5.032811371413777e-05,
+ 5.077803665241639e-05,
+ 5.123198180880439e-05,
+ 5.168998514110058e-05,
+ 5.215208292855911e-05,
+ 5.2618311774763135e-05,
+ 5.3088708610524415e-05,
+ 5.35633106968084e-05,
+ 5.404215562768585e-05,
+ 5.452528133331092e-05,
+ 5.501272608292533e-05,
+ 5.550452848788997e-05,
+ 5.600072750474342e-05,
+ 5.650136243828751e-05,
+ 5.7006472944700976e-05,
+ 5.7516099034680484e-05,
+ 5.803028107661029e-05,
+ 5.8549059799759435e-05,
+ 5.907247629750825e-05,
+ 5.960057203060356e-05,
+ 6.013338883044252e-05,
+ 6.067096890238642e-05,
+ 6.121335482910364e-05,
+ 6.176058957394304e-05,
+ 6.231271648433678e-05,
+ 6.286977929523405e-05,
+ 6.343182213256569e-05,
+ 6.399888951673901e-05,
+ 6.457102636616468e-05,
+ 6.514827800081454e-05,
+ 6.573069014581191e-05,
+ 6.631830893505298e-05,
+ 6.691118091486147e-05,
+ 6.750935304767584e-05,
+ 6.811287271576883e-05,
+ 6.872178772500096e-05,
+ 6.93361463086072e-05,
+ 6.995599713101792e-05,
+ 7.058138929171318e-05,
+ 7.121237232911229e-05,
+ 7.184899622449799e-05,
+ 7.249131140597514e-05,
+ 7.313936875246551e-05,
+ 7.379321959773788e-05,
+ 7.44529157344745e-05,
+ 7.511850941837326e-05,
+ 7.579005337228723e-05,
+ 7.646760079040112e-05,
+ 7.715120534244443e-05,
+ 7.784092117794301e-05,
+ 7.853680293050818e-05,
+ 7.923890572216479e-05,
+ 7.994728516771687e-05,
+ 8.066199737915333e-05,
+ 8.138309897009295e-05,
+ 8.211064706026828e-05,
+ 8.28446992800505e-05,
+ 8.358531377501462e-05,
+ 8.433254921054486e-05,
+ 8.508646477648191e-05,
+ 8.584712019181136e-05,
+ 8.661457570939439e-05,
+ 8.738889212074013e-05,
+ 8.817013076082115e-05,
+ 8.895835351293234e-05,
+ 8.975362281359218e-05,
+ 9.05560016574888e-05,
+ 9.136555360246971e-05,
+ 9.218234277457675e-05,
+ 9.300643387312509e-05,
+ 9.383789217582832e-05,
+ 9.467678354396966e-05,
+ 9.552317442761825e-05,
+ 9.637713187089328e-05,
+ 9.723872351727435e-05,
+ 9.810801761496014e-05,
+ 9.898508302227379e-05,
+ 9.986998921311764e-05,
+ 0.00010076280628247669,
+ 0.00010166360495197026,
+ 0.00010257245657545447,
+ 0.00010348943314467407,
+ 0.00010441460729496545,
+ 0.00010534805231100958,
+ 0.00010628984213263733,
+ 0.00010724005136068671,
+ 0.00010819875526291148,
+ 0.00010916602977994367,
+ 0.00011014195153130876,
+ 0.00011112659782149533,
+ 0.0001121200466460777,
+ 0.00011312237669789462,
+ 0.00011413366737328278,
+ 0.00011515399877836547,
+ 0.00011618345173539812,
+ 0.00011722210778917079,
+ 0.00011827004921346673,
+ 0.00011932735901758003,
+ 0.00012039412095289046,
+ 0.00012147041951949827,
+ 0.0001225563399729168,
+ 0.00012365196833082596,
+ 0.00012475739137988648,
+ 0.0001258726966826134,
+ 0.00012699797258431268,
+ 0.00012813330822007902,
+ 0.00012927879352185676,
+ 0.00013043451922556293,
+ 0.00013160057687827478,
+ 0.0001327770588454821,
+ 0.0001339640583184025,
+ 0.00013516166932136403,
+ 0.00013636998671925267,
+ 0.0001375891062250273,
+ 0.00013881912440730045,
+ 0.00014006013869798808,
+ 0.0001413122474000278,
+ 0.00014257554969516475,
+ 0.00014385014565180846,
+ 0.00014513613623295927,
+ 0.00014643362330420633,
+ 0.00014774270964179568,
+ 0.00014906349894077168,
+ 0.00015039609582319152,
+ 0.00015174060584641146,
+ 0.00015309713551144884,
+ 0.000154465792271418,
+ 0.0001558466845400423,
+ 0.00015723992170024105,
+ 0.00015864561411279413,
+ 0.00016006387312508455,
+ 0.00016149481107991738,
+ 0.00016293854132441916,
+ 0.00016439517821901687,
+ 0.00016586483714649557,
+ 0.0001673476345211387,
+ 0.0001688436877979492,
+ 0.00017035311548195396,
+ 0.00017187603713758986,
+ 0.00017341257339817506,
+ 0.0001749628459754653,
+ 0.00017652697766929362,
+ 0.00017810509237729848,
+ 0.00017969731510473737,
+ 0.0001813037719743895,
+ 0.0001829245902365452,
+ 0.00018455989827908604,
+ 0.00018620982563765525,
+ 0.00018787450300591747,
+ 0.00018955406224591183,
+ 0.00019124863639849665,
+ 0.00019295835969388868,
+ 0.00019468336756229442,
+ 0.00019642379664463845,
+ 0.00019817978480338763,
+ 0.0001999514711334701,
+ 0.00020173899597329423,
+ 0.0002035425009158644,
+ 0.00020536212881999802,
+ 0.00020719802382164002,
+ 0.00020905033134528098,
+ 0.000210919198115477,
+ 0.0002128047721684707,
+ 0.00021470720286391847,
+ 0.0002166266408967208,
+ 0.00021856323830896025,
+ 0.00022051714850194337,
+ 0.00022248852624835285,
+ 0.00022447752770450775,
+ 0.00022648431042273173,
+ 0.00022850903336383365,
+ 0.00023055185690969992,
+ 0.00023261294287599702,
+ 0.00023469245452499048,
+ 0.00023679055657847638,
+ 0.0002389074152308304,
+ 0.0002410431981621709,
+ 0.0002431980745516417,
+ 0.0002453722150908142,
+ 0.0002475657919972062,
+ 0.00024977897902792495,
+ 0.00025201195149343,
+ 0.000254264886271421,
+ 0.0002565379618208468,
+ 0.00025883135819604255,
+ 0.00026114525706099267,
+ 0.0002634798417037192,
+ 0.0002658352970508015,
+ 0.0002682118096820243,
+ 0.00027060956784515767,
+ 0.0002730287614708669,
+ 0.00027546958218775853,
+ 0.0002779322233375598,
+ 0.0002804168799904323,
+ 0.00028292374896042496,
+ 0.0002854530288210631,
+ 0.00028800491992107943,
+ 0.000290579624400282,
+ 0.0002931773462055668,
+ 0.00029579829110707416,
+ 0.0002984426667144858,
+ 0.00030111068249347146,
+ 0.00030380254978228035,
+ 0.00030651848180848296,
+ 0.00030925869370585933,
+ 0.00031202340253144083,
+ 0.000314812827282705,
+ 0.0003176271889149205,
+ 0.00032046671035865053,
+ 0.00032333161653741243,
+ 0.00032622213438549224,
+ 0.000329138492865922,
+ 0.00033208092298861566,
+ 0.00033504965782866906,
+ 0.0003380449325448202,
+ 0.00034106698439807765,
+ 0.0003441160527705154,
+ 0.0003471923791842327,
+ 0.0003502962073204866,
+ 0.00035342778303899434,
+ 0.00035658735439740894,
+ 0.0003597751716709665,
+ 0.0003629914873723122,
+ 0.00036623655627150323,
+ 0.00036951063541618704,
+ 0.00037281398415196467,
+ 0.0003761468641429326,
+ 0.0003795095393924116,
+ 0.0003829022762638563,
+ 0.0003863253435019557,
+ 0.0003897790122539218,
+ 0.0003932635560909657,
+ 0.0003967792510299688,
+ 0.000400326375555346,
+ 0.0004039052106411067,
+ 0.0004075160397731086,
+ 0.00041115914897151424,
+ 0.0004148348268134488,
+ 0.000418543364455856,
+ 0.00042228505565856283,
+ 0.00042606019680754804,
+ 0.00042986908693842124,
+ 0.00043371202776010704,
+ 0.0004375893236787456,
+ 0.0004415012818218065,
+ 0.000445448212062414,
+ 0.0004494304270438942,
+ 0.0004534482422045411,
+ 0.0004575019758026007,
+ 0.00046159194894148227,
+ 0.0004657184855951929,
+ 0.00046988191263400164,
+ 0.0004740825598503288,
+ 0.0004783207599848709,
+ 0.0004825968487529589,
+ 0.00048691116487114796,
+ 0.0004912640500840499,
+ 0.0004956558491914021,
+ 0.0005000869100753819,
+ 0.00050455758372816,
+ 0.0005090682242797044,
+ 0.0005136191890258338,
+ 0.0005182108384565157,
+ 0.0005228435362844239,
+ 0.0005275176494737482,
+ 0.0005322335482692641,
+ 0.0005369916062256568,
+ 0.0005417922002371135,
+ 0.0005466357105671792,
+ 0.0005515225208788747,
+ 0.0005564530182650897,
+ 0.0005614275932792432,
+ 0.0005664466399662237,
+ 0.0005715105558935971,
+ 0.0005766197421831014,
+ 0.0005817746035424223,
+ 0.0005869755482972459,
+ 0.0005922229884236071,
+ 0.0005975173395805199,
+ 0.000602859021142907,
+ 0.000608248456234813,
+ 0.0006136860717629254,
+ 0.0006191722984503902,
+ 0.0006247075708709281,
+ 0.0006302923274832584,
+ 0.0006359270106658332,
+ 0.0006416120667518746,
+ 0.0006473479460647319,
+ 0.0006531351029535516,
+ 0.0006589739958292696,
+ 0.0006648650872009188,
+ 0.0006708088437122675,
+ 0.0006768057361787849,
+ 0.0006828562396249309,
+ 0.0006889608333217868,
+ 0.0006951200008250175,
+ 0.0007013342300131782,
+ 0.0007076040131263548,
+ 0.0007139298468051584,
+ 0.0007203122321300664,
+ 0.0007267516746611103,
+ 0.000733248684477924,
+ 0.0007398037762201477,
+ 0.0007464174691281956,
+ 0.0007530902870843819,
+ 0.0007598227586544203,
+ 0.0007666154171292951,
+ 0.0007734688005674995,
+ 0.0007803834518376592,
+ 0.0007873599186615325,
+ 0.0007943987536573997,
+ 0.0008015005143838313,
+ 0.0008086657633838569,
+ 0.0008158950682295264,
+ 0.0008231890015668648,
+ 0.0008305481411612344,
+ 0.0008379730699431,
+ 0.0008454643760542066,
+ 0.0008530226528941629,
+ 0.0008606484991674467,
+ 0.0008683425189308332,
+ 0.0008761053216412379,
+ 0.0008839375222039947,
+ 0.0008918397410215671,
+ 0.0008998126040426859,
+ 0.000907856742811935,
+ 0.000915972794519775,
+ 0.0009241614020530213,
+ 0.000932423214045761,
+ 0.0009407588849307361,
+ 0.0009491690749911853,
+ 0.0009576544504131399,
+ 0.0009662156833381977,
+ 0.0009748534519167622,
+ 0.000983568440361765,
+ 0.0009923613390028561,
+ 0.001001232844341091,
+ 0.0010101836591041031,
+ 0.0010192144923017626,
+ 0.0010283260592823425,
+ 0.0010375190817891807,
+ 0.0010467942880178546,
+ 0.0010561524126738561,
+ 0.0010655941970307927,
+ 0.001075120388989108,
+ 0.0010847317431353174,
+ 0.0010944290208017857,
+ 0.0011042129901270299,
+ 0.0011140844261165704,
+ 0.0011240441107043134,
+ 0.0011340928328144925,
+ 0.0011442313884241643,
+ 0.0011544605806262528,
+ 0.0011647812196931677,
+ 0.001175194123140985,
+ 0.0011857001157942104,
+ 0.0011963000298511053,
+ 0.001206994704949612,
+ 0.0012177849882338665,
+ 0.0012286717344212946,
+ 0.001239655805870319,
+ 0.0012507380726486724,
+ 0.0012619194126023098,
+ 0.0012732007114249482,
+ 0.001284582862728223,
+ 0.0012960667681124764,
+ 0.0013076533372381677,
+ 0.0013193434878979323,
+ 0.0013311381460892864,
+ 0.0013430382460879692,
+ 0.0013550447305219523,
+ 0.0013671585504461058,
+ 0.0013793806654175385,
+ 0.001391712043571596,
+ 0.0014041536616985549,
+ 0.0014167065053209992,
+ 0.0014293715687718751,
+ 0.001442149855273266,
+ 0.001455042377015849,
+ 0.0014680501552390777,
+ 0.0014811742203120766,
+ 0.0014944156118152558,
+ 0.0015077753786226606,
+ 0.00152125457898505,
+ 0.0015348542806137356,
+ 0.001548575560765138,
+ 0.001562419506326131,
+ 0.0015763872139001325,
+ 0.0015904797898939676,
+ 0.0016046983506055113,
+ 0.001619044022312106,
+ 0.0016335179413597923,
+ 0.0016481212542532985,
+ 0.0016628551177468726,
+ 0.0016777206989359056,
+ 0.0016927191753493803,
+ 0.0017078517350431466,
+ 0.0017231195766940228,
+ 0.0017385239096947625,
+ 0.001754065954249829,
+ 0.0017697469414720657,
+ 0.0017855681134802096,
+ 0.001801530723497283,
+ 0.0018176360359498638,
+ 0.001833885326568237,
+ 0.0018502798824874655,
+ 0.0018668210023493213,
+ 0.0018835099964051704,
+ 0.001900348186619754,
+ 0.0019173369067759067,
+ 0.0019344775025802038,
+ 0.0019517713317695575,
+ 0.001969219764218778,
+ 0.0019868241820490623,
+ 0.0020045859797374888,
+ 0.0020225065642274723,
+ 0.0020405873550402125,
+ 0.0020588297843871293,
+ 0.002077235297283332,
+ 0.0020958053516620507,
+ 0.0021145414184901437,
+ 0.0021334449818846083,
+ 0.0021525175392301415,
+ 0.0021717606012977494,
+ 0.0021911756923644154,
+ 0.0022107643503338566,
+ 0.002230528126858319,
+ 0.0022504685874615024,
+ 0.0022705873116625665,
+ 0.0022908858931012448,
+ 0.0023113659396640815,
+ 0.002332029073611788,
+ 0.002352876931707768,
+ 0.002373911165347736,
+ 0.0023951334406905485,
+ 0.002416545438790177,
+ 0.002438148855728868,
+ 0.0024599454027514948,
+ 0.0024819368064010992,
+ 0.0025041248086556775,
+ 0.0025265111670661334,
+ 0.002549097654895518,
+ 0.0025718860612594877,
+ 0.0025948781912680232,
+ 0.002618075866168416,
+ 0.0026414809234895247,
+ 0.0026650952171873555,
+ 0.0026889206177918793,
+ 0.0027129590125552256,
+ 0.0027372123056011665,
+ 0.0027616824180759494,
+ 0.0027863712883004705,
+ 0.002811280871923808,
+ 0.0028364131420781586,
+ 0.002861770089535093,
+ 0.002887353722863277,
+ 0.002913166068587563,
+ 0.002939209171349518,
+ 0.002965485094069381,
+ 0.0029919959181094677,
+ 0.00301874374343906,
+ 0.0030457306888007117,
+ 0.003072958891878106,
+ 0.0031004305094653748,
+ 0.003128147717637944,
+ 0.0031561127119249044,
+ 0.0031843277074829176,
+ 0.0032127949392717066,
+ 0.0032415166622310533,
+ 0.0032704951514594418,
+ 0.003299732702394267,
+ 0.003329231630993659,
+ 0.0033589942739199363,
+ 0.0033890229887246874,
+ 0.003419320154035547,
+ 0.0034498881697445677,
+ 0.003480729457198348,
+ 0.003511846459389827,
+ 0.003543241641151792,
+ 0.0035749174893521295,
+ 0.003606876513090802,
+ 0.00363912124389863,
+ 0.0036716542359377744,
+ 0.003704478066204085,
+ 0.0037375953347312226,
+ 0.003771008664796612,
+ 0.0038047207031292342,
+ 0.0038387341201192755,
+ 0.0038730516100296806,
+ 0.003907675891209526,
+ 0.003942609706309371,
+ 0.003977855822498511,
+ 0.004013417031684156,
+ 0.004049296150732588,
+ 0.004085496021692312,
+ 0.0041220195120191365,
+ 0.00415886951480334,
+ 0.004196048948998829,
+ 0.004233560759654358,
+ 0.0042714079181468065,
+ 0.004309593422416542,
+ 0.004348120297204925,
+ 0.004386991594293852,
+ 0.004426210392747529,
+ 0.00446577979915636,
+ 0.004505702947883022,
+ 0.0045459830013107536,
+ 0.00458662315009383,
+ 0.004627626613410348,
+ 0.004668996639217162,
+ 0.004710736504507199,
+ 0.0047528495155690275,
+ 0.004795339008248752,
+ 0.00483820834821425,
+ 0.004881460931221765,
+ 0.004925100183384933,
+ 0.004969129561446103,
+ 0.005013552553050201,
+ 0.005058372677020975,
+ 0.005103593483639732,
+ 0.005149218554926558,
+ 0.005195251504924051,
+ 0.0052416959799836335,
+ 0.005288555659054325,
+ 0.005335834253974198,
+ 0.005383535509764391,
+ 0.00543166320492576,
+ 0.005480221151738176,
+ 0.005529213196562493,
+ 0.005578643220145272,
+ 0.0056285151379261095,
+ 0.005678832900347838,
+ 0.0057296004931694285,
+ 0.005780821937781718,
+ 0.005832501291525943,
+ 0.005884642648015123,
+ 0.005937250137458368,
+ 0.005990327926987967,
+ 0.0060438802209895216,
+ 0.0060979112614349745,
+ 0.00615242532821862,
+ 0.006207426739496123,
+ 0.006262919852026555,
+ 0.006318909061517552,
+ 0.00637539880297343,
+ 0.00643239355104654,
+ 0.0064898978203916996,
+ 0.00654791616602381,
+ 0.006606453183678661,
+ 0.006665513510176959,
+ 0.006725101823791672,
+ 0.00678522284461852,
+ 0.006845881334949913,
+ 0.006907082099652176,
+ 0.006968829986546149,
+ 0.007031129886791179,
+ 0.00709398673527256,
+ 0.007157405510992484,
+ 0.007221391237464349,
+ 0.007285948983110736,
+ 0.007351083861664883,
+ 0.007416801032575743,
+ 0.007483105701416677,
+ 0.007550003120297778,
+ 0.007617498588281973,
+ 0.007685597451804662,
+ 0.0077543051050972915,
+ 0.007823626990614624,
+ 0.007893568599465836,
+ 0.007964135471849479,
+ 0.00803533319749238,
+ 0.008107167416092319,
+ 0.008179643817764823,
+ 0.00825276814349388,
+ 0.00832654618558669,
+ 0.00840098378813248,
+ 0.008476086847465404,
+ 0.00855186131263169,
+ 0.00862831318586075,
+ 0.008705448523040704,
+ 0.00878327343419806,
+ 0.008861794083981708,
+ 0.008941016692151216,
+ 0.009020947534069504,
+ 0.009101592941199993,
+ 0.009182959301608028,
+ 0.009265053060466951,
+ 0.009347880720568627,
+ 0.009431448842838534,
+ 0.009515764046855463,
+ 0.009600833011375865,
+ 0.009686662474862943,
+ 0.00977325923602031,
+ 0.009860630154330611,
+ 0.009948782150598839,
+ 0.010037722207500563,
+ 0.010127457370135021,
+ 0.010217994746583168,
+ 0.010309341508470795,
+ 0.010401504891536479,
+ 0.010494492196204831,
+ 0.01058831078816475,
+ 0.010682968098952866,
+ 0.010778471626542217,
+ 0.010874828935936146,
+ 0.01097204765976763,
+ 0.011070135498903741,
+ 0.011169100223055733,
+ 0.011268949671394477,
+ 0.011369691753171405,
+ 0.01147133444834503,
+ 0.011573885808213016,
+ 0.011677353956050041,
+ 0.011781747087751104,
+ 0.011887073472480839,
+ 0.011993341453328503,
+ 0.012100559447968845,
+ 0.012208735949328888,
+ 0.012317879526260643,
+ 0.012427998824219967,
+ 0.012539102565951223,
+ 0.012651199552178338,
+ 0.012764298662301889,
+ 0.01287840885510246,
+ 0.012993539169450286,
+ 0.013109698725021199,
+ 0.01322689672301914,
+ 0.013345142446904825,
+ 0.013464445263131218,
+ 0.013584814621885438,
+ 0.01370626005783733,
+ 0.013828791190894705,
+ 0.01395241772696534,
+ 0.014077149458725919,
+ 0.014202996266397528,
+ 0.014329968118528425,
+ 0.014458075072783632,
+ 0.01458732727674162,
+ 0.014717734968698102,
+ 0.014849308478477024,
+ 0.014982058228248907,
+ 0.01511599473335624,
+ 0.015251128603146513,
+ 0.015387470541812616,
+ 0.01552503134924069,
+ 0.015663821921865606,
+ 0.01580385325353421,
+ 0.015945136436375962,
+ 0.016087682661681705,
+ 0.01623150322079011,
+ 0.01637660950598208,
+ 0.016523013011383158,
+ 0.01667072533387396,
+ 0.01681975817400892,
+ 0.016970123336942908,
+ 0.017121832733366482,
+ 0.0172748983804493,
+ 0.01742933240279204,
+ 0.017585147033386806,
+ 0.01774235461458609,
+ 0.017900967599080563,
+ 0.018060998550885284,
+ 0.01822246014633503,
+ 0.018385365175088413,
+ 0.018549726541140926,
+ 0.018715557263847143,
+ 0.01888287047895191,
+ 0.019051679439631056,
+ 0.019221997517540942,
+ 0.01939383820387781,
+ 0.019567215110446408,
+ 0.01974214197073821,
+ 0.01991863264101926,
+ 0.020096701101427725,
+ 0.02027636145708144,
+ 0.020457627939194947,
+ 0.020640514906206962,
+ 0.020825036844917662,
+ 0.021011208371636232,
+ 0.02119904423333864,
+ 0.021388559308835733,
+ 0.02157976860995197,
+ 0.02177268728271431,
+ 0.02196733060855208,
+ 0.022163714005507457,
+ 0.022361853029456702,
+ 0.02256176337534242,
+ 0.022763460878416693,
+ 0.02296696151549564,
+ 0.023172281406224668,
+ 0.023379436814355534,
+ 0.02358844414903457,
+ 0.023799319966102486,
+ 0.024012080969405797,
+ 0.02422674401211989,
+ 0.024443326098084226,
+ 0.02466184438314891,
+ 0.02488231617653386,
+ 0.02510475894219984,
+ 0.02532919030023183,
+ 0.025555628028234707,
+ 0.025784090062741426,
+ 0.02601459450063399,
+ 0.026247159600576636,
+ 0.026481803784462337,
+ 0.026718545638871983,
+ 0.026957403916546656,
+ 0.027198397537873068,
+ 0.027441545592382228,
+ 0.027686867340261767,
+ 0.02793438221388126,
+ 0.0281841098193317,
+ 0.028436069937978467,
+ 0.028690282528028292,
+ 0.028946767726110125,
+ 0.02920554584887017,
+ 0.029466637394581427,
+ 0.029730063044767035,
+ 0.029995843665838757,
+ 0.03026400031074974,
+ 0.030534554220662206,
+ 0.030807526826629898,
+ 0.031082939751295946,
+ 0.03136081481060526,
+ 0.03164117401553285,
+ 0.03192403957382727,
+ 0.03220943389176981,
+ 0.03249737957594924,
+ 0.03278789943505252,
+ 0.033081016481671735,
+ 0.03337675393412662,
+ 0.03367513521830393,
+ 0.03397618396951304,
+ 0.03427992403435806,
+ 0.03458637947262686,
+ 0.034895574559196736,
+ 0.03520753378595762,
+ 0.03552228186375164,
+ 0.035839843724330814,
+ 0.0361602445223319,
+ 0.0364835096372689,
+ 0.036809664675543405,
+ 0.037138735472472886,
+ 0.03747074809433745,
+ 0.03780572884044415,
+ 0.03814370424521043,
+ 0.03848470108026599,
+ 0.03882874635657337,
+ 0.039175867326567505,
+ 0.03952609148631441,
+ 0.03987944657768947,
+ 0.04023596059057451,
+ 0.040595661765075126,
+ 0.04095857859375767,
+ 0.04132473982390615,
+ 0.04169417445979934,
+ 0.04206691176500818,
+ 0.04244298126471417,
+ 0.04282241274804756,
+ 0.04320523627044735,
+ 0.043591482156041965,
+ 0.04398118100005128,
+ 0.04437436367121009,
+ 0.044771061314213226,
+ 0.04517130535218294,
+ 0.0455751274891574,
+ 0.045982559712602455,
+ 0.04639363429594526,
+ 0.04680838380113075,
+ 0.04722684108120092,
+ 0.04764903928289708,
+ 0.048075011849285844,
+ 0.048504792522407636,
+ 0.04893841534594987,
+ 0.049375914667943464,
+ 0.049817325143483644,
+ 0.050262681737475036,
+ 0.05071201972740118,
+ 0.05116537470611934,
+ 0.05162278258467926,
+ 0.05208427959516816,
+ 0.052549902293580614,
+ 0.05301968756271426,
+ 0.0534936726150913,
+ 0.05397189499590611,
+ 0.05445439258599967,
+ 0.0549412036048595,
+ 0.05543236661364758,
+ 0.055927920518254716,
+ 0.05642790457238231,
+ 0.05693235838065176,
+ 0.05744132190174147,
+ 0.05795483545155255,
+ 0.05847293970640155,
+ 0.058995675706243034,
+ 0.05952308485792025,
+ 0.06005520893844511,
+ 0.06059209009830735,
+ 0.06113377086481324,
+ 0.06168029414545479,
+ 0.062231703231307736,
+ 0.0627880418004612,
+ 0.0633493539214774,
+ 0.0639156840568824,
+ 0.06448707706668795,
+ 0.0650635782119454,
+ 0.06564523315833014,
+ 0.06623208797975945,
+ 0.06682418916204186,
+ 0.06742158360655945,
+ 0.06802431863398295,
+ 0.06863244198801999,
+ 0.06924600183919748,
+ 0.06986504678867649,
+ 0.07048962587210253,
+ 0.0711197885634897,
+ 0.07175558477913953,
+ 0.07239706488159497,
+ 0.07304427968362959,
+ 0.07369728045227306,
+ 0.07435611891287125,
+ 0.07502084725318413,
+ 0.07569151812751945,
+ 0.07636818466090356,
+ 0.07705090045328958,
+ 0.077739719583803,
+ 0.07843469661502599,
+ 0.07913588659731845,
+ 0.07984334507317925,
+ 0.08055712808164577,
+ 0.08127729216273279,
+ 0.08200389436191113,
+ 0.08273699223462619,
+ 0.08347664385085764,
+ 0.08422290779971828,
+ 0.08497584319409564,
+ 0.08573550967533423,
+ 0.0865019674179599,
+ 0.08727527713444627,
+ 0.08805550008002382,
+ 0.08884269805753262,
+ 0.08963693342231682,
+ 0.09043826908716471,
+ 0.09124676852729181,
+ 0.09206249578536904,
+ 0.09288551547659553,
+ 0.09371589279381672,
+ 0.09455369351268923,
+ 0.09539898399688991,
+ 0.09625183120337329,
+ 0.09711230268767529,
+ 0.09798046660926436,
+ 0.0988563917369405,
+ 0.09974014745428236,
+ 0.1006318037651441,
+ 0.10153143129919924,
+ 0.10243910131753617,
+ 0.10335488571830272,
+ 0.10427885704240127,
+ 0.10521108847923492,
+ 0.10615165387250469,
+ 0.10710062772605966,
+ 0.10805808520979727,
+ 0.10902410216561853,
+ 0.10999875511343546,
+ 0.11098212125723213,
+ 0.11197427849118041,
+ 0.11297530540580968,
+ 0.11398528129423312,
+ 0.11500428615842724,
+ 0.11603240071556999,
+ 0.11706970640443413,
+ 0.11811628539183831,
+ 0.11917222057915548,
+ 0.1202375956088795,
+ 0.12131249487125167,
+ 0.12239700351094379,
+ 0.12349120743380369,
+ 0.12459519331365974,
+ 0.1257090485991864,
+ 0.12683286152083106,
+ 0.12796672109780372,
+ 0.129110717145127,
+ 0.13026494028075158,
+ 0.1314294819327338,
+ 0.13260443434647798,
+ 0.13378989059204335,
+ 0.13498594457151586,
+ 0.13619269102644763,
+ 0.13741022554535975,
+ 0.13863864457131533,
+ 0.13987804540955848,
+ 0.14112852623522204,
+ 0.14239018610110438,
+ 0.14366312494551498,
+ 0.14494744360019218,
+ 0.1462432437982882,
+ 0.14755062818242906,
+ 0.14886970031284458,
+ 0.15020056467557164,
+ 0.15154332669073065,
+ 0.1528980927208759,
+ 0.1542649700794219,
+ 0.15564406703914174,
+ 0.1570354928407454,
+ 0.15843935770153192,
+ 0.15985577282412042,
+ 0.16128485040525836,
+ 0.16272670364470865,
+ 0.1641814467542177,
+ 0.1656491949665603,
+ 0.16713006454466878,
+ 0.16862417279084208,
+ 0.17013163805603745,
+ 0.17165257974924525,
+ 0.17318711834694717,
+ 0.17473537540266085,
+ 0.17629747355656616,
+ 0.17787353654522126,
+ 0.17946368921136344,
+ 0.18106805751379845,
+ 0.18268676853737756,
+ 0.18431995050306413,
+ 0.18596773277809148,
+ 0.1876302458862082,
+ 0.18930762151801847,
+ 0.19099999254141342,
+ 0.1927074930120956,
+ 0.19443025818419785,
+ 0.1961684245209966,
+ 0.197922129705723,
+ 0.19969151265246668,
+ 0.2014767135171808,
+ 0.2032778737087839,
+ 0.20509513590036102,
+ 0.20692864404046507,
+ 0.20877854336451881,
+ 0.2106449804063211,
+ 0.2125281030096513,
+ 0.21442806033998202,
+ 0.2163450028962944,
+ 0.21827908252299943,
+ 0.22023045242196573,
+ 0.2221992671646544,
+ 0.22418568270436506,
+ 0.2261898563885861,
+ 0.22821194697146033,
+ 0.23025211462635997,
+ 0.23231052095857402,
+ 0.23438732901810932,
+ 0.2364827033126056,
+ 0.23859680982036854,
+ 0.24072981600351384,
+ 0.24288189082123463,
+ 0.24505320474318423,
+ 0.2472439297629794,
+ 0.24945423941182382,
+ 0.25168430877225584,
+ 0.253934314492014,
+ 0.2562044347980316,
+ 0.2584948495105539,
+ 0.260805740057382,
+ 0.2631372894882441,
+ 0.2654896824892945,
+ 0.2678631053977453,
+ 0.27025774621662324,
+ 0.27267379462966357,
+ 0.27511144201633503,
+ 0.2775708814669993,
+ 0.28005230779820617,
+ 0.28255591756812415,
+ 0.28508190909211334,
+ 0.2876304824584302,
+ 0.2902018395440794,
+ 0.2927961840308045,
+ 0.2954137214212217,
+ 0.2980546590550979,
+ 0.3007192061257746,
+ 0.30340757369673976,
+ 0.3061199747183439,
+ 0.30885662404467024,
+ 0.3116177384505529,
+ 0.31440353664874854,
+ 0.31721423930726034,
+ 0.3200500690668173,
+ 0.3229112505585127,
+ 0.32579801042159323,
+ 0.3287105773214143,
+ 0.33164918196755233,
+ 0.3346140571320797,
+ 0.3376054376680031,
+ 0.3406235605278658,
+ 0.34366866478252,
+ 0.34674099164005967,
+ 0.3498407844649303,
+ 0.35296828879720493,
+ 0.3561237523720343,
+ 0.35930742513927016,
+ 0.36251955928326357,
+ 0.3657604092428438,
+ 0.36903023173146854,
+ 0.3723292857575613,
+ 0.3756578326450275,
+ 0.3790161360539544,
+ 0.3824044620014957,
+ 0.38582307888294287,
+ 0.38927225749298827,
+ 0.39275227104717036,
+ 0.39626339520351883,
+ 0.39980590808438937,
+ 0.40338009029849387,
+ 0.4069862249631282,
+ 0.4106245977265976,
+ 0.41429549679084665,
+ 0.41799921293428316,
+ 0.42173603953481464,
+ 0.42550627259308654,
+ 0.42931021075592907,
+ 0.43314815534001316,
+ 0.43702041035571765,
+ 0.4409272825312143,
+ 0.44486908133675834,
+ 0.44884611900920623,
+ 0.4528587105767473,
+ 0.45690717388385793,
+ 0.46099182961647844,
+ 0.46511300132741407,
+ 0.4692710154619683,
+ 0.47346620138379547,
+ 0.4776988914009935,
+ 0.4819694207924262,
+ 0.4862781278342815,
+ 0.49062535382686495,
+ 0.4950114431216399,
+ 0.4994367431484973,
+ 0.5039016044432805,
+ 0.508406380675551,
+ 0.5129514286766031,
+ 0.5175371084677293,
+ 0.5221637832887365,
+ 0.5268318196267242,
+ 0.5315415872451075,
+ 0.5362934592129107,
+ 0.5410878119343187,
+ 0.5459250251784915,
+ 0.5508054821096473,
+ 0.555729569317412,
+ 0.5606976768474463,
+ 0.565710198232335,
+ 0.5707675305227642,
+ 0.5758700743189709,
+ 0.5810182338024757,
+ 0.5862124167680983,
+ 0.5914530346562588,
+ 0.5967405025855729,
+ 0.6020752393857277,
+ 0.6074576676306624,
+ 0.6128882136720397,
+ 0.6183673076730181,
+ 0.6238953836423258,
+ 0.6294728794686383,
+ 0.6351002369552692,
+ 0.6407779018551585,
+ 0.6465063239061865,
+ 0.6522859568667976,
+ 0.6581172585519426,
+ 0.6640006908693437,
+ 0.6699367198560808,
+ 0.675925815715514,
+ 0.6819684528545193,
+ 0.6880651099210738,
+ 0.6942162698421691,
+ 0.7004224198620635,
+ 0.706684051580879,
+ 0.7130016609935391,
+ 0.7193757485290644,
+ 0.7258068190902027,
+ 0.7322953820934298,
+ 0.7388419515092993,
+ 0.7454470459031556,
+ 0.7521111884762097,
+ 0.7588349071069825,
+ 0.7656187343931239,
+ 0.7724632076935922,
+ 0.7793688691712255,
+ 0.7863362658356854,
+ 0.793365949586787,
+ 0.8004584772582157,
+ 0.8076144106616333,
+ 0.814834316631187,
+ 0.8221187670683987,
+ 0.829468338987474,
+ 0.8368836145610057,
+ 0.8443651811660896,
+ 0.8519136314308514,
+ 0.859529563281388,
+ 0.8672135799891373,
+ 0.874966290218654,
+ 0.88278830807583,
+ 0.8906802531565365,
+ 0.8986427505957044,
+ 0.9066764311168417,
+ 0.9147819310819916,
+ 0.9229598925421493,
+ 0.9312109632881064,
+ 0.939535796901773,
+ 0.9479350528079464,
+ 0.956409396326545,
+ 0.9649594987253081,
+ 0.9735860372729755,
+ 0.9822896952929241,
+ 0.9910711622173024,
+ 0.9999311336416399,
+ 1.0088703113799462,
+ 1.0178894035203034,
+ 1.0269891244809524,
+ 1.0361701950668922,
+ 1.045433342526963,
+ 1.054779300611462,
+ 1.0642088096302615,
+ 1.0737226165114517,
+ 1.0833214748605058,
+ 1.0930061450199713,
+ 1.1027773941297088,
+ 1.1126359961876426,
+ 1.1225827321110822,
+ 1.1326183897985753,
+ 1.1427437641923206,
+ 1.1529596573411351,
+ 1.1632668784639855,
+ 1.1736662440140946,
+ 1.1841585777436014,
+ 1.194744710768822,
+ 1.2054254816360799,
+ 1.21620173638813,
+ 1.2270743286311738,
+ 1.238044119602474,
+ 1.2491119782385849,
+ 1.2602787812441643,
+ 1.271545413161433,
+ 1.2829127664402358,
+ 1.2943817415087344,
+ 1.3059532468447326,
+ 1.3176281990476353,
+ 1.329407522911065,
+ 1.3412921514960994,
+ 1.353283026205193,
+ 1.3653810968567432,
+ 1.3775873217603276,
+ 1.3899026677926138,
+ 1.4023281104739433,
+ 1.4148646340456181,
+ 1.4275132315478438,
+ 1.4402749048984043,
+ 1.4531506649720207,
+ 1.4661415316804256,
+ 1.479248534053152,
+ 1.4924727103190407,
+ 1.5058151079884934,
+ 1.5192767839364296,
+ 1.532858804486014,
+ 1.5465622454931214,
+ 1.5603881924315548,
+ 1.5743377404790297,
+ 1.5884119946039204,
+ 1.6026120696527992,
+ 1.6169390904387282,
+ 1.6313941918303678,
+ 1.6459785188418705,
+ 1.660693226723578,
+ 1.6755394810535327,
+ 1.6905184578297987,
+ 1.7056313435636314,
+ 1.720879335373441,
+ 1.7362636410796324,
+ 1.7517854793002754,
+ 1.7674460795476334,
+ 1.7832466823255557,
+ 1.7991885392277351,
+ 1.8152729130368663,
+ 1.8315010778246477,
+ 1.8478743190527196,
+ 1.8643939336744841,
+ 1.8810612302378382,
+ 1.8978775289888232,
+ 1.9148441619762195,
+ 1.9319624731570355,
+ 1.9492338185029818,
+ 1.9666595661078765,
+ 1.9842410962960138,
+ 2.0019798017315007,
+ 2.019877087528571,
+ 2.037934371362901,
+ 2.056153083583882,
+ 2.074534667327938,
+ 2.0930805786328346,
+ 2.1117922865530137,
+ 2.1306712732759605,
+ 2.1497190342396055,
+ 2.1689370782507993,
+ 2.1883269276048,
+ 2.207890118205875,
+ 2.227628199688961,
+ 2.2475427355424062,
+ 2.267635303231826,
+ 2.2879074943250446,
+ 2.308360914618191,
+ 2.3289971842628625,
+ 2.349817937894484,
+ 2.3708248247617827,
+ 2.392019508857427,
+ 2.413403669049839,
+ 2.4349789992161694,
+ 2.4567472083764987,
+ 2.478710020829177,
+ 2.5008691762874307,
+ 2.523226430017163,
+ 2.545783552975992,
+ 2.56854233195353,
+ 2.5915045697129147,
+ 2.6146720851336305,
+ 2.638046713355552,
+ 2.661630305924329,
+ 2.6854247309380495,
+ 2.7094318731952094,
+ 2.733653634344017,
+ 2.7580919330330143,
+ 2.782748705063084,
+ 2.8076259035407496,
+ 2.8327254990329114,
+ 2.8580494797229283,
+ 2.8835998515681087,
+ 2.909378638458606,
+ 2.935387882377725,
+ 2.9616296435637,
+ 2.988106000672849,
+ 3.014819050944256,
+ 3.041770910365888,
+ 3.0689637138422072,
+ 3.0963996153632816,
+ 3.124080788175397,
+ 3.1520094249532336,
+ 3.1801877379735095,
+ 3.2086179592902466,
+ 3.237302340911568,
+ 3.266243154978084,
+ 3.295442693942874,
+ 3.324903270753065,
+ 3.3546272190330764,
+ 3.3846168932694263,
+ 3.414874668997262,
+ 3.445402942988525,
+ 3.4762041334418026,
+ 3.5072806801738783,
+ 3.5386350448129837,
+ 3.570269710993824,
+ 3.6021871845542615,
+ 3.634389993733839,
+ 3.666880689374036,
+ 3.699661845120333,
+ 3.7327360576260564,
+ 3.766105946758104,
+ 3.7997741558044162,
+ 3.8337433516833914,
+ 3.868016225155126,
+ 3.902595491034556,
+ 3.9374838884065024,
+ 3.9726841808426303,
+ 4.00819915662039,
+ 4.044031628943828,
+ 4.080184436166467,
+ 4.116660442016121,
+ 4.153462535821738,
+ 4.190593632742272,
+ 4.2280566739975844,
+ 4.265854627101465,
+ 4.303990486096633,
+ 4.342467271791942,
+ 4.3812880320016525,
+ 4.420455841786855,
+ 4.459973803699048,
+ 4.499845048025894,
+ 4.540072733039207,
+ 4.58066004524507,
+ 4.621610199636281,
+ 4.66292643994701,
+ 4.70461203890974,
+ 4.746670298514508,
+ 4.789104550270447,
+ 4.831918155469724,
+ 4.875114505453735,
+ 4.918697021881775,
+ 4.96266915700207,
+ 5.007034393925227,
+ 5.051796246900144,
+ 5.09695826159237,
+ 5.142524015365002,
+ 5.1884971175619885,
+ 5.234881209794082,
+ 5.2816799662272835,
+ 5.328897093873873,
+ 5.376536332886062,
+ 5.424601456852232,
+ 5.473096273095902,
+ 5.522024622977246,
+ 5.571390382197408,
+ 5.621197461105506,
+ 5.671449805008368,
+ 5.722151394483051,
+ 5.773306245692134,
+ 5.824918410701901,
+ 5.876991977803231,
+ 5.929531071835491,
+ 5.982539854513263,
+ 6.036022524755993,
+ 6.089983319020603,
+ 6.144426511637048,
+ 6.199356415146952,
+ 6.254777380645131,
+ 6.3106937981243,
+ 6.367110096822803,
+ 6.424030745575462,
+ 6.481460253167556,
+ 6.539403168691959,
+ 6.597864081909539,
+ 6.656847623612636,
+ 6.716358465991929,
+ 6.7764013230065165,
+ 6.83698095075732,
+ 6.898102147863817,
+ 6.95976975584414,
+ 7.021988659498635,
+ 7.08476378729671,
+ 7.14810011176729,
+ 7.212002649892676,
+ 7.276476463505955,
+ 7.341526659691945,
+ 7.407158391191785,
+ 7.473376856811018,
+ 7.5401873018314465,
+ 7.607595018426604,
+ 7.67560534608097,
+ 7.744223672012906,
+ 7.813455431601376,
+ 7.883306108816565,
+ 7.9537812366541605,
+ 8.024886397573711,
+ 8.096627223940796,
+ 8.169009398473182,
+ 8.242038654690958,
+ 8.315720777370679,
+ 8.39006160300366,
+ 8.465067020258193,
+ 8.54074297044606,
+ 8.61709544799315,
+ 8.69413050091427,
+ 8.771854231292242,
+ 8.85027279576122,
+ 8.929392405994458,
+ 9.009219329196224,
+ 9.089759888598321,
+ 9.171020463960932,
+ 9.253007492077982,
+ 9.335727467287004,
+ 9.419186941983543,
+ 9.503392527140269,
+ 9.588350892830526,
+ 9.674068768756747,
+ 9.76055294478352,
+ 9.847810271475417,
+ 9.935847660639647,
+ 10.024672085873517,
+ 10.114290583116924,
+ 10.20471025120955,
+ 10.295938252453254,
+ 10.3879818131794,
+ 10.480848224321251,
+ 10.57454484199152,
+ 10.669079088065017,
+ 10.764458450766648,
+ 10.860690485264438,
+ 10.957782814268072,
+ 11.055743128632686,
+ 11.154579187968073,
+ 11.254298821253334,
+ 11.354909927456998,
+ 11.456420476162819,
+ 11.558838508200907,
+ 11.662172136284756,
+ 11.766429545653843,
+ 11.871618994721997,
+ 11.977748815731557,
+ 12.084827415413361,
+ 12.192863275652764,
+ 12.301864954161346,
+ 12.411841085154883,
+ 12.522800380037259,
+ 12.634751628090509,
+ 12.747703697171032,
+ 12.861665534412001,
+ 12.976646166932204,
+ 13.092654702550908,
+ 13.209700330509442,
+ 13.327792322199047,
+ 13.446940031895291,
+ 13.567152897499033,
+ 13.68844044128398,
+ 13.81081227065109,
+ 13.934278078889417,
+ 14.05884764594404,
+ 14.18453083919073,
+ 14.311337614217551,
+ 14.439278015613452,
+ 14.568362177764007,
+ 14.698600325654024,
+ 14.830002775677585,
+ 14.962579936455207,
+ 15.096342309658324,
+ 15.231300490841141,
+ 15.367465170279898,
+ 15.504847133819794,
+ 15.643457263729157,
+ 15.783306539561577,
+ 15.924406039025584,
+ 16.066766938862134,
+ 16.210400515729944,
+ 16.355318147098686,
+ 16.50153131215037,
+ 16.649051592688412,
+ 16.7978906740552,
+ 16.948060346057666,
+ 17.09957250390117,
+ 17.25243914913177,
+ 17.406672390586813,
+ 17.562284445354265,
+ 17.719287639740227,
+ 17.877694410245464,
+ 18.037517304550487,
+ 18.198768982509478,
+ 18.361462217153107,
+ 18.52560989570025,
+ 18.691225020578976,
+ 18.85832071045627,
+ 19.02691020127731,
+ 19.197006847313904,
+ 19.36862412222228,
+ 19.54177562011038,
+ 19.716475056614602,
+ 19.892736269986447,
+ 20.070573222188386,
+ 20.25
+ ]
+ },
+ "lo": [
+ {
+ "basis": [
+ {
+ "auto": 1,
+ "dme": 0,
+ "enu": -0.0818827,
+ "n": 1
+ },
+ {
+ "auto": 1,
+ "dme": 1,
+ "enu": -0.0818827,
+ "n": 1
+ }
+ ],
+ "l": 0
+ },
+ {
+ "basis": [
+ {
+ "auto": 1,
+ "dme": 1,
+ "enu": -0.0818827,
+ "n": 1
+ },
+ {
+ "auto": 1,
+ "dme": 2,
+ "enu": -0.0818827,
+ "n": 1
+ }
+ ],
+ "l": 0
+ }
+ ],
+ "mass": 1.00794,
+ "name": "hydrogen",
+ "nrmt": 1000,
+ "number": 1,
+ "rinf": 15.096342309658324,
+ "rmin": 1e-07,
+ "rmt": 0.65,
+ "symbol": "H",
+ "valence": [
+ {
+ "basis": [
+ {
+ "auto": 0,
+ "dme": 0,
+ "enu": 0.15
+ },
+ {
+ "auto": 0,
+ "dme": 1,
+ "enu": 0.15
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/verification/test31/output_ref.json b/verification/test31/output_ref.json
new file mode 100644
index 000000000..ee2314252
--- /dev/null
+++ b/verification/test31/output_ref.json
@@ -0,0 +1,273 @@
+{
+ "comm_world_size": 1,
+ "context": {
+ "chemical_formula": "H",
+ "config": {
+ "control": {
+ "beta_chunk_size": 256,
+ "beta_on_device": false,
+ "cyclic_block_size": 4,
+ "fft_mode": "parallel",
+ "gen_evp_solver_name": "lapack",
+ "gvec_chunk_size": 500000,
+ "mpi_grid_dims": [
+ 1,
+ 1
+ ],
+ "num_bands_to_print": 10,
+ "ortho_rf": false,
+ "output": "stdout:",
+ "print_forces": false,
+ "print_neighbors": false,
+ "print_stress": false,
+ "processing_unit": "cpu",
+ "reduce_gvec": false,
+ "rmt_max": 2.0,
+ "save_rf": false,
+ "spglib_tolerance": 1e-06,
+ "std_evp_solver_name": "lapack",
+ "use_second_variation": true,
+ "verbosity": 2,
+ "verification": 0
+ },
+ "hubbard": {
+ "constrained_calculation": false,
+ "constraint_beta_mixing": 0.4,
+ "constraint_error": 1e-06,
+ "constraint_max_iteration": 10,
+ "constraint_method": "energy",
+ "constraint_strength": 1.0,
+ "hubbard_subspace_method": "none",
+ "local": [],
+ "local_constraint": [],
+ "nonlocal": [],
+ "simplified": false
+ },
+ "iterative_solver": {
+ "converge_by_energy": 1,
+ "early_restart": 0.5,
+ "empty_states_tolerance": 0,
+ "energy_tolerance": 0.01,
+ "extra_ortho": false,
+ "init_eval_old": true,
+ "init_subspace": "lcao",
+ "locking": true,
+ "min_num_res": 0,
+ "num_singular": -1,
+ "num_steps": 20,
+ "relative_tolerance": 0,
+ "residual_tolerance": 1e-06,
+ "subspace_size": 2,
+ "type": "exact"
+ },
+ "locked": true,
+ "mixer": {
+ "beta": 0.5,
+ "beta0": 0.15,
+ "beta_scaling_factor": 1.0,
+ "linear_mix_rms_tol": 1000000.0,
+ "max_history": 8,
+ "type": "anderson",
+ "use_hartree": false
+ },
+ "nlcg": {
+ "T": 300.0,
+ "kappa": 0.3,
+ "maxiter": 300,
+ "processing_unit": "",
+ "restart": 10,
+ "tau": 0.1,
+ "tol": 1e-09
+ },
+ "parameters": {
+ "auto_rmt": 1,
+ "aw_cutoff": 7.0,
+ "core_relativity": "dirac",
+ "density_tol": 1e-07,
+ "electronic_structure_method": "full_potential_lapwlo",
+ "energy_tol": 1e-10,
+ "extra_charge": 0,
+ "gamma_point": false,
+ "gk_cutoff": 3.5,
+ "hubbard_correction": false,
+ "lmax_apw": 8,
+ "lmax_pot": 8,
+ "lmax_rho": 8,
+ "molecule": false,
+ "ngridk": [
+ 2,
+ 2,
+ 2
+ ],
+ "nn_radius": -1,
+ "num_bands": -1,
+ "num_dft_iter": 100,
+ "num_fv_states": 4,
+ "num_mag_dims": 0,
+ "precision_gs": "auto",
+ "precision_hs": "fp64",
+ "precision_wf": "fp64",
+ "pw_cutoff": 12.0,
+ "reduce_aux_bf": 0,
+ "shiftk": [
+ 0,
+ 0,
+ 0
+ ],
+ "smearing": "gaussian",
+ "smearing_width": 0.001,
+ "so_correction": false,
+ "use_ibz": true,
+ "use_scf_correction": true,
+ "use_symmetry": true,
+ "valence_relativity": "koelling_harmon",
+ "vk": [],
+ "xc_dens_tre": -1,
+ "xc_functionals": [
+ "XC_LDA_X",
+ "XC_LDA_C_PW"
+ ]
+ },
+ "settings": {
+ "always_update_wf": true,
+ "auto_enu_tol": 0,
+ "fft_grid_size": [
+ 45,
+ 45,
+ 45
+ ],
+ "fp32_to_fp64_rms": 0,
+ "itsol_tol_min": 1e-13,
+ "itsol_tol_ratio": 0,
+ "itsol_tol_scale": [
+ 0.1,
+ 0.5
+ ],
+ "min_occupancy": 1e-14,
+ "mixer_rms_min": 1e-16,
+ "nprii_aug": 20,
+ "nprii_beta": 20,
+ "nprii_rho_core": 20,
+ "nprii_vloc": 200,
+ "radial_grid": "exponential, 1.0",
+ "sht_coverage": 0
+ },
+ "unit_cell": {
+ "atom_coordinate_units": "lattice",
+ "atom_files": {
+ "H": "H.json"
+ },
+ "atom_types": [
+ "H"
+ ],
+ "atoms": {
+ "H": [
+ [
+ 0.0,
+ 0.0,
+ 0.0
+ ]
+ ]
+ },
+ "lattice_vectors": [
+ [
+ 10.0,
+ 0.0,
+ 0.0
+ ],
+ [
+ 0.0,
+ 10.0,
+ 0.0
+ ],
+ [
+ 0.0,
+ 0.0,
+ 10.0
+ ]
+ ],
+ "lattice_vectors_scale": 1.0
+ },
+ "vcsqnm": {
+ "alpha0": 0.01,
+ "eps_subsp": 0.001,
+ "forces_tol": 0.0001,
+ "initial_step_size": -0.1,
+ "lattice_weight": 2.0,
+ "nhist_max": 10,
+ "num_steps": 300,
+ "stress_tol": 1e-05
+ }
+ },
+ "fft_coarse_grid": [
+ 25,
+ 25,
+ 25
+ ],
+ "mpi_grid": [
+ 1,
+ 1
+ ],
+ "num_atoms": 1,
+ "omega": 1000.0
+ },
+ "counters": {
+ "band_evp_work_count": 0.0,
+ "local_operator_num_applied": 0
+ },
+ "git_hash": "45daf4be830963500ca5a5b9c4dc82568403ce5a",
+ "ground_state": {
+ "band_gap": 0.0,
+ "converged": true,
+ "core_leakage": 0.0,
+ "efermi": -0.2298403438953336,
+ "energy": {
+ "bxc": 0.0,
+ "core_eval_sum": 0.0,
+ "entropy_sum": -0.00012385178400429667,
+ "enuc": -0.4589705409889052,
+ "eval_sum": -0.23151798232276094,
+ "ewald": 0.0,
+ "exc": -0.22925662057186147,
+ "kin": 0.41451797864506473,
+ "scf_correction": 1.134052851625711e-09,
+ "total": -0.4473155606452849,
+ "veff": -0.6460359609678257,
+ "vha": -0.3472127577272715,
+ "vxc": -0.2988232032409234
+ },
+ "etot_history": [
+ -0.4483122874557121,
+ -0.4468102014783399,
+ -0.44744486410499285,
+ -0.4472608984539097,
+ -0.4473115567653132,
+ -0.4473145862427188,
+ -0.44731432549887507,
+ -0.4473155569336346,
+ -0.447315560660926,
+ -0.44731556042865306,
+ -0.44731556064583344,
+ -0.4473155606452849
+ ],
+ "num_scf_iterations": 11,
+ "rho_min": 1.6481154494965074e-06,
+ "rms_history": [
+ 0.0032485690090753973,
+ 0.001611581144538327,
+ 0.00036576350591347037,
+ 0.0006336149056173956,
+ 0.00010944037630716328,
+ 3.9302207607731513e-05,
+ 2.7889210231190184e-05,
+ 1.33552381643973e-07,
+ 3.2562360240589686e-09,
+ 7.288281920310186e-09,
+ 1.291474397044996e-10,
+ 3.578490283314564e-11
+ ],
+ "scf_time": 21.640383
+ },
+ "task": 0,
+ "threads_per_rank": 10
+}
\ No newline at end of file
diff --git a/verification/test31/sirius.json b/verification/test31/sirius.json
new file mode 100644
index 000000000..358708841
--- /dev/null
+++ b/verification/test31/sirius.json
@@ -0,0 +1,53 @@
+{
+ "control" : {
+ "processing_unit" : "cpu",
+ "std_evp_solver_name" : "lapack",
+ "gen_evp_solver_name" : "lapack",
+ "verbosity" : 2,
+ "verification" : 0,
+ "rmt_max": 2.0
+ },
+ "parameters" : {
+ "electronic_structure_method" : "full_potential_lapwlo",
+ "smearing_width" : 0.001,
+ "valence_relativity" : "koelling_harmon",
+ "xc_functionals": ["XC_LDA_X", "XC_LDA_C_PW"],
+ "num_fv_states" : 4,
+ "pw_cutoff" : 12.00,
+ "aw_cutoff": 7.00,
+ "use_symmetry": true,
+ "ngridk" : [2,2,2],
+ "density_tol" : 1e-7,
+ "energy_tol" : 1e-10,
+ "num_dft_iter" : 100
+ },
+
+
+ "unit_cell" : {
+
+ "lattice_vectors" : [ [1, 0, 0],
+ [0, 1, 0],
+ [0, 0, 1]
+ ],
+ "lattice_vectors_scale" : 10,
+
+ "atom_types" : ["H"],
+
+ "atom_files" : {
+ "H" : "H.json"
+ },
+
+ "atoms" : {
+ "H" : [
+ [0, 0, 0]
+ ]
+ }
+ },
+
+ "mixer" : {
+ "beta" : 0.5,
+ "type" : "anderson",
+ "max_history" : 8
+ }
+
+}