diff --git a/Dockerfile.intel b/Dockerfile.intel index 7107e42d2b..eeec96d2ba 100644 --- a/Dockerfile.intel +++ b/Dockerfile.intel @@ -44,6 +44,9 @@ RUN source /opt/intel/oneapi/setvars.sh && \ ln -s /usr/local/include/elpa_openmp-$ELPA_VER/elpa /usr/local/include/ && \ cd /tmp && rm -rf elpa-$ELPA_VER +RUN cd /tmp && git clone https://github.com/Tencent/rapidjson.git && cp -r rapidjson/include/rapidjson /usr/include/ \ + && rm -rf rapidjson + RUN wget https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.0.0%2Bcpu.zip \ --no-check-certificate --quiet -O libtorch.zip && \ unzip -q libtorch.zip -d /opt && rm libtorch.zip diff --git a/README.md b/README.md index 31857eeac9..e0c81ae655 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ # About ABACUS -ABACUS (Atomic-orbital Based Ab-initio Computation at UStc) is an open-source package based on density functional theory (DFT). The package utilizes both plane wave and numerical atomic basis sets with the usage of norm-conserving pseudopotentials to describe the interactions between nuclear ions and valence electrons. ABACUS supports LDA, GGA, meta-GGA, and hybrid functionals. Apart from single-point calculations, the package allows geometry optimizations and ab-initio molecular dynamics with various ensembles. The package also provides a variety of advanced functionalities for simulating materials, including the DFT+U, VdW corrections, and implicit solvation model, etc. In addition, ABACUS strives to provide a general infrastructure to facilitate the developments and applications of novel machine-learning-assisted DFT methods (DeePKS, DP-GEN, DeepH, DeePTB etc.) in molecular and material simulations. +ABACUS (**A**tomic-orbital **B**ased **A**b-initio **C**omputation at **US**tc) is an open-source package based on density functional theory (DFT). The package utilizes both plane wave and numerical atomic basis sets with the usage of pseudopotentials to describe the interactions between nuclear ions and valence electrons. ABACUS supports LDA, GGA, meta-GGA, and hybrid functionals. Apart from single-point calculations, the package allows geometry optimizations and ab-initio molecular dynamics with various ensembles. The package also provides a variety of advanced functionalities for simulating materials, including the DFT+U, VdW corrections, and implicit solvation model, etc. In addition, ABACUS strives to provide a general infrastructure to facilitate the developments and applications of novel machine-learning-assisted DFT methods (DeePKS, DP-GEN, DeepH, DeePTB etc.) in molecular and material simulations. # Online Documentation For detailed documentation, please refer to [our documentation website](https://abacus.deepmodeling.com/). diff --git a/cmake/FindMKL.cmake b/cmake/FindMKL.cmake index 38db391d29..a0c389b5ae 100644 --- a/cmake/FindMKL.cmake +++ b/cmake/FindMKL.cmake @@ -83,7 +83,7 @@ endif() endif() # MKL::MKL # For compatibility with legacy libpaw_interface CMakeLists.txt -if(TARGET MKL::MKL) +if(TARGET MKL::MKL AND NOT TARGET IntelMKL::MKL) add_library(IntelMKL::MKL ALIAS MKL::MKL) endif() diff --git a/docs/CITATIONS.md b/docs/CITATIONS.md index d54627292d..c5a182b4f6 100644 --- a/docs/CITATIONS.md +++ b/docs/CITATIONS.md @@ -4,10 +4,18 @@ The following references are required to be cited when using ABACUS. Specificall - **For general purpose:** + *For LCAO basis:* + Mohan Chen, G. C. Guo, and Lixin He. "Systematically improvable optimized atomic basis sets for ab initio calculations." Journal of Physics: Condensed Matter 22.44 (2010): 445501. Pengfei Li, et al. "Large-scale ab initio simulations based on systematically improvable atomic basis." Computational Materials Science 112 (2016): 503-517. + Peize Lin, Xinguo Ren, Xiaohui Liu, Lixin He. Ab initio electronic structure calculations based on numerical atomic orbitals: Basic fomalisms and recent progresses. Wiley Interdisciplinary Reviews: Computational Molecular Science, 2024, 14(1): e1687. + + *For LCAO and PW basis:* + + Weiqing Zhou, Deye Zheng, Qianrui Liu, et al. ABACUS: An Electronic Structure Analysis Package for the AI Era. arXiv preprint arXiv:2501.08697, 2025. + - **If Stochastic DFT is used:** Qianrui Liu, and Mohan Chen. "Plane-Wave-Based Stochastic-Deterministic Density Functional Theory for Extended Systems." . diff --git a/docs/DevelopingTeam.md b/docs/DevelopingTeam.md index 1862994511..333e923c67 100644 --- a/docs/DevelopingTeam.md +++ b/docs/DevelopingTeam.md @@ -4,5 +4,5 @@ The current development team consists the following research groups/affiliations - University of Science and Technology of China (Dr. Lixin He) - Peking University (Dr. Mohan Chen) - Institute of Physics, Chinese Academy of Sciences (Dr. Xinguo Ren) -- Beijing AI for Science Institute -- Institute of Artificial Intelligence, Hefei Comprehensive National Science Center. +- Beijing AI for Science Institute (Dr. Daye Zheng) +- Institute of Artificial Intelligence, Hefei Comprehensive National Science Center (Dr. Lixin He). diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 6aedbab430..34fd2a8b68 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -564,7 +564,7 @@ These variables are used to control general system parameters. ### init_wfc - **Type**: String -- **Description**: Only useful for plane wave basis only now. It is the name of the starting wave functions. In the future. we should also make this variable available for localized orbitals set. +- **Description**: The type of the starting wave functions. Available options are: @@ -576,6 +576,8 @@ These variables are used to control general system parameters. with `psi_initializer 1`, two more options are supported: - nao: from numerical atomic orbitals. If they are not enough, other wave functions are initialized with random numbers. - nao+random: add small random numbers on numerical atomic orbitals + + > Only the `file` option is useful for the lcao basis set, which is mostly used when [calculation](#calculation) is set to `set_wf` and `get_pchg`. See more details in [out_wfc_lcao](#out_wfc_lcao). - **Default**: atomic ### init_chg @@ -3518,19 +3520,24 @@ These variables are used to control berry phase and wannier90 interface paramete - **Type**: Boolean - **Availability**: - - For PW and LCAO codes. if set to 1, occupations of bands will be setting of "ocp_set". - - For TDDFT in LCAO codes. if set to 1, occupations will be constrained since second ionic step. - - For OFDFT, this feature can't be used. + - For PW and LCAO codes: If set to 1, the band occupations will be determined by `ocp_set`. + - For RT-TDDFT in LCAO codes: If set to 1, same as above, but the occupations will be constrained starting from the second ionic step. + - For OFDFT: This feature is not available. - **Description**: -- True: fix the occupations of bands. -- False: do not fix the occupations of bands. +- True: Fixes the band occupations based on the values specified in `ocp_set`. +- False: Does not fix the band occupations. - **Default**: False ### ocp_set - **Type**: String -- **Description**: If ocp is True, the ocp_set is a string to set the number of occupancy, like '1 10 * 1 0 1' representing the 13 band occupancy, 12th band occupancy 0 and the rest 1, the code is parsing this string into an array through a regular expression. -- **Default**: none +- **Description**: + - If `ocp` is set to 1, `ocp_set` must be provided as a string specifying the occupation numbers for each band across all k-points. The format follows a space-separated pattern, where occupations are assigned sequentially to bands for each k-point. A shorthand notation `N*x` can be used to repeat a value `x` for `N` bands. + - Example: + - `1 10*1 0 1` represents occupations for 13 bands, where the 12th band is fully unoccupied (`0`), and all others are occupied (`1`). + - For a system with multiple k-points, the occupations must be specified for all k-points, following their order in the output file kpoints (may lead to fractional occupations). + - Incorrect specification of `ocp_set` could lead to inconsistencies in electron counting, causing the calculation to terminate with an error. +- **Default**: None [back to top](#full-list-of-input-keywords) diff --git a/docs/community/faq.md b/docs/community/faq.md index 724519a35e..df5db1ec5b 100644 --- a/docs/community/faq.md +++ b/docs/community/faq.md @@ -109,7 +109,7 @@ write(cs_stru, cs_atoms, format='abacus', pp=pp, basis=basis) ABACUS applies the density difference between two SCF steps (labeled as `DRHO` in the screen output) as the convergence criterion, which is considered as a more robust choice compared with the energy difference. `DRHO` is calculated via `DRHO = |rho(G)-rho_previous(G)|^2`. Note that the energy difference between two SCF steps (labed as `EDIFF`) is also printed out in the screen output. -**4. Why EDIFF is much slower than DRHO? +**4. Why EDIFF is much slower than DRHO?** For metaGGA calculations, it is normal because in addition to charge density, kinetic density also needs to be considered in metaGGA calculations. In this case, you can try set `mixing_tau = true`. If you find EDIFF is much slower than DRHO for non-metaGGA calculations, please start a new issue to us. diff --git a/docs/index.rst b/docs/index.rst index f0a5dcd8e3..ebf378e962 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -10,7 +10,7 @@ ABACUS Documentation ABACUS (Atomic-orbital Based Ab-initio Computation at UStc) is an open-source computer code package based on density functional theory (DFT). The package utilizes both plane wave and numerical -atomic basis sets with the usage of norm-conserving pseudopotentials +atomic basis sets with the usage of pseudopotentials to describe the interactions between nuclear ions and valence electrons. ABACUS supports LDA, GGA, meta-GGA, and hybrid functionals. Apart from single-point calculations, the package allows geometry optimizations diff --git a/docs/quick_start/easy_install.md b/docs/quick_start/easy_install.md index fb1306396b..8ca65f19b5 100644 --- a/docs/quick_start/easy_install.md +++ b/docs/quick_start/easy_install.md @@ -1,6 +1,6 @@ # Easy Installation -This guide helps you install ABACUS with basic features. **For DeePKS, DeePMD and Libxc support, or building with `make`, please refer to [the advanced installation guide](../advanced/install.md)** after going through this page. We recommend building ABACUS with `cmake` to avoid dependency issues. We recommend compiling ABACUS(and possibly its requirements) from the source code using the latest compiler for the best performace. You can try [toolchain](#install-requirements-by-toolchain) to install ABACUS and dependencies in a source-code compilation way with convience. You can also deploy ABACUS **without building** by [Docker](#container-deployment) or [conda](#install-by-conda). Please note that ABACUS only supports Linux; for Windows users, please consider using [WSL](https://learn.microsoft.com/en-us/windows/wsl/) or docker. +This guide helps you install ABACUS with basic features. **For DeePKS, DeePMD and Libxc support, or building with `make`, please refer to [the advanced installation guide](../advanced/install.md)** after going through this page. We recommend building ABACUS with `cmake` to avoid dependency issues. We recommend compiling ABACUS (and possibly its requirements) from the source code using the latest compiler for the best performace. You can try [toolchain](#install-requirements-by-toolchain) to install ABACUS and dependencies in a source-code compilation way with convience. You can also deploy ABACUS **without building** by [Docker](#container-deployment) or [conda](#install-by-conda). Please note that ABACUS only supports Linux; for Windows users, please consider using [WSL](https://learn.microsoft.com/en-us/windows/wsl/) or docker. ## Get ABACUS source code @@ -79,7 +79,7 @@ git remote -v # Replace "origin" with "upstream" or the remote name corresponding to deepmodeling/abacus-develop if necessary git fetch origin -git checkout v3.8.4 # Replace the tag with the latest version +git checkout v3.x.x # Replace the tag with the latest version, like v3.10.0 git describe --tags # Verify if the tag has been successfully checked out ``` @@ -106,7 +106,7 @@ Here, 'build' is the path for building ABACUS; and '-D' is used for setting up s - `CMAKE_INSTALL_PREFIX`: the path of ABACUS binary to install; `/usr/local/bin/abacus` by default - Compilers - `CMAKE_CXX_COMPILER`: C++ compiler; usually `g++`(GNU C++ compiler) or `icpx`(Intel C++ compiler). Can also set from environment variable `CXX`. It is OK to use MPI compiler here. - - `MPI_CXX_COMPILER`: MPI wrapper for C++ compiler; usually `mpicxx` or `mpiicpc`(for Intel MPI). + - `MPI_CXX_COMPILER`: MPI wrapper for C++ compiler; usually `mpicxx` or `mpiicpx`(for Intel toolkits) or `mpiicpc`(for classic Intel Compiler Classic MPI before 2024.0). - Requirements: Unless indicated, CMake will try to find under default paths. - `MKLROOT`: If environment variable `MKLROOT` exists, `cmake` will take MKL as a preference, i.e. not using `LAPACK`, `ScaLAPACK` and `FFTW`. To disable MKL, unset environment variable `MKLROOT`, or pass `-DMKLROOT=OFF` to `cmake`. - `LAPACK_DIR`: Path to OpenBLAS library `libopenblas.so`(including BLAS and LAPACK) @@ -136,7 +136,7 @@ Here, 'build' is the path for building ABACUS; and '-D' is used for setting up s Here is an example: ```bash -CXX=mpiicpc cmake -B build -DCMAKE_INSTALL_PREFIX=~/abacus -DELPA_DIR=~/elpa-2016.05.004/build -DCEREAL_INCLUDE_DIR=~/cereal/include +CXX=mpiicpx cmake -B build -DCMAKE_INSTALL_PREFIX=~/abacus -DELPA_DIR=~/elpa-2025.01.001/build -DCEREAL_INCLUDE_DIR=~/cereal/include ``` ## Build and Install @@ -192,6 +192,8 @@ OMP_NUM_THREADS=4 mpirun -n 4 abacus In this case, the total thread count is 16. +> Notice: If the MPI library you are using is OpenMPI, which is commonly the case, when you set the number of processes to 1 or 2, OpenMPI will default to `--bind-to core`. This means that no matter how many threads you set, these threads will be restricted to run on 1 or 2 CPU cores. Therefore, setting a higher number of OpenMP threads might result in slower program execution. Hence, when using `mpirun -n` set to 1 or 2, it is recommended to set `--bind-to none` to avoid performance degradation. For example:`OMP_NUM_THREADS=6 mpirun --bind-to none -n 1 abacus`. The detailed binding strategy of OpenMPI can be referred to at https://docs.open-mpi.org/en/v5.0.x/man-openmpi/man1/mpirun.1.html#quick-summary. + ABACUS will try to determine the number of threads used by each process if `OMP_NUM_THREADS` is not set. However, it is **required** to set `OMP_NUM_THREADS` before running `mpirun` to avoid potential performance issues. Please refer to [hands-on guide](./hands_on.md) for more instructions. diff --git a/docs/quick_start/hands_on.md b/docs/quick_start/hands_on.md index 2e0e768169..fe0111ea4c 100644 --- a/docs/quick_start/hands_on.md +++ b/docs/quick_start/hands_on.md @@ -4,7 +4,7 @@ ### A quick LCAO example -ABACUS is well known for its support of LCAO (Linear Combination of Atomic Orbital) basis set in calculating periodic condensed matter systems, so it's a good choice to start from a LCAO example of self-consistent field (SCF) calculation. Here, FCC MgO has been chosen as a quick start example. The default name of a structure file in ABACUS is `STRU`. The `STRU` file for FCC MgO in a LCAO calculation is shown below: +ABACUS is well known for its support of LCAO (Linear Combination of Atomic Orbital) basis set in calculating periodic condensed matter systems. It's a good choice to start from a LCAO example of self-consistent field (SCF) calculation. Here, FCC MgO has been chosen as a quick start example. The default name of a structure file in ABACUS is `STRU`. The `STRU` file for FCC MgO in a LCAO calculation is shown below: ``` #This is the atom file containing all the information @@ -48,11 +48,10 @@ Next, the `INPUT` file is required, which sets all key parameters to direct ABAC ``` INPUT_PARAMETERS suffix MgO -ntype 2 pseudo_dir ./ orbital_dir ./ ecutwfc 100 # Rydberg -scf_thr 1e-4 # Rydberg +scf_thr 1e-6 # SCF criterion basis_type lcao calculation scf # this is the key parameter telling abacus to do a scf calculation ``` @@ -71,7 +70,7 @@ Gamma After all the above input files have been set, one should be able to run the first quick example. The simplest way is to use the command line, e.g.: ``` -mpirun -np 2 abacus +OMP_NUM_THREADS=1 mpirun -np 2 abacus ``` The main output information is stored in the file `OUT.MgO/running_scf.log`, which starts with @@ -138,10 +137,9 @@ The `INPUT` file follows as: ``` INPUT_PARAMETERS suffix MgO -ntype 2 pseudo_dir ./ ecutwfc 100 # Rydberg -scf_thr 1e-4 # Rydberg +scf_thr 1e-6 # SCF criterion basis_type pw # changes the type of basis set calculation scf # this is the key parameter telling abacus to do a scf calculation ``` @@ -201,12 +199,11 @@ The `INPUT` is provided as follows: ``` INPUT_PARAMETERS suffix MgO -ntype 2 nelec 0.0 pseudo_dir ./ orbital_dir ./ ecutwfc 100 # Rydberg -scf_thr 1e-4 # Rydberg +scf_thr 1e-6 # SCF criterion basis_type lcao calculation cell-relax # this is the key parameter telling abacus to do a optimization calculation force_thr_ev 0.01 # the threshold of the force convergence, in unit of eV/Angstrom @@ -223,11 +220,10 @@ The `INPUT` is provided as follows: ``` INPUT_PARAMETERS suffix MgO -ntype 2 nelec 0.0 pseudo_dir ./ ecutwfc 100 # Rydberg -scf_thr 1e-4 # Rydberg +scf_thr 1e-6 # SCF criterion basis_type pw calculation cell-relax # this is the key parameter telling abacus to do a optimization calculation force_thr_ev 0.01 # the threshold of the force convergence, in unit of eV/Angstrom @@ -236,4 +232,4 @@ relax_nmax 100 # the maximal number of ionic iteration steps out_stru 1 ``` -Use the same `KPT`, `STRU`, and pseudopotential files as in the above SCF-PW examples. The final optimized structure can be found in `STRU_NOW.cif` and `OUT.MgO/running_cell-relax.log`. +Use the same `KPT`, `STRU`, and pseudopotential files as in the above SCF-PW examples. The final optimized structure can be found in `STRU_NOW.cif` and `STRU_ION_D` with different format. diff --git a/docs/quick_start/output.md b/docs/quick_start/output.md index ac649265f7..6a6e150d8e 100644 --- a/docs/quick_start/output.md +++ b/docs/quick_start/output.md @@ -6,7 +6,7 @@ The following files are the central output files for ABACUS. After executing the Different from `INPUT` given by the users, `OUT.suffix/INPUT` contains all parameters in ABACUS. -> **Note:** `OUT.suffix/INPUT` contain the initial default of ABACUS instead of the real parameters used in calculations. If you want to figure out the real parameters used in calculations, you can open `OUT.suffix/runing_scf.log` and research corresponding parameter you are interested. +> **Note:** `OUT.suffix/INPUT` contain the initial default of ABACUS instead of the real parameters used in calculations. This file is stored for reproduction in case the default value is changed during development. If you want to figure out the real parameters used in calculations, you can open `OUT.suffix/runing_scf.log` and research corresponding parameter you are interested. For a complete list of input parameters, please consult this [instruction](../advanced/input_files/input-main.md). @@ -33,9 +33,9 @@ BAND Energy(ev) Occupation Kpoint = 1 5 9.41058 0 ``` -## *STRU_SIMPLE.cif* +## *STRU.cif* -ABACUS generates a `.cif` format structure file based on the input file `STRU`, facilitating users to visualize with commonly used software. `STRU_READIN_ADJUST.cif` is the structure after considering symmetry. +ABACUS generates a `.cif` format structure file based on the input file `STRU`, facilitating users to visualize with commonly used software. ## *warning.log* diff --git a/source/module_base/complexarray.cpp b/source/module_base/complexarray.cpp index b7d2abab01..becb8e8448 100644 --- a/source/module_base/complexarray.cpp +++ b/source/module_base/complexarray.cpp @@ -262,18 +262,4 @@ void point_mult(ComplexArray &in1, ComplexArray &in2, ComplexArray &out){ in1.ptr[i].real() * in2.ptr[i].imag() + in1.ptr[i].imag() * in2.ptr[i].real());} } -const std::complex &ComplexArray::operator()(const int ind1, const int ind2, const int ind3, const int ind4) const{ - assert(ind1>=0); assert(ind1=0); assert(ind2=0); assert(ind3=0); assert(ind4& ComplexArray::operator()(const int ind1,const int ind2,const int ind3,const int ind4){ - assert(ind1>=0); assert(ind1=0); assert(ind2=0); assert(ind3=0); assert(ind4 #include #include +#include namespace ModuleBase { @@ -58,11 +59,27 @@ class ComplexArray /// overloaded subscript operator for non-const std::complex Array const reference return creates an lvakue std::complex &operator() - (const int ind1=0, const int ind2=0, const int ind3=0, const int ind4=0); + (const int ind1=0, const int ind2=0, const int ind3=0, const int ind4=0) + { + assert(ind1>=0); assert(ind1=0); assert(ind2=0); assert(ind3=0); assert(ind4 &operator()(int, int, int, int, int); /// overloaded subscript operator for const std::complex Array const reference return creates an cvakue const std::complex &operator() - (const int ind1=0, const int ind2=0, const int ind3=0, const int ind4=0)const; + (const int ind1=0, const int ind2=0, const int ind3=0, const int ind4=0) const + { + assert(ind1>=0); assert(ind1=0); assert(ind2=0); assert(ind3=0); assert(ind4 &operator()(int, int, int, int, int)const; /**************************************************** diff --git a/source/module_basis/module_ao/parallel_orbitals.cpp b/source/module_basis/module_ao/parallel_orbitals.cpp index c25a12df77..4b6132cac4 100644 --- a/source/module_basis/module_ao/parallel_orbitals.cpp +++ b/source/module_basis/module_ao/parallel_orbitals.cpp @@ -91,16 +91,6 @@ void Parallel_Orbitals::set_atomic_trace(const int* iat2iwt, const int &nat, con this->atom_begin_col[nat] = this->ncol; } -// Get the number of columns of the parallel orbital matrix -int Parallel_Orbitals::get_col_size()const -{ - return this->ncol; -} -// Get the number of rows of the parallel orbital matrix -int Parallel_Orbitals::get_row_size()const -{ - return this->nrow; -} // Get the number of columns of the orbital matrix of the iat-th atom int Parallel_Orbitals::get_col_size(int iat) const { diff --git a/source/module_basis/module_ao/parallel_orbitals.h b/source/module_basis/module_ao/parallel_orbitals.h index fb052de4e0..77f094e361 100644 --- a/source/module_basis/module_ao/parallel_orbitals.h +++ b/source/module_basis/module_ao/parallel_orbitals.h @@ -73,8 +73,8 @@ class Parallel_Orbitals : public Parallel_2D * get_col_size(iat) : number of columns of Hamiltonian matrix in atom iat * get_row_size(iat) : number of rows of Hamiltonian matrix in atom iat */ - int get_col_size()const; - int get_row_size()const; + int get_col_size()const { return this->ncol; }; + int get_row_size()const { return this->nrow; }; int get_col_size(int iat) const; int get_row_size(int iat) const; diff --git a/source/module_basis/module_nao/atomic_radials.cpp b/source/module_basis/module_nao/atomic_radials.cpp index e2461a3970..42a9867662 100644 --- a/source/module_basis/module_nao/atomic_radials.cpp +++ b/source/module_basis/module_nao/atomic_radials.cpp @@ -221,51 +221,55 @@ void AtomicRadials::read_abacus_orb(std::ifstream& ifs, std::ofstream* ptr_log, is_read[i] = false; } - int l = 0; - int izeta = 0; - for (int i = 0; i != nchi_; ++i) + for (int l = 0; l <= lmax_; ++l) { - if (rank == 0) + for (int izeta = 0; izeta < nzeta_[l]; ++izeta) { - /* - * read the orbital information, including - * - * 1. angular momentum - * 2. zeta number - * 3. values on the grid - * */ - // ifs >> tmp >> tmp >> tmp; // skip "Type" "L" "N" - ifs >> tmp >> tmp >> tmp; -#ifdef __DEBUG - assert(tmp == "N"); -#endif - - ifs >> tmp >> l >> izeta; -#ifdef __DEBUG - assert(l >= 0 && l <= lmax_); - assert(izeta >= 0 && izeta < nzeta_[l]); -#endif - - for (int ir = 0; ir != ngrid; ++ir) + if (rank == 0) { - ifs >> rvalue[ir]; + /* + * read the orbital information, including + * + * 1. angular momentum + * 2. zeta number + * 3. values on the grid + * */ + while (ifs.good()) + { + while (ifs >> tmp) + { + if (tmp == "N") + { + break; + } + } + int read_l, read_izeta; + ifs >> tmp >> read_l >> read_izeta; + if (l == read_l && izeta == read_izeta) + { + break; + } + } + + for (int ir = 0; ir != ngrid; ++ir) + { + ifs >> rvalue[ir]; + } } - } #ifdef __MPI - Parallel_Common::bcast_int(l); - Parallel_Common::bcast_int(izeta); - Parallel_Common::bcast_double(rvalue, ngrid); + Parallel_Common::bcast_double(rvalue, ngrid); #endif #ifdef __DEBUG - assert(index(l, izeta) >= 0 && index(l, izeta) < nchi_); - assert(!is_read[index(l, izeta)]); + assert(index(l, izeta) >= 0 && index(l, izeta) < nchi_); + assert(!is_read[index(l, izeta)]); #endif - is_read[index(l, izeta)] = true; + is_read[index(l, izeta)] = true; - // skip the initialization of sbt_ in this stage - chi_[index(l, izeta)].build(l, true, ngrid, rgrid, rvalue, 0, izeta, symbol_, itype_, false); - chi_[index(l, izeta)].normalize(); + // skip the initialization of sbt_ in this stage + chi_[index(l, izeta)].build(l, true, ngrid, rgrid, rvalue, 0, izeta, symbol_, itype_, false); + chi_[index(l, izeta)].normalize(); + } } delete[] is_read; diff --git a/source/module_basis/module_pw/pw_basis.cpp b/source/module_basis/module_pw/pw_basis.cpp index 7c8a1293da..c3c65669a9 100644 --- a/source/module_basis/module_pw/pw_basis.cpp +++ b/source/module_basis/module_pw/pw_basis.cpp @@ -70,9 +70,14 @@ void PW_Basis::setuptransform() void PW_Basis::getstartgr() { - if(this->gamma_only) this->nmaxgr = ( this->npw > (this->nrxx+1)/2 ) ? this->npw : (this->nrxx+1)/2; - else this->nmaxgr = ( this->npw > this->nrxx ) ? this->npw : this->nrxx; - this->nmaxgr = (this->nz * this->nst > this->nxy * nplane) ? this->nz * this->nst : this->nxy * nplane; + if(this->gamma_only) + { + this->nmaxgr = ( this->npw > (this->nrxx+1)/2 ) ? this->npw : (this->nrxx+1)/2; + } + else + { + this->nmaxgr = ( this->npw > this->nrxx ) ? this->npw : this->nrxx; + } //--------------------------------------------- // sum : starting plane of FFT box. @@ -85,23 +90,35 @@ void PW_Basis::getstartgr() // Each processor has a set of full sticks, // 'rank_use' processor send a piece(npps[ip]) of these sticks(nst_per[rank_use]) // to all the other processors in this pool - for (int ip = 0;ip < poolnproc; ++ip) this->numg[ip] = this->nst_per[poolrank] * this->numz[ip]; + for (int ip = 0;ip < poolnproc; ++ip) + { + this->numg[ip] = this->nst_per[poolrank] * this->numz[ip]; + } // Each processor in a pool send a piece of each stick(nst_per[ip]) to // other processors in this pool // rank_use processor receive datas in npps[rank_p] planes. - for (int ip = 0;ip < poolnproc; ++ip) this->numr[ip] = this->nst_per[ip] * this->numz[poolrank]; + for (int ip = 0;ip < poolnproc; ++ip) + { + this->numr[ip] = this->nst_per[ip] * this->numz[poolrank]; + } // startg record the starting 'numg' position in each processor. this->startg[0] = 0; - for (int ip = 1;ip < poolnproc; ++ip) this->startg[ip] = this->startg[ip-1] + this->numg[ip-1]; + for (int ip = 1;ip < poolnproc; ++ip) + { + this->startg[ip] = this->startg[ip-1] + this->numg[ip-1]; + } // startr record the starting 'numr' position this->startr[0] = 0; - for (int ip = 1;ip < poolnproc; ++ip) this->startr[ip] = this->startr[ip-1] + this->numr[ip-1]; + for (int ip = 1;ip < poolnproc; ++ip) + { + this->startr[ip] = this->startr[ip-1] + this->numr[ip-1]; + } return; } @@ -112,7 +129,10 @@ void PW_Basis::getstartgr() /// void PW_Basis::collect_local_pw() { - if(this->npw <= 0) return; + if(this->npw <= 0) + { + return; + } this->ig_gge0 = -1; delete[] this->gg; this->gg = new double[this->npw]; delete[] this->gdirect; this->gdirect = new ModuleBase::Vector3[this->npw]; @@ -127,16 +147,28 @@ void PW_Basis::collect_local_pw() int ixy = this->is2fftixy[is]; int ix = ixy / this->fftny; int iy = ixy % this->fftny; - if (ix >= int(this->nx/2) + 1) ix -= this->nx; - if (iy >= int(this->ny/2) + 1) iy -= this->ny; - if (iz >= int(this->nz/2) + 1) iz -= this->nz; + if (ix >= int(this->nx/2) + 1) + { + ix -= this->nx; + } + if (iy >= int(this->ny/2) + 1) + { + iy -= this->ny; + } + if (iz >= int(this->nz/2) + 1) + { + iz -= this->nz; + } f.x = ix; f.y = iy; f.z = iz; this->gg[ig] = f * (this->GGT * f); this->gdirect[ig] = f; this->gcar[ig] = f * this->G; - if(this->gg[ig] < 1e-8) this->ig_gge0 = ig; + if(this->gg[ig] < 1e-8) + { + this->ig_gge0 = ig; + } } return; } @@ -148,10 +180,13 @@ void PW_Basis::collect_local_pw() /// void PW_Basis::collect_uniqgg() { - if(this->npw <= 0) return; + if(this->npw <= 0) + { + return; + } this->ig_gge0 = -1; delete[] this->ig2igg; this->ig2igg = new int [this->npw]; -//add by A.s 202406 + int *sortindex = new int [this->npw];//Reconstruct the mapping of the plane wave index ig according to the energy size of the plane waves double *tmpgg = new double [this->npw];//Ranking the plane waves by energy size while ensuring that the same energy is preserved for each wave to correspond double *tmpgg2 = new double [this->npw];//ranking the plane waves by energy size and removing the duplicates @@ -164,14 +199,26 @@ void PW_Basis::collect_uniqgg() int ixy = this->is2fftixy[is]; int ix = ixy / this->fftny; int iy = ixy % this->fftny; - if (ix >= int(this->nx/2) + 1) ix -= this->nx; - if (iy >= int(this->ny/2) + 1) iy -= this->ny; - if (iz >= int(this->nz/2) + 1) iz -= this->nz; + if (ix >= int(this->nx/2) + 1) + { + ix -= this->nx; + } + if (iy >= int(this->ny/2) + 1) + { + iy -= this->ny; + } + if (iz >= int(this->nz/2) + 1) + { + iz -= this->nz; + } f.x = ix; f.y = iy; f.z = iz; tmpgg[ig] = f * (this->GGT * f); - if(tmpgg[ig] < 1e-8) this->ig_gge0 = ig; + if(tmpgg[ig] < 1e-8) + { + this->ig_gge0 = ig; + } } ModuleBase::GlobalFunc::ZEROS(sortindex, this->npw); @@ -215,7 +262,10 @@ void PW_Basis::collect_uniqgg() void PW_Basis::getfftixy2is(int * fftixy2is) const { //Note: please assert when is1 >= is2, fftixy2is[is1] >= fftixy2is[is2]! - for(int ixy = 0 ; ixy < this->fftnxy ; ++ixy) fftixy2is[ixy] = -1; + for(int ixy = 0 ; ixy < this->fftnxy ; ++ixy) + { + fftixy2is[ixy] = -1; + } int ixy = 0; for(int is = 0; is < this->nst; ++is) { diff --git a/source/module_basis/module_pw/pw_basis.h b/source/module_basis/module_pw/pw_basis.h index 9bd48d270f..47827000eb 100644 --- a/source/module_basis/module_pw/pw_basis.h +++ b/source/module_basis/module_pw/pw_basis.h @@ -237,11 +237,11 @@ class PW_Basis int nx=0, ny=0, nz=0, nxyz=0, nxy=0; // Gamma_only: fftny = int(ny/2)-1 , others: fftny = ny int liy=0, riy=0;// liy: the left edge of the pw ball; riy: the right edge of the pw ball in the y direction int lix=0, rix=0;// lix: the left edge of the pw ball; rix: the right edge of the pw ball in the x direction - bool xprime = true; // true: when do recip2real, x-fft will be done last and when doing real2recip, x-fft will be done first; false: y-fft - // For gamma_only, true: we use half x; false: we use half y + bool xprime = true; // true: when do recip2real, x-fft will be done last and when doing real2recip, x-fft will be + // done first; false: y-fft For gamma_only, true: we use half x; false: we use half y int ng_xeq0 = 0; //only used when xprime = true, number of g whose gx = 0 - int nmaxgr=0; // Gamma_only: max between npw and (nrxx+1)/2, others: max between npw and nrxx - // Thus complex[nmaxgr] is able to contain either reciprocal or real data + int nmaxgr = 0; // Gamma_only: max between npw and (nrxx+1)/2, others: max between npw and nrxx + // Thus complex[nmaxgr] is able to contain either reciprocal or real data // FFT ft; FFT_Bundle fft_bundle; //The position of pointer in and out can be equal(in-place transform) or different(out-of-place transform). diff --git a/source/module_basis/module_pw/test_serial/pw_basis_test.cpp b/source/module_basis/module_pw/test_serial/pw_basis_test.cpp index eeff14b8f9..0814263ef2 100644 --- a/source/module_basis/module_pw/test_serial/pw_basis_test.cpp +++ b/source/module_basis/module_pw/test_serial/pw_basis_test.cpp @@ -278,7 +278,7 @@ TEST_F(PWBasisTEST,GetStartGR) EXPECT_EQ(pwb.nrxx,8000); EXPECT_EQ(pwb.nxy,400); EXPECT_EQ(pwb.nplane,20); - EXPECT_EQ(pwb.nmaxgr,8000); + EXPECT_EQ(pwb.nmaxgr,4000); EXPECT_EQ(pwb.numg[0],3120); EXPECT_EQ(pwb.numr[0],3120); EXPECT_EQ(pwb.startg[0],0); diff --git a/source/module_cell/module_symmetry/symmetry.cpp b/source/module_cell/module_symmetry/symmetry.cpp index bc3f4c21e6..7d892725eb 100644 --- a/source/module_cell/module_symmetry/symmetry.cpp +++ b/source/module_cell/module_symmetry/symmetry.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "module_parameter/parameter.h" #include "symmetry.h" #include "module_parameter/parameter.h" @@ -7,7 +8,7 @@ #include "module_base/mathzone.h" #include "module_base/constants.h" #include "module_base/timer.h" - +#include "module_io/output.h" namespace ModuleSymmetry { int Symmetry::symm_flag = 0; @@ -124,49 +125,8 @@ void Symmetry::analy_sys(const Lattice& lat, const Statistics& st, Atom* atoms, } if (!pricell_loop && PARAM.inp.nspin == 2) - {//analyze symmetry for spin-up atoms only - std::vector pos_spinup; - for (int it = 0;it < ntype;++it) - { - int na_spinup = 0; - for (int ia = 0; ia < atoms[it].na; ++ia) { - if (atoms[it].mag[ia] > -this->epsilon) { - ++na_spinup; - } - } - this->na[it] = na_spinup; - //update newpos - for (int ia = 0;ia < atoms[it].na;++ia) - { - if (atoms[it].mag[ia] > -this->epsilon) - { - pos_spinup.push_back(this->newpos[3 * (istart[it] + ia)]); - pos_spinup.push_back(this->newpos[3 * (istart[it] + ia) + 1]); - pos_spinup.push_back(this->newpos[3 * (istart[it] + ia) + 2]); - } - } - // update start to spin-up configuration - if (it > 0) { - istart[it] = istart[it - 1] + na[it - 1]; - } - if (na[it] < na[itmin_type]) - { - this->itmin_type = it; - this->itmin_start = istart[it]; - } - } - this->getgroup(nrot_out, nrotk_out, ofs_running, this->nop, this->symop, this->gmatrix, this->gtrans, - pos_spinup.data(), this->rotpos, this->index, this->itmin_type, this->itmin_start, this->istart, this->na); - // recover na and istart - for (int it = 0;it < ntype;++it) - { - this->na[it] = atoms[it].na; - if (it > 0) { - istart[it] = istart[it - 1] + na[it - 1]; - } - } - // For AFM analysis End - //------------------------------------------------------------ + { + this->analyze_magnetic_group(atoms, st, nrot_out, nrotk_out); } else { @@ -174,7 +134,7 @@ void Symmetry::analy_sys(const Lattice& lat, const Statistics& st, Atom* atoms, // nrot_out: the number of pure point group rotations // nrotk_out: the number of all space group operations this->getgroup(nrot_out, nrotk_out, ofs_running, this->nop, this->symop, this->gmatrix, this->gtrans, - this->newpos, this->rotpos, this->index, this->itmin_type, this->itmin_start, this->istart, this->na); + this->newpos, this->rotpos, this->index, this->ntype, this->itmin_type, this->itmin_start, this->istart, this->na); } }; @@ -889,7 +849,7 @@ void Symmetry::lattice_type( void Symmetry::getgroup(int& nrot, int& nrotk, std::ofstream& ofs_running, const int& nop, const ModuleBase::Matrix3* symop, ModuleBase::Matrix3* gmatrix, ModuleBase::Vector3* gtrans, - double* pos, double* rotpos, int* index, const int itmin_type, const int itmin_start, int* istart, int* na)const + double* pos, double* rotpos, int* index, const int ntype, const int itmin_type, const int itmin_start, int* istart, int* na)const { ModuleBase::TITLE("Symmetry", "getgroup"); @@ -913,7 +873,7 @@ void Symmetry::getgroup(int& nrot, int& nrotk, std::ofstream& ofs_running, const //std::cout << "nop = " <checksym(symop[i], gtrans[i], pos, rotpos, index, itmin_type, itmin_start, istart, na); + bool s_flag = this->checksym(symop[i], gtrans[i], pos, rotpos, index, ntype, itmin_type, itmin_start, istart, na); if (s_flag == 1) { //------------------------------ @@ -992,7 +952,7 @@ void Symmetry::getgroup(int& nrot, int& nrotk, std::ofstream& ofs_running, const } bool Symmetry::checksym(const ModuleBase::Matrix3& s, ModuleBase::Vector3& gtrans, - double* pos, double* rotpos, int* index, const int itmin_type, const int itmin_start, int* istart, int* na)const + double* pos, double* rotpos, int* index, const int ntype, const int itmin_type, const int itmin_start, int* istart, int* na)const { //---------------------------------------------- // checks whether a point group symmetry element @@ -2297,4 +2257,70 @@ bool Symmetry::is_all_movable(const Atom* atoms, const Statistics& st)const } return all_mbl; } + +void Symmetry::analyze_magnetic_group(const Atom* atoms, const Statistics& st, int& nrot_out, int& nrotk_out) +{ + // 1. classify atoms with different magmom + // (use symmetry_prec to judge if two magmoms are the same) + std::vector> mag_type_atoms; + for (int it = 0;it < ntype;++it) + { + for (int ia = 0; ia < atoms[it].na; ++ia) + { + bool find = false; + for (auto& mt : mag_type_atoms) + { + const int mag_iat = *mt.begin(); + const int mag_it = st.iat2it[mag_iat]; + const int mag_ia = st.iat2ia[mag_iat]; + if (it == mag_it && this->equal(atoms[it].mag[ia], atoms[mag_it].mag[mag_ia])) + { + mt.insert(st.itia2iat(it, ia)); + find = true; + break; + } + } + if (!find) + { + mag_type_atoms.push_back(std::set({ st.itia2iat(it,ia) })); + } + } + } + + // 2. get the start index, number of atoms and positions for each mag_type + std::vector mag_istart(mag_type_atoms.size()); + std::vector mag_na(mag_type_atoms.size()); + std::vector mag_pos; + int mag_itmin_type = 0; + int mag_itmin_start = 0; + for (int mag_it = 0;mag_it < mag_type_atoms.size(); ++mag_it) + { + mag_na[mag_it] = mag_type_atoms.at(mag_it).size(); + if (mag_it > 0) + { + mag_istart[mag_it] = mag_istart[mag_it - 1] + mag_na[mag_it - 1]; + } + if (mag_na[mag_it] < mag_na[itmin_type]) + { + mag_itmin_type = mag_it; + mag_itmin_start = mag_istart[mag_it]; + } + for (auto& mag_iat : mag_type_atoms.at(mag_it)) + { + // this->newpos have been ordered by original structure(ntype, na), it cannot be directly used here. + // we need to reset the calculate again the coordinate of the new structure. + const ModuleBase::Vector3 direct_tmp = atoms[st.iat2it[mag_iat]].tau[st.iat2ia[mag_iat]] * this->optlat.Inverse(); + std::array direct = { direct_tmp.x, direct_tmp.y, direct_tmp.z }; + for (int i = 0; i < 3; ++i) + { + this->check_translation(direct[i], -floor(direct[i])); + this->check_boundary(direct[i]); + mag_pos.push_back(direct[i]); + } + } + } + // 3. analyze the effective structure + this->getgroup(nrot_out, nrotk_out, GlobalV::ofs_running, this->nop, this->symop, this->gmatrix, this->gtrans, + mag_pos.data(), this->rotpos, this->index, mag_type_atoms.size(), mag_itmin_type, mag_itmin_start, mag_istart.data(), mag_na.data()); +} } diff --git a/source/module_cell/module_symmetry/symmetry.h b/source/module_cell/module_symmetry/symmetry.h index e5f4ad7950..c3ef81607d 100644 --- a/source/module_cell/module_symmetry/symmetry.h +++ b/source/module_cell/module_symmetry/symmetry.h @@ -91,9 +91,10 @@ class Symmetry : public Symmetry_Basic void getgroup(int& nrot, int& nrotk, std::ofstream& ofs_running, const int& nop, const ModuleBase::Matrix3* symop, ModuleBase::Matrix3* gmatrix, ModuleBase::Vector3* gtrans, - double* pos, double* rotpos, int* index, const int itmin_type, const int itmin_start, int* istart, int* na)const; + double* pos, double* rotpos, int* index, const int ntype, const int itmin_type, const int itmin_start, int* istart, int* na)const; bool checksym(const ModuleBase::Matrix3& s, ModuleBase::Vector3& gtrans, - double* pos, double* rotpos, int* index, const int itmin_type, const int itmin_start, int* istart, int* na)const; + double* pos, double* rotpos, int* index, const int itmin_type, + const int ntype, const int itmin_start, int* istart, int* na)const; /// @brief primitive cell analysis void pricell(double* pos, const Atom* atoms); @@ -145,6 +146,10 @@ class Symmetry : public Symmetry_Basic /// Loop the magmom of each atoms in its type when NSPIN>1. If not all the same, primitive cells should not be looped in rhog_symmetry. bool magmom_same_check(const Atom* atoms)const; + /// Analyze magnetic group without time-reversal symmetry + /// (because currently the charge density symmetrization does not support it) + /// Method: treat atoms with different magmom as atoms of different type + void analyze_magnetic_group(const Atom* atoms, const Statistics& st, int& nrot_out, int& nrotk_out); }; } diff --git a/source/module_cell/read_atoms.cpp b/source/module_cell/read_atoms.cpp index f752ec4b34..bd780537a8 100644 --- a/source/module_cell/read_atoms.cpp +++ b/source/module_cell/read_atoms.cpp @@ -864,7 +864,7 @@ bool UnitCell::read_atom_positions(std::ifstream &ifpos, std::ofstream &ofs_runn } // atomic initial magnetism will be autoset if user set zero for every atom // one exception is `lspinorb 1` with `noncolin 0`, this setting imply no-mag material but SOC included - if (autoset_mag && !PARAM.inp.lspinorb || PARAM.inp.noncolin) + if (autoset_mag && (!PARAM.inp.lspinorb || PARAM.inp.noncolin) ) { if(PARAM.inp.nspin==4) { diff --git a/source/module_cell/read_pp_upf100.cpp b/source/module_cell/read_pp_upf100.cpp index bfff72f3ca..bbac3f08aa 100644 --- a/source/module_cell/read_pp_upf100.cpp +++ b/source/module_cell/read_pp_upf100.cpp @@ -2,7 +2,7 @@ // read pseudopot_upf potential "upf" in the Unified // Pseudopot_upfpotential Format -int Pseudopot_upf::read_pseudo_upf(std::ifstream &ifs, Atom_pseudo& pp) +int Pseudopot_upf::read_pseudo_upf(std::ifstream& ifs, Atom_pseudo& pp) { std::string dummy; pp.has_so = false; @@ -77,13 +77,13 @@ int Pseudopot_upf::read_pseudo_upf(std::ifstream &ifs, Atom_pseudo& pp) // If present, search for nlcc if (pp.nlcc) { - ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); - //--------------------- - // call member function - //--------------------- - read_pseudo_nlcc(ifs, pp); - ModuleBase::GlobalFunc::SCAN_END(ifs, ""); - } + ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); + //--------------------- + // call member function + //--------------------- + read_pseudo_nlcc(ifs, pp); + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + } if (!this->coulomb_potential) { @@ -96,59 +96,58 @@ int Pseudopot_upf::read_pseudo_upf(std::ifstream &ifs, Atom_pseudo& pp) ModuleBase::GlobalFunc::SCAN_END(ifs, ""); } - // Search for Nonlocal potential - ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); - //--------------------- - // call member function - //--------------------- - read_pseudo_nl(ifs, pp); - ModuleBase::GlobalFunc::SCAN_END(ifs, ""); - - // Search for atomic wavefunctions - ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); - //--------------------- - // call member function - //--------------------- - read_pseudo_pswfc(ifs, pp); - ModuleBase::GlobalFunc::SCAN_END(ifs, ""); - - // Search for atomic charge - ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); - //--------------------- - // call member function - //--------------------- - read_pseudo_rhoatom(ifs, pp); - ModuleBase::GlobalFunc::SCAN_END(ifs, ""); - - // Search for add_info - if (pp.has_so) - { - ModuleBase::GlobalFunc::SCAN_BEGIN (ifs,"");//added by zhengdy-soc - //--------------------- - // call member function - //--------------------- - read_pseudo_so(ifs, pp); - ModuleBase::GlobalFunc::SCAN_END (ifs,""); - } - - ifs.clear(); - ifs.seekg(0); - - // return 0: read in sucessfully. - return 0; -}// end subroutine read_pseudopot_upf - - -void Pseudopot_upf::read_pseudo_header(std::ifstream &ifs, Atom_pseudo& pp) + // Search for Nonlocal potential + ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); + //--------------------- + // call member function + //--------------------- + read_pseudo_nl(ifs, pp); + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + + // Search for atomic wavefunctions + ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); + //--------------------- + // call member function + //--------------------- + read_pseudo_pswfc(ifs, pp); + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + + // Search for atomic charge + ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); + //--------------------- + // call member function + //--------------------- + read_pseudo_rhoatom(ifs, pp); + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + + // Search for add_info + if (pp.has_so) + { + ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, ""); // added by zhengdy-soc + //--------------------- + // call member function + //--------------------- + read_pseudo_so(ifs, pp); + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + } + + ifs.clear(); + ifs.seekg(0); + + // return 0: read in sucessfully. + return 0; +} // end subroutine read_pseudopot_upf + +void Pseudopot_upf::read_pseudo_header(std::ifstream& ifs, Atom_pseudo& pp) { - ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.nv);// Version number - ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.psd);// Element label - - // Type of pseudo : NC or US - ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.pp_type); - if(pp.pp_type=="US") - { - pp.tvanp = true; + ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.nv); // Version number + ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.psd); // Element label + + // Type of pseudo : NC or US + ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.pp_type); + if (pp.pp_type == "US") + { + pp.tvanp = true; this->coulomb_potential = false; } else if (pp.pp_type == "NC") @@ -174,110 +173,110 @@ void Pseudopot_upf::read_pseudo_header(std::ifstream &ifs, Atom_pseudo& pp) if (nlc == "T") { - pp.nlcc = true; - } - else - { - pp.nlcc = false; - } - - // mohan modify 2009-12-15 - std::string junk; - ifs >> junk >> junk >> junk >> junk; - ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.xc_func); + pp.nlcc = true; + } + else + { + pp.nlcc = false; + } + + // mohan modify 2009-12-15 + std::string junk; + ifs >> junk >> junk >> junk >> junk; + ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.xc_func); ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.zv); - ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.etotps); + ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.etotps); - ifs >> pp.ecutwfc >> pp.ecutrho; - ifs.ignore(75, '\n'); + ifs >> pp.ecutwfc >> pp.ecutrho; + ifs.ignore(75, '\n'); - ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.lmax); - ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.mesh); - if (pp.mesh%2 == 0) - { - pp.mesh -= 1; + ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.lmax); + ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.mesh); + if (pp.mesh % 2 == 0) + { + pp.mesh -= 1; this->mesh_changed = true; - } - - ifs >> pp.nchi >> pp.nbeta ; - ifs.ignore(75, '\n'); - ifs.ignore(75, '\n'); - - pp.els = std::vector(pp.nchi, ""); - pp.lchi = std::vector(pp.nchi, 0); - pp.oc = std::vector(pp.nchi, 0.0); - - for(int i=0;i> pp.els[i] >> pp.lchi[i] >> pp.oc[i]; - } - if (this->coulomb_potential) - { - pp.nbeta = 0; + } + + ifs >> pp.nchi >> pp.nbeta; + ifs.ignore(75, '\n'); + ifs.ignore(75, '\n'); + + pp.els = std::vector(pp.nchi, ""); + pp.lchi = std::vector(pp.nchi, 0); + pp.oc = std::vector(pp.nchi, 0.0); + + for (int i = 0; i < pp.nchi; i++) + { + ifs >> pp.els[i] >> pp.lchi[i] >> pp.oc[i]; + } + if (this->coulomb_potential) + { + pp.nbeta = 0; pp.lmax = 0; this->lloc = 0; - } - return; + } + return; } -void Pseudopot_upf::read_pseudo_mesh(std::ifstream &ifs, Atom_pseudo& pp) +void Pseudopot_upf::read_pseudo_mesh(std::ifstream& ifs, Atom_pseudo& pp) { - assert(pp.mesh>0); + assert(pp.mesh > 0); - pp.r = std::vector(pp.mesh, 0.0); - pp.rab = std::vector(pp.mesh, 0.0); + pp.r = std::vector(pp.mesh, 0.0); + pp.rab = std::vector(pp.mesh, 0.0); - int ir = 0; + int ir = 0; - if( ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "", false) ) - { - for (ir = 0;ir < pp.mesh;ir++) - { - ifs >> pp.r[ir]; - } + if (ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "", false)) + { + for (ir = 0; ir < pp.mesh; ir++) + { + ifs >> pp.r[ir]; + } this->skip_number(ifs, this->mesh_changed); - ModuleBase::GlobalFunc::SCAN_END(ifs, ""); - } - - if( ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "", false) ) - { - for (ir = 0;ir < pp.mesh;ir++) - { - ifs >> pp.rab[ir]; - } + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + } + + if (ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "", false)) + { + for (ir = 0; ir < pp.mesh; ir++) + { + ifs >> pp.rab[ir]; + } this->skip_number(ifs, this->mesh_changed); - ModuleBase::GlobalFunc::SCAN_END(ifs, ""); - } - return; + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + } + return; } -void Pseudopot_upf::read_pseudo_nlcc(std::ifstream &ifs, Atom_pseudo& pp) +void Pseudopot_upf::read_pseudo_nlcc(std::ifstream& ifs, Atom_pseudo& pp) { - assert(pp.mesh>0); - pp.rho_atc = std::vector(pp.mesh, 0.0); - for (int ir = 0;ir < pp.mesh;ir++) - { - ifs >> pp.rho_atc[ir]; - } + assert(pp.mesh > 0); + pp.rho_atc = std::vector(pp.mesh, 0.0); + for (int ir = 0; ir < pp.mesh; ir++) + { + ifs >> pp.rho_atc[ir]; + } this->skip_number(ifs, this->mesh_changed); - return; + return; } -void Pseudopot_upf::read_pseudo_local(std::ifstream &ifs, Atom_pseudo& pp) +void Pseudopot_upf::read_pseudo_local(std::ifstream& ifs, Atom_pseudo& pp) { - assert(pp.mesh>0); - pp.vloc_at = std::vector(pp.mesh, 0.0); + assert(pp.mesh > 0); + pp.vloc_at = std::vector(pp.mesh, 0.0); - for (int ir = 0;ir < pp.mesh;ir++) - { - ifs >> pp.vloc_at[ir]; - } + for (int ir = 0; ir < pp.mesh; ir++) + { + ifs >> pp.vloc_at[ir]; + } this->skip_number(ifs, this->mesh_changed); - return; + return; } -void Pseudopot_upf::read_pseudo_nl(std::ifstream &ifs, Atom_pseudo& pp) +void Pseudopot_upf::read_pseudo_nl(std::ifstream& ifs, Atom_pseudo& pp) { // int nb, mb, n, ir, idum, ldum, lp, i, ikk; int nb = 0; @@ -305,7 +304,7 @@ void Pseudopot_upf::read_pseudo_nl(std::ifstream &ifs, Atom_pseudo& pp) { ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "", false); ifs >> idum; - ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.lll[i]);// nl_1 + ModuleBase::GlobalFunc::READ_VALUE(ifs, pp.lll[i]); // nl_1 ModuleBase::GlobalFunc::READ_VALUE(ifs, this->kbeta[i]); // nl_2 if (this->kbeta[i] > pp.mesh) { @@ -315,9 +314,9 @@ void Pseudopot_upf::read_pseudo_nl(std::ifstream &ifs, Atom_pseudo& pp) for (ir = 0; ir < this->kbeta[i]; ir++) { - ifs >> pp.betar(i, ir);// nl_3 - } - ModuleBase::GlobalFunc::SCAN_END(ifs, ""); + ifs >> pp.betar(i, ir); // nl_3 + } + ModuleBase::GlobalFunc::SCAN_END(ifs, ""); pp.kkbeta = (this->kbeta[i] > pp.kkbeta) ? this->kbeta[i] : pp.kkbeta; } @@ -327,19 +326,19 @@ void Pseudopot_upf::read_pseudo_nl(std::ifstream &ifs, Atom_pseudo& pp) for (int i = 0; i < this->nd; i++) { double swap; - ifs >> nb >> mb >> swap; - nb--; - mb--; - assert( nb >= 0); // mohan add 2011-03-10 - assert( mb >= 0); - pp.dion(mb, nb) = swap;// nl_5 - pp.dion(nb, mb) = swap; + ifs >> nb >> mb >> swap; + nb--; + mb--; + assert(nb >= 0); // mohan add 2011-03-10 + assert(mb >= 0); + pp.dion(mb, nb) = swap; // nl_5 + pp.dion(nb, mb) = swap; } ModuleBase::GlobalFunc::SCAN_END(ifs, ""); - // QIJ - if (pp.tvanp) - { + // QIJ + if (pp.tvanp) + { if (!ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "", false)) { ModuleBase::GlobalFunc::SCAN_BEGIN(ifs, "", false); @@ -435,95 +434,96 @@ void Pseudopot_upf::read_pseudo_nl(std::ifstream &ifs, Atom_pseudo& pp) return; } -void Pseudopot_upf::read_pseudo_pswfc(std::ifstream &ifs, Atom_pseudo& pp) +void Pseudopot_upf::read_pseudo_pswfc(std::ifstream& ifs, Atom_pseudo& pp) { - pp.chi.create(pp.nchi, pp.mesh); - for (int i=0;i> OrbitalName >> BelongToL >> occupation >> dummy; - for (int ir = 0;ir < pp.mesh;ir++) - { - ifs >> pp.chi(i, ir); - } + pp.chi.create(pp.nchi, pp.mesh); + for (int i = 0; i < pp.nchi; i++) + { + std::string OrbitalName; + int BelongToL = 0; + double occupation = 0.0; + std::string dummy; + ifs >> OrbitalName >> BelongToL >> occupation >> dummy; + for (int ir = 0; ir < pp.mesh; ir++) + { + ifs >> pp.chi(i, ir); + } this->skip_number(ifs, this->mesh_changed); - } - return; + } + return; } -void Pseudopot_upf::read_pseudo_rhoatom(std::ifstream &ifs, Atom_pseudo& pp) +void Pseudopot_upf::read_pseudo_rhoatom(std::ifstream& ifs, Atom_pseudo& pp) { - pp.rho_at = std::vector(pp.mesh, 0.0); - for (int ir = 0;ir < pp.mesh;ir++) - { - ifs >> pp.rho_at[ir]; - } + pp.rho_at = std::vector(pp.mesh, 0.0); + for (int ir = 0; ir < pp.mesh; ir++) + { + ifs >> pp.rho_at[ir]; + } this->skip_number(ifs, this->mesh_changed); - return; + return; } -void Pseudopot_upf::read_pseudo_so(std::ifstream &ifs, Atom_pseudo& pp) +void Pseudopot_upf::read_pseudo_so(std::ifstream& ifs, Atom_pseudo& pp) { - //read soc info from upf, added by zhengdy-soc - if(!pp.has_so) { return;} - pp.nn = std::vector(pp.nchi, 0); - pp.jchi = std::vector(pp.nchi, 0.0); - pp.jjj = std::vector(pp.nbeta, 0.0); - //RELWFC - for(int nw=0;nw< pp.nchi;nw++) - { - ifs >> pp.els[nw] >>pp.nn[nw] >> pp.lchi[nw] >> pp.jchi[nw] >> pp.oc[nw]; - if(pp.lchi[nw]-pp.jchi[nw]-0.5>1e-7 && pp.lchi[nw]-pp.jchi[nw]-0.5<1e-7) - { - std::cout<<"Ignore ADDINFO section"<> pp.lll[nb] >> pp.jjj[nb]; - if(pp.lll[nb]-pp.jjj[nb]-0.5>1e-7 && pp.lll[nb]-pp.jjj[nb]-0.5<1e-7) - { - std::cout<<"Ignore ADDINFO section"<(pp.nchi, 0); + pp.jchi = std::vector(pp.nchi, 0.0); + pp.jjj = std::vector(pp.nbeta, 0.0); + // RELWFC + for (int nw = 0; nw < pp.nchi; nw++) + { + ifs >> pp.els[nw] >> pp.nn[nw] >> pp.lchi[nw] >> pp.jchi[nw] >> pp.oc[nw]; + if (std::abs(std::abs(pp.lchi[nw] - pp.jchi[nw]) - 0.5) > 1e-7) + { + std::cout << "Ignore ADDINFO section" << std::endl; + pp.has_so = false; + } + } + // RELBETA + for (int nb = 0; nb < pp.nbeta; nb++) + { + ifs >> pp.lll[nb] >> pp.jjj[nb]; + if (std::abs(std::abs(pp.lll[nb] - pp.jjj[nb]) - 0.5) > 1e-7) + { + std::cout << "Ignore ADDINFO section" << std::endl; + pp.has_so = false; + } + } + return; } - -void Pseudopot_upf::print_pseudo_upf(std::ofstream &ofs, Atom_pseudo& pp) +void Pseudopot_upf::print_pseudo_upf(std::ofstream& ofs, Atom_pseudo& pp) { - ModuleBase::TITLE("Pseudopot_upf","print_pseudo_upf"); - ofs << " ==== read_pseudo_upf === " << std::endl; - - // print header - ofs << " has_so: " << pp.has_so << std::endl; - ofs << " Version number : " << pp.nv << std::endl; - ofs << " Element label : " << pp.psd << std::endl; - ofs << " pp_type: " << pp.pp_type << std::endl; - ofs << " tvanp: " << pp.tvanp << std::endl; - ofs << " nlcc: " << pp.nlcc << std::endl; - ofs << " dft: " << pp.xc_func << std::endl; - ofs << " zp: " << pp.zv << std::endl; - ofs << " etotps: " << pp.etotps << std::endl; - ofs << " ecutwfc: " << pp.ecutwfc << std::endl; - ofs << " ecutrho: " << pp.ecutrho << std::endl; - ofs << " lmax: " << pp.lmax << std::endl; - ofs << " mesh: " << pp.mesh << std::endl; - ofs << " nwfc: " << pp.nchi << std::endl; - ofs << " nbeta: " << pp.nbeta << std::endl; - for(int i=0; iread_pseudo_upf(ifs, *upf); - EXPECT_TRUE(upf->has_so); // has soc info + EXPECT_FALSE(upf->has_so); // no soc info EXPECT_EQ(upf->nv,0); // number of version EXPECT_EQ(upf->psd,"Te"); // element label EXPECT_EQ(upf->pp_type,"NC"); // pp_type @@ -764,16 +764,16 @@ TEST_F(ReadPPTest, AverageErrReturns) double lambda = 1.0; // LSPINORB = 0 std::ifstream ifs; - ifs.open("./support/Te.pbe-rrkj.UPF"); + ifs.open("./support/Si.rel-pbe-rrkj.UPF"); read_pp->read_pseudo_upf(ifs, *upf); EXPECT_TRUE(upf->has_so); // has soc info PARAM.input.lspinorb = 0; ierr = read_pp->average_p(lambda, *upf); - EXPECT_EQ(upf->nbeta,3); - EXPECT_EQ(ierr,1); + EXPECT_EQ(upf->nbeta,2); + EXPECT_EQ(ierr,0); // LSPINORB = 1 ierr = read_pp->average_p(lambda, *upf); - EXPECT_EQ(ierr,1); + EXPECT_EQ(ierr,0); ifs.close(); } diff --git a/source/module_cell/test/support/Si.rel-pbe-rrkj.UPF b/source/module_cell/test/support/Si.rel-pbe-rrkj.UPF new file mode 100644 index 0000000000..cc03148f79 --- /dev/null +++ b/source/module_cell/test/support/Si.rel-pbe-rrkj.UPF @@ -0,0 +1,2737 @@ + +Generated using "atomic" code by A. Dal Corso (espresso distribution) +Author: anonymous Generation date: 27Apr2007 + 2 The Pseudo was generated with a Fully-Relativistic Calculation + 2 2.4000000E+00 L component and cutoff radius for Local Potential +nl pn l occ Rcut Rcut US E pseu +3S 1 0 2.00 2.40000000000 2.40000000000 -0.79355814405 +3P 2 1 2.00 2.40000000000 2.40000000000 -0.30060327675 +3P 2 1 0.00 2.40000000000 2.40000000000 -0.29828881130 +3D 3 2 0.00 2.40000000000 2.40000000000 -0.10000000000 +3D 3 2 0.00 2.40000000000 2.40000000000 -0.10000000000 + + + + + 0 Version Number + Si Element + NC Norm - Conserving pseudopotential + F Nonlinear Core Correction + SLA PW PBX PBC PBE Exchange-Correlation functional + 4.00000000000 Z valence + -7.48292757640 Total energy + 0.0000000 0.0000000 Suggested cutoff for wfc and rho + 2 Max angular momentum component + 1141 Number of points in mesh + 3 3 Number of Wavefunctions, Number of Projectors + Wavefunctions nl l occ + 3S 0 2.00 + 3P 1 2.00 + 3P 1 0.00 + + + + + + 6.51344261110E-05 6.59537163335E-05 6.67833119583E-05 6.76233426115E-05 + 6.84739395496E-05 6.93352356800E-05 7.02073655821E-05 7.10904655278E-05 + 7.19846735035E-05 7.28901292308E-05 7.38069741891E-05 7.47353516373E-05 + 7.56754066363E-05 7.66272860714E-05 7.75911386760E-05 7.85671150538E-05 + 7.95553677032E-05 8.05560510407E-05 8.15693214250E-05 8.25953371817E-05 + 8.36342586279E-05 8.46862480972E-05 8.57514699651E-05 8.68300906746E-05 + 8.79222787624E-05 8.90282048851E-05 9.01480418460E-05 9.12819646219E-05 + 9.24301503904E-05 9.35927785580E-05 9.47700307876E-05 9.59620910274E-05 + 9.71691455391E-05 9.83913829275E-05 9.96289941697E-05 1.00882172645E-04 + 1.02151114165E-04 1.03436017004E-04 1.04737081932E-04 1.06054512241E-04 + 1.07388513784E-04 1.08739295001E-04 1.10107066953E-04 1.11492043359E-04 + 1.12894440624E-04 1.14314477875E-04 1.15752376995E-04 1.17208362660E-04 + 1.18682662370E-04 1.20175506487E-04 1.21687128272E-04 1.23217763918E-04 + 1.24767652590E-04 1.26337036462E-04 1.27926160753E-04 1.29535273767E-04 + 1.31164626931E-04 1.32814474834E-04 1.34485075270E-04 1.36176689272E-04 + 1.37889581159E-04 1.39624018574E-04 1.41380272525E-04 1.43158617432E-04 + 1.44959331164E-04 1.46782695086E-04 1.48628994104E-04 1.50498516703E-04 + 1.52391555003E-04 1.54308404792E-04 1.56249365584E-04 1.58214740658E-04 + 1.60204837106E-04 1.62219965886E-04 1.64260441866E-04 1.66326583874E-04 + 1.68418714749E-04 1.70537161391E-04 1.72682254812E-04 1.74854330186E-04 + 1.77053726905E-04 1.79280788629E-04 1.81535863341E-04 1.83819303401E-04 + 1.86131465601E-04 1.88472711221E-04 1.90843406086E-04 1.93243920621E-04 + 1.95674629912E-04 1.98135913762E-04 2.00628156752E-04 2.03151748299E-04 + 2.05707082721E-04 2.08294559292E-04 2.10914582312E-04 2.13567561165E-04 + 2.16253910384E-04 2.18974049716E-04 2.21728404189E-04 2.24517404177E-04 + 2.27341485465E-04 2.30201089323E-04 2.33096662570E-04 2.36028657644E-04 + 2.38997532677E-04 2.42003751560E-04 2.45047784021E-04 2.48130105698E-04 + 2.51251198208E-04 2.54411549229E-04 2.57611652573E-04 2.60852008261E-04 + 2.64133122606E-04 2.67455508289E-04 2.70819684439E-04 2.74226176716E-04 + 2.77675517391E-04 2.81168245431E-04 2.84704906581E-04 2.88286053451E-04 + 2.91912245605E-04 2.95584049640E-04 2.99302039285E-04 3.03066795482E-04 + 3.06878906482E-04 3.10738967936E-04 3.14647582986E-04 3.18605362361E-04 + 3.22612924472E-04 3.26670895509E-04 3.30779909538E-04 3.34940608601E-04 + 3.39153642815E-04 3.43419670476E-04 3.47739358159E-04 3.52113380825E-04 + 3.56542421922E-04 3.61027173498E-04 3.65568336305E-04 3.70166619908E-04 + 3.74822742799E-04 3.79537432505E-04 3.84311425708E-04 3.89145468353E-04 + 3.94040315769E-04 3.98996732786E-04 4.04015493854E-04 4.09097383165E-04 + 4.14243194774E-04 4.19453732726E-04 4.24729811177E-04 4.30072254524E-04 + 4.35481897537E-04 4.40959585482E-04 4.46506174259E-04 4.52122530535E-04 + 4.57809531875E-04 4.63568066887E-04 4.69399035352E-04 4.75303348372E-04 + 4.81281928506E-04 4.87335709921E-04 4.93465638532E-04 4.99672672154E-04 + 5.05957780647E-04 5.12321946072E-04 5.18766162844E-04 5.25291437884E-04 + 5.31898790780E-04 5.38589253945E-04 5.45363872776E-04 5.52223705821E-04 + 5.59169824945E-04 5.66203315491E-04 5.73325276457E-04 5.80536820664E-04 + 5.87839074930E-04 5.95233180248E-04 6.02720291961E-04 6.10301579946E-04 + 6.17978228794E-04 6.25751437998E-04 6.33622422138E-04 6.41592411070E-04 + 6.49662650121E-04 6.57834400283E-04 6.66108938409E-04 6.74487557412E-04 + 6.82971566467E-04 6.91562291220E-04 7.00261073987E-04 7.09069273972E-04 + 7.17988267474E-04 7.27019448103E-04 7.36164227000E-04 7.45424033055E-04 + 7.54800313132E-04 7.64294532294E-04 7.73908174031E-04 7.83642740495E-04 + 7.93499752732E-04 8.03480750919E-04 8.13587294608E-04 8.23820962967E-04 + 8.34183355028E-04 8.44676089935E-04 8.55300807200E-04 8.66059166956E-04 + 8.76952850219E-04 8.87983559149E-04 8.99153017317E-04 9.10462969973E-04 + 9.21915184320E-04 9.33511449791E-04 9.45253578324E-04 9.57143404653E-04 + 9.69182786586E-04 9.81373605301E-04 9.93717765638E-04 1.00621719640E-03 + 1.01887385064E-03 1.03168970600E-03 1.04466676497E-03 1.05780705525E-03 + 1.07111263003E-03 1.08458556835E-03 1.09822797536E-03 1.11204198273E-03 + 1.12602974892E-03 1.14019345955E-03 1.15453532773E-03 1.16905759440E-03 + 1.18376252870E-03 1.19865242830E-03 1.21372961978E-03 1.22899645899E-03 + 1.24445533139E-03 1.26010865247E-03 1.27595886809E-03 1.29200845488E-03 + 1.30825992062E-03 1.32471580464E-03 1.34137867819E-03 1.35825114489E-03 + 1.37533584110E-03 1.39263543633E-03 1.41015263368E-03 1.42789017025E-03 + 1.44585081756E-03 1.46403738200E-03 1.48245270526E-03 1.50109966478E-03 + 1.51998117417E-03 1.53910018371E-03 1.55845968079E-03 1.57806269036E-03 + 1.59791227544E-03 1.61801153756E-03 1.63836361728E-03 1.65897169465E-03 + 1.67983898971E-03 1.70096876304E-03 1.72236431620E-03 1.74402899229E-03 + 1.76596617645E-03 1.78817929643E-03 1.81067182305E-03 1.83344727083E-03 + 1.85650919848E-03 1.87986120947E-03 1.90350695260E-03 1.92745012256E-03 + 1.95169446052E-03 1.97624375471E-03 2.00110184102E-03 2.02627260355E-03 + 2.05175997530E-03 2.07756793873E-03 2.10370052636E-03 2.13016182149E-03 + 2.15695595874E-03 2.18408712474E-03 2.21155955880E-03 2.23937755354E-03 + 2.26754545558E-03 2.29606766621E-03 2.32494864208E-03 2.35419289591E-03 + 2.38380499717E-03 2.41378957281E-03 2.44415130798E-03 2.47489494676E-03 + 2.50602529292E-03 2.53754721062E-03 2.56946562524E-03 2.60178552410E-03 + 2.63451195723E-03 2.66765003822E-03 2.70120494495E-03 2.73518192045E-03 + 2.76958627369E-03 2.80442338043E-03 2.83969868402E-03 2.87541769630E-03 + 2.91158599845E-03 2.94820924184E-03 2.98529314892E-03 3.02284351413E-03 + 3.06086620479E-03 3.09936716202E-03 3.13835240167E-03 3.17782801527E-03 + 3.21780017097E-03 3.25827511449E-03 3.29925917012E-03 3.34075874171E-03 + 3.38278031365E-03 3.42533045190E-03 3.46841580500E-03 3.51204310513E-03 + 3.55621916913E-03 3.60095089962E-03 3.64624528601E-03 3.69210940565E-03 + 3.73855042489E-03 3.78557560024E-03 3.83319227948E-03 3.88140790281E-03 + 3.93023000403E-03 3.97966621168E-03 4.02972425027E-03 4.08041194147E-03 + 4.13173720535E-03 4.18370806156E-03 4.23633263067E-03 4.28961913538E-03 + 4.34357590180E-03 4.39821136080E-03 4.45353404926E-03 4.50955261149E-03 + 4.56627580048E-03 4.62371247936E-03 4.68187162272E-03 4.74076231804E-03 + 4.80039376712E-03 4.86077528750E-03 4.92191631390E-03 4.98382639975E-03 + 5.04651521860E-03 5.10999256573E-03 5.17426835959E-03 5.23935264341E-03 + 5.30525558674E-03 5.37198748705E-03 5.43955877133E-03 5.50797999774E-03 + 5.57726185723E-03 5.64741517523E-03 5.71845091334E-03 5.79038017104E-03 + 5.86321418742E-03 5.93696434295E-03 6.01164216124E-03 6.08725931084E-03 + 6.16382760710E-03 6.24135901396E-03 6.31986564586E-03 6.39935976963E-03 + 6.47985380639E-03 6.56136033348E-03 6.64389208648E-03 6.72746196113E-03 + 6.81208301540E-03 6.89776847150E-03 6.98453171795E-03 7.07238631170E-03 + 7.16134598020E-03 7.25142462358E-03 7.34263631681E-03 7.43499531190E-03 + 7.52851604013E-03 7.62321311432E-03 7.71910133106E-03 7.81619567309E-03 + 7.91451131160E-03 8.01406360860E-03 8.11486811934E-03 8.21694059474E-03 + 8.32029698382E-03 8.42495343624E-03 8.53092630477E-03 8.63823214789E-03 + 8.74688773236E-03 8.85691003583E-03 8.96831624951E-03 9.08112378086E-03 + 9.19535025627E-03 9.31101352387E-03 9.42813165627E-03 9.54672295343E-03 + 9.66680594547E-03 9.78839939561E-03 9.91152230307E-03 1.00361939061E-02 + 1.01624336848E-02 1.02902613644E-02 1.04196969183E-02 1.05507605711E-02 + 1.06834728016E-02 1.08178543465E-02 1.09539262032E-02 1.10917096331E-02 + 1.12312261653E-02 1.13724975993E-02 1.15155460093E-02 1.16603937467E-02 + 1.18070634444E-02 1.19555780198E-02 1.21059606785E-02 1.22582349183E-02 + 1.24124245322E-02 1.25685536127E-02 1.27266465552E-02 1.28867280622E-02 + 1.30488231466E-02 1.32129571362E-02 1.33791556773E-02 1.35474447386E-02 + 1.37178506158E-02 1.38903999350E-02 1.40651196574E-02 1.42420370835E-02 + 1.44211798568E-02 1.46025759687E-02 1.47862537629E-02 1.49722419394E-02 + 1.51605695591E-02 1.53512660486E-02 1.55443612047E-02 1.57398851988E-02 + 1.59378685820E-02 1.61383422897E-02 1.63413376461E-02 1.65468863698E-02 + 1.67550205781E-02 1.69657727925E-02 1.71791759435E-02 1.73952633756E-02 + 1.76140688530E-02 1.78356265645E-02 1.80599711289E-02 1.82871376006E-02 + 1.85171614747E-02 1.87500786930E-02 1.89859256492E-02 1.92247391949E-02 + 1.94665566453E-02 1.97114157847E-02 1.99593548730E-02 2.02104126510E-02 + 2.04646283472E-02 2.07220416831E-02 2.09826928803E-02 2.12466226658E-02 + 2.15138722794E-02 2.17844834794E-02 2.20584985491E-02 2.23359603042E-02 + 2.26169120985E-02 2.29013978313E-02 2.31894619542E-02 2.34811494776E-02 + 2.37765059784E-02 2.40755776067E-02 2.43784110929E-02 2.46850537555E-02 + 2.49955535079E-02 2.53099588665E-02 2.56283189576E-02 2.59506835256E-02 + 2.62771029408E-02 2.66076282068E-02 2.69423109688E-02 2.72812035217E-02 + 2.76243588182E-02 2.79718304769E-02 2.83236727911E-02 2.86799407367E-02 + 2.90406899815E-02 2.94059768931E-02 2.97758585485E-02 3.01503927423E-02 + 3.05296379963E-02 3.09136535684E-02 3.13024994618E-02 3.16962364344E-02 + 3.20949260084E-02 3.24986304799E-02 3.29074129285E-02 3.33213372273E-02 + 3.37404680529E-02 3.41648708953E-02 3.45946120682E-02 3.50297587197E-02 + 3.54703788422E-02 3.59165412836E-02 3.63683157577E-02 3.68257728551E-02 + 3.72889840544E-02 3.77580217333E-02 3.82329591799E-02 3.87138706042E-02 + 3.92008311496E-02 3.96939169045E-02 4.01932049148E-02 4.06987731951E-02 + 4.12107007415E-02 4.17290675437E-02 4.22539545976E-02 4.27854439179E-02 + 4.33236185509E-02 4.38685625874E-02 4.44203611761E-02 4.49791005365E-02 + 4.55448679730E-02 4.61177518877E-02 4.66978417950E-02 4.72852283351E-02 + 4.78800032883E-02 4.84822595894E-02 4.90920913422E-02 4.97095938342E-02 + 5.03348635513E-02 5.09679981933E-02 5.16090966887E-02 5.22582592105E-02 + 5.29155871916E-02 5.35811833408E-02 5.42551516589E-02 5.49375974549E-02 + 5.56286273622E-02 5.63283493558E-02 5.70368727685E-02 5.77543083087E-02 + 5.84807680770E-02 5.92163655843E-02 5.99612157692E-02 6.07154350161E-02 + 6.14791411732E-02 6.22524535712E-02 6.30354930418E-02 6.38283819363E-02 + 6.46312441454E-02 6.54442051179E-02 6.62673918806E-02 6.71009330581E-02 + 6.79449588929E-02 6.87996012658E-02 6.96649937163E-02 7.05412714638E-02 + 7.14285714286E-02 7.23270322529E-02 7.32367943232E-02 7.41579997916E-02 + 7.50907925983E-02 7.60353184941E-02 7.69917250632E-02 7.79601617459E-02 + 7.89407798625E-02 7.99337326366E-02 8.09391752191E-02 8.19572647123E-02 + 8.29881601949E-02 8.40320227463E-02 8.50890154723E-02 8.61593035301E-02 + 8.72430541543E-02 8.83404366832E-02 8.94516225851E-02 9.05767854851E-02 + 9.17161011920E-02 9.28697477263E-02 9.40379053477E-02 9.52207565831E-02 + 9.64184862554E-02 9.76312815124E-02 9.88593318558E-02 1.00102829171E-01 + 1.01361967757E-01 1.02636944356E-01 1.03927958187E-01 1.05235210973E-01 + 1.06558906974E-01 1.07899253022E-01 1.09256458547E-01 1.10630735617E-01 + 1.12022298964E-01 1.13431366023E-01 1.14858156963E-01 1.16302894725E-01 + 1.17765805050E-01 1.19247116522E-01 1.20747060599E-01 1.22265871649E-01 + 1.23803786991E-01 1.25361046926E-01 1.26937894780E-01 1.28534576938E-01 + 1.30151342885E-01 1.31788445244E-01 1.33446139817E-01 1.35124685620E-01 + 1.36824344930E-01 1.38545383322E-01 1.40288069712E-01 1.42052676399E-01 + 1.43839479105E-01 1.45648757023E-01 1.47480792855E-01 1.49335872861E-01 + 1.51214286901E-01 1.53116328481E-01 1.55042294799E-01 1.56992486791E-01 + 1.58967209178E-01 1.60966770515E-01 1.62991483238E-01 1.65041663711E-01 + 1.67117632280E-01 1.69219713320E-01 1.71348235283E-01 1.73503530757E-01 + 1.75685936511E-01 1.77895793550E-01 1.80133447168E-01 1.82399247004E-01 + 1.84693547094E-01 1.87016705926E-01 1.89369086499E-01 1.91751056377E-01 + 1.94162987747E-01 1.96605257479E-01 1.99078247183E-01 2.01582343268E-01 + 2.04117937005E-01 2.06685424584E-01 2.09285207181E-01 2.11917691018E-01 + 2.14583287425E-01 2.17282412907E-01 2.20015489208E-01 2.22782943378E-01 + 2.25585207835E-01 2.28422720440E-01 2.31295924560E-01 2.34205269138E-01 + 2.37151208767E-01 2.40134203754E-01 2.43154720199E-01 2.46213230064E-01 + 2.49310211247E-01 2.52446147658E-01 2.55621529293E-01 2.58836852312E-01 + 2.62092619116E-01 2.65389338424E-01 2.68727525357E-01 2.72107701512E-01 + 2.75530395050E-01 2.78996140772E-01 2.82505480209E-01 2.86058961701E-01 + 2.89657140489E-01 2.93300578794E-01 2.96989845911E-01 3.00725518296E-01 + 3.04508179655E-01 3.08338421036E-01 3.12216840924E-01 3.16144045327E-01 + 3.20120647881E-01 3.24147269938E-01 3.28224540665E-01 3.32353097144E-01 + 3.36533584471E-01 3.40766655855E-01 3.45052972722E-01 3.49393204819E-01 + 3.53788030314E-01 3.58238135909E-01 3.62744216941E-01 3.67306977496E-01 + 3.71927130513E-01 3.76605397901E-01 3.81342510648E-01 3.86139208939E-01 + 3.90996242266E-01 3.95914369552E-01 4.00894359264E-01 4.05936989535E-01 + 4.11043048286E-01 4.16213333350E-01 4.21448652594E-01 4.26749824048E-01 + 4.32117676029E-01 4.37553047277E-01 4.43056787079E-01 4.48629755405E-01 + 4.54272823043E-01 4.59986871734E-01 4.65772794309E-01 4.71631494831E-01 + 4.77563888734E-01 4.83570902966E-01 4.89653476136E-01 4.95812558657E-01 + 5.02049112899E-01 5.08364113337E-01 5.14758546701E-01 5.21233412136E-01 + 5.27789721352E-01 5.34428498786E-01 5.41150781760E-01 5.47957620644E-01 + 5.54850079022E-01 5.61829233853E-01 5.68896175645E-01 5.76052008622E-01 + 5.83297850898E-01 5.90634834649E-01 5.98064106295E-01 6.05586826674E-01 + 6.13204171227E-01 6.20917330179E-01 6.28727508728E-01 6.36635927228E-01 + 6.44643821388E-01 6.52752442456E-01 6.60963057422E-01 6.69276949210E-01 + 6.77695416883E-01 6.86219775843E-01 6.94851358040E-01 7.03591512175E-01 + 7.12441603915E-01 7.21403016106E-01 7.30477148985E-01 7.39665420405E-01 + 7.48969266052E-01 7.58390139670E-01 7.67929513291E-01 7.77588877461E-01 + 7.87369741474E-01 7.97273633612E-01 8.07302101377E-01 8.17456711738E-01 + 8.27739051373E-01 8.38150726919E-01 8.48693365221E-01 8.59368613589E-01 + 8.70178140050E-01 8.81123633617E-01 8.92206804543E-01 9.03429384599E-01 + 9.14793127333E-01 9.26299808355E-01 9.37951225606E-01 9.49749199645E-01 + 9.61695573929E-01 9.73792215102E-01 9.86041013291E-01 9.98443882393E-01 + 1.01100276038E+00 1.02371960961E+00 1.03659641711E+00 1.04963519491E+00 + 1.06283798035E+00 1.07620683638E+00 1.08974385192E+00 1.10345114215E+00 + 1.11733084887E+00 1.13138514081E+00 1.14561621398E+00 1.16002629201E+00 + 1.17461762651E+00 1.18939249740E+00 1.20435321329E+00 1.21950211182E+00 + 1.23484156004E+00 1.25037395476E+00 1.26610172296E+00 1.28202732213E+00 + 1.29815324067E+00 1.31448199830E+00 1.33101614642E+00 1.34775826852E+00 + 1.36471098059E+00 1.38187693152E+00 1.39925880354E+00 1.41685931260E+00 + 1.43468120880E+00 1.45272727686E+00 1.47100033651E+00 1.48950324296E+00 + 1.50823888732E+00 1.52721019708E+00 1.54642013654E+00 1.56587170729E+00 + 1.58556794867E+00 1.60551193828E+00 1.62570679239E+00 1.64615566650E+00 + 1.66686175578E+00 1.68782829560E+00 1.70905856203E+00 1.73055587233E+00 + 1.75232358551E+00 1.77436510281E+00 1.79668386827E+00 1.81928336924E+00 + 1.84216713694E+00 1.86533874700E+00 1.88880182004E+00 1.91256002220E+00 + 1.93661706576E+00 1.96097670968E+00 1.98564276019E+00 2.01061907143E+00 + 2.03590954598E+00 2.06151813555E+00 2.08744884152E+00 2.11370571561E+00 + 2.14029286053E+00 2.16721443056E+00 2.19447463225E+00 2.22207772507E+00 + 2.25002802205E+00 2.27832989049E+00 2.30698775262E+00 2.33600608627E+00 + 2.36538942562E+00 2.39514236189E+00 2.42526954402E+00 2.45577567945E+00 + 2.48666553483E+00 2.51794393676E+00 2.54961577255E+00 2.58168599099E+00 + 2.61415960312E+00 2.64704168301E+00 2.68033736854E+00 2.71405186225E+00 + 2.74819043207E+00 2.78275841225E+00 2.81776120409E+00 2.85320427684E+00 + 2.88909316858E+00 2.92543348699E+00 2.96223091035E+00 2.99949118830E+00 + 3.03722014286E+00 3.07542366925E+00 3.11410773684E+00 3.15327839010E+00 + 3.19294174952E+00 3.23310401259E+00 3.27377145474E+00 3.31495043034E+00 + 3.35664737368E+00 3.39886880001E+00 3.44162130651E+00 3.48491157333E+00 + 3.52874636468E+00 3.57313252983E+00 3.61807700420E+00 3.66358681047E+00 + 3.70966905963E+00 3.75633095213E+00 3.80357977898E+00 3.85142292291E+00 + 3.89986785951E+00 3.94892215840E+00 3.99859348440E+00 4.04888959878E+00 + 4.09981836039E+00 4.15138772696E+00 4.20360575631E+00 4.25648060761E+00 + 4.31002054267E+00 4.36423392720E+00 4.41912923217E+00 4.47471503507E+00 + 4.53100002129E+00 4.58799298549E+00 4.64570283293E+00 4.70413858089E+00 + 4.76330936007E+00 4.82322441602E+00 4.88389311061E+00 4.94532492343E+00 + 5.00752945333E+00 5.07051641990E+00 5.13429566498E+00 5.19887715419E+00 + 5.26427097854E+00 5.33048735594E+00 5.39753663284E+00 5.46542928581E+00 + 5.53417592323E+00 5.60378728690E+00 5.67427425373E+00 5.74564783746E+00 + 5.81791919035E+00 5.89109960496E+00 5.96520051586E+00 6.04023350148E+00 + 6.11621028587E+00 6.19314274056E+00 6.27104288641E+00 6.34992289547E+00 + 6.42979509289E+00 6.51067195889E+00 6.59256613062E+00 6.67549040422E+00 + 6.75945773678E+00 6.84448124836E+00 6.93057422407E+00 7.01775011609E+00 + 7.10602254585E+00 7.19540530609E+00 7.28591236305E+00 7.37755785864E+00 + 7.47035611265E+00 7.56432162501E+00 7.65946907800E+00 7.75581333863E+00 + 7.85336946087E+00 7.95215268806E+00 8.05217845529E+00 8.15346239179E+00 + 8.25602032337E+00 8.35986827493E+00 8.46502247291E+00 8.57149934787E+00 + 8.67931553705E+00 8.78848788694E+00 8.89903345594E+00 9.01096951703E+00 + 9.12431356043E+00 9.23908329639E+00 9.35529665792E+00 9.47297180358E+00 + 9.59212712035E+00 9.71278122651E+00 9.83495297449E+00 9.95866145388E+00 + 1.00839259944E+01 1.02107661689E+01 1.03392017963E+01 1.04692529451E+01 + 1.06009399359E+01 1.07342833452E+01 1.08693040080E+01 1.10060230218E+01 + 1.11444617490E+01 1.12846418211E+01 1.14265851414E+01 1.15703138889E+01 + 1.17158505214E+01 1.18632177795E+01 1.20124386894E+01 1.21635365674E+01 + 1.23165350226E+01 1.24714579616E+01 1.26283295912E+01 1.27871744230E+01 + 1.29480172768E+01 1.31108832847E+01 1.32757978947E+01 1.34427868752E+01 + 1.36118763185E+01 1.37830926451E+01 1.39564626080E+01 1.41320132966E+01 + 1.43097721411E+01 1.44897669165E+01 1.46720257475E+01 1.48565771124E+01 + 1.50434498476E+01 1.52326731525E+01 1.54242765936E+01 1.56182901093E+01 + 1.58147440146E+01 1.60136690058E+01 1.62150961654E+01 1.64190569667E+01 + 1.66255832791E+01 1.68347073727E+01 1.70464619236E+01 1.72608800189E+01 + 1.74779951617E+01 1.76978412769E+01 1.79204527158E+01 1.81458642618E+01 + 1.83741111361E+01 1.86052290027E+01 1.88392539741E+01 1.90762226172E+01 + 1.93161719590E+01 1.95591394919E+01 1.98051631802E+01 2.00542814655E+01 + 2.03065332731E+01 2.05619580179E+01 2.08205956104E+01 2.10824864633E+01 + 2.13476714976E+01 2.16161921491E+01 2.18880903745E+01 2.21634086586E+01 + 2.24421900204E+01 2.27244780200E+01 2.30103167656E+01 2.32997509200E+01 + 2.35928257078E+01 2.38895869227E+01 2.41900809341E+01 2.44943546949E+01 + 2.48024557485E+01 2.51144322362E+01 2.54303329051E+01 2.57502071152E+01 + 2.60741048475E+01 2.64020767118E+01 2.67341739543E+01 2.70704484659E+01 + 2.74109527901E+01 2.77557401314E+01 2.81048643636E+01 2.84583800381E+01 + 2.88163423923E+01 2.91788073587E+01 2.95458315731E+01 2.99174723837E+01 + 3.02937878603E+01 3.06748368029E+01 3.10606787512E+01 3.14513739937E+01 + 3.18469835773E+01 3.22475693170E+01 3.26531938049E+01 3.30639204208E+01 + 3.34798133416E+01 3.39009375513E+01 3.43273588515E+01 3.47591438713E+01 + 3.51963600781E+01 3.56390757877E+01 3.60873601755E+01 3.65412832867E+01 + 3.70009160477E+01 3.74663302772E+01 3.79375986970E+01 3.84147949438E+01 + 3.88979935804E+01 3.93872701077E+01 3.98827009761E+01 4.03843635976E+01 + 4.08923363581E+01 4.14066986294E+01 4.19275307816E+01 4.24549141957E+01 + 4.29889312766E+01 4.35296654654E+01 4.40772012531E+01 4.46316241931E+01 + 4.51930209152E+01 4.57614791387E+01 4.63370876865E+01 4.69199364985E+01 + 4.75101166460E+01 4.81077203459E+01 4.87128409750E+01 4.93255730847E+01 + 4.99460124154E+01 5.05742559122E+01 5.12104017394E+01 5.18545492961E+01 + 5.25067992316E+01 5.31672534613E+01 5.38360151825E+01 5.45131888906E+01 + 5.51988803954E+01 5.58931968375E+01 5.65962467054E+01 5.73081398520E+01 + 5.80289875120E+01 5.87589023193E+01 5.94979983247E+01 6.02463910134E+01 + 6.10041973233E+01 6.17715356631E+01 6.25485259310E+01 6.33352895334E+01 + 6.41319494036E+01 6.49386300214E+01 6.57554574322E+01 6.65825592671E+01 + 6.74200647623E+01 6.82681047797E+01 6.91268118275E+01 6.99963200802E+01 + 7.08767654004E+01 7.17682853593E+01 7.26710192589E+01 7.35851081530E+01 + 7.45106948700E+01 7.54479240347E+01 7.63969420910E+01 7.73578973250E+01 + 7.83309398877E+01 7.93162218193E+01 8.03138970718E+01 8.13241215342E+01 + 8.23470530560E+01 8.33828514723E+01 8.44316786289E+01 8.54936984070E+01 + 8.65690767495E+01 8.76579816863E+01 8.87605833611E+01 8.98770540576E+01 + 9.10075682267E+01 9.21523025134E+01 9.33114357850E+01 9.44851491582E+01 + 9.56736260282E+01 9.68770520969E+01 9.80956154021E+01 9.93295063468E+01 + 1.00578917729E+02 + + + 8.14180326388E-07 8.24421454169E-07 8.34791399479E-07 8.45291782644E-07 + 8.55924244370E-07 8.66690446000E-07 8.77592069776E-07 8.88630819098E-07 + 8.99808418793E-07 9.11126615385E-07 9.22587177364E-07 9.34191895466E-07 + 9.45942582953E-07 9.57841075893E-07 9.69889233450E-07 9.82088938173E-07 + 9.94442096290E-07 1.00695063801E-06 1.01961651781E-06 1.03244171477E-06 + 1.04542823285E-06 1.05857810122E-06 1.07189337456E-06 1.08537613343E-06 + 1.09902848453E-06 1.11285256106E-06 1.12685052308E-06 1.14102455777E-06 + 1.15537687988E-06 1.16990973197E-06 1.18462538485E-06 1.19952613784E-06 + 1.21461431924E-06 1.22989228659E-06 1.24536242712E-06 1.26102715806E-06 + 1.27688892706E-06 1.29295021255E-06 1.30921352415E-06 1.32568140302E-06 + 1.34235642230E-06 1.35924118751E-06 1.37633833692E-06 1.39365054199E-06 + 1.41118050780E-06 1.42893097343E-06 1.44690471244E-06 1.46510453325E-06 + 1.48353327962E-06 1.50219383109E-06 1.52108910340E-06 1.54022204897E-06 + 1.55959565738E-06 1.57921295578E-06 1.59907700941E-06 1.61919092208E-06 + 1.63955783663E-06 1.66018093543E-06 1.68106344087E-06 1.70220861590E-06 + 1.72361976449E-06 1.74530023217E-06 1.76725340657E-06 1.78948271790E-06 + 1.81199163955E-06 1.83478368858E-06 1.85786242629E-06 1.88123145879E-06 + 1.90489443753E-06 1.92885505991E-06 1.95311706981E-06 1.97768425822E-06 + 2.00256046383E-06 2.02774957358E-06 2.05325552333E-06 2.07908229843E-06 + 2.10523393437E-06 2.13171451739E-06 2.15852818515E-06 2.18567912732E-06 + 2.21317158631E-06 2.24100985786E-06 2.26919829176E-06 2.29774129251E-06 + 2.32664332001E-06 2.35590889026E-06 2.38554257607E-06 2.41554900776E-06 + 2.44593287390E-06 2.47669892203E-06 2.50785195940E-06 2.53939685374E-06 + 2.57133853401E-06 2.60368199115E-06 2.63643227890E-06 2.66959451457E-06 + 2.70317387980E-06 2.73717562145E-06 2.77160505237E-06 2.80646755221E-06 + 2.84176856831E-06 2.87751361654E-06 2.91370828212E-06 2.95035822055E-06 + 2.98746915846E-06 3.02504689450E-06 3.06309730027E-06 3.10162632122E-06 + 3.14063997760E-06 3.18014436536E-06 3.22014565716E-06 3.26065010326E-06 + 3.30166403257E-06 3.34319385361E-06 3.38524605549E-06 3.42782720895E-06 + 3.47094396739E-06 3.51460306788E-06 3.55881133226E-06 3.60357566814E-06 + 3.64890307006E-06 3.69480062050E-06 3.74127549106E-06 3.78833494352E-06 + 3.83598633103E-06 3.88423709920E-06 3.93309478733E-06 3.98256702952E-06 + 4.03266155590E-06 4.08338619386E-06 4.13474886923E-06 4.18675760751E-06 + 4.23942053519E-06 4.29274588095E-06 4.34674197699E-06 4.40141726031E-06 + 4.45678027403E-06 4.51283966873E-06 4.56960420381E-06 4.62708274885E-06 + 4.68528428498E-06 4.74421790632E-06 4.80389282135E-06 4.86431835441E-06 + 4.92550394711E-06 4.98745915982E-06 5.05019367317E-06 5.11371728956E-06 + 5.17803993468E-06 5.24317165907E-06 5.30912263971E-06 5.37590318155E-06 + 5.44352371921E-06 5.51199481852E-06 5.58132717824E-06 5.65153163168E-06 + 5.72261914844E-06 5.79460083609E-06 5.86748794190E-06 5.94129185464E-06 + 6.01602410633E-06 6.09169637402E-06 6.16832048166E-06 6.24590840192E-06 + 6.32447225808E-06 6.40402432590E-06 6.48457703555E-06 6.56614297355E-06 + 6.64873488475E-06 6.73236567431E-06 6.81704840970E-06 6.90279632277E-06 + 6.98962281181E-06 7.07754144363E-06 7.16656595571E-06 7.25671025830E-06 + 7.34798843663E-06 7.44041475310E-06 7.53400364951E-06 7.62876974932E-06 + 7.72472785993E-06 7.82189297498E-06 7.92028027672E-06 8.01990513837E-06 + 8.12078312651E-06 8.22293000354E-06 8.32636173011E-06 8.43109446765E-06 + 8.53714458084E-06 8.64452864025E-06 8.75326342484E-06 8.86336592465E-06 + 8.97485334342E-06 9.08774310129E-06 9.20205283750E-06 9.31780041319E-06 + 9.43500391415E-06 9.55368165367E-06 9.67385217539E-06 9.79553425619E-06 + 9.91874690914E-06 1.00435093865E-05 1.01698411826E-05 1.02977620371E-05 + 1.04272919379E-05 1.05584511242E-05 1.06912600900E-05 1.08257395870E-05 + 1.09619106277E-05 1.10997944894E-05 1.12394127165E-05 1.13807871247E-05 + 1.15239398040E-05 1.16688931224E-05 1.18156697291E-05 1.19642925582E-05 + 1.21147848323E-05 1.22671700663E-05 1.24214720705E-05 1.25777149550E-05 + 1.27359231330E-05 1.28961213250E-05 1.30583345621E-05 1.32225881906E-05 + 1.33889078754E-05 1.35573196043E-05 1.37278496920E-05 1.39005247841E-05 + 1.40753718615E-05 1.42524182444E-05 1.44316915966E-05 1.46132199300E-05 + 1.47970316087E-05 1.49831553538E-05 1.51716202473E-05 1.53624557374E-05 + 1.55556916424E-05 1.57513581559E-05 1.59494858512E-05 1.61501056861E-05 + 1.63532490078E-05 1.65589475580E-05 1.67672334774E-05 1.69781393112E-05 + 1.71916980137E-05 1.74079429541E-05 1.76269079210E-05 1.78486271281E-05 + 1.80731352195E-05 1.83004672750E-05 1.85306588158E-05 1.87637458097E-05 + 1.89997646771E-05 1.92387522964E-05 1.94807460099E-05 1.97257836295E-05 + 1.99739034430E-05 2.02251442195E-05 2.04795452160E-05 2.07371461831E-05 + 2.09979873714E-05 2.12621095380E-05 2.15295539525E-05 2.18003624036E-05 + 2.20745772057E-05 2.23522412053E-05 2.26333977881E-05 2.29180908854E-05 + 2.32063649810E-05 2.34982651184E-05 2.37938369075E-05 2.40931265320E-05 + 2.43961807565E-05 2.47030469339E-05 2.50137730127E-05 2.53284075444E-05 + 2.56469996913E-05 2.59695992341E-05 2.62962565796E-05 2.66270227686E-05 + 2.69619494842E-05 2.73010890592E-05 2.76444944850E-05 2.79922194192E-05 + 2.83443181947E-05 2.87008458276E-05 2.90618580260E-05 2.94274111988E-05 + 2.97975624646E-05 3.01723696601E-05 3.05518913497E-05 3.09361868345E-05 + 3.13253161615E-05 3.17193401328E-05 3.21183203156E-05 3.25223190512E-05 + 3.29313994654E-05 3.33456254777E-05 3.37650618119E-05 3.41897740057E-05 + 3.46198284212E-05 3.50552922553E-05 3.54962335502E-05 3.59427212038E-05 + 3.63948249807E-05 3.68526155230E-05 3.73161643615E-05 3.77855439266E-05 + 3.82608275599E-05 3.87420895252E-05 3.92294050209E-05 3.97228501909E-05 + 4.02225021371E-05 4.07284389311E-05 4.12407396265E-05 4.17594842714E-05 + 4.22847539207E-05 4.28166306488E-05 4.33551975625E-05 4.39005388141E-05 + 4.44527396142E-05 4.50118862452E-05 4.55780660751E-05 4.61513675706E-05 + 4.67318803111E-05 4.73196950030E-05 4.79149034935E-05 4.85175987852E-05 + 4.91278750504E-05 4.97458276460E-05 5.03715531284E-05 5.10051492684E-05 + 5.16467150668E-05 5.22963507695E-05 5.29541578834E-05 5.36202391922E-05 + 5.42946987725E-05 5.49776420099E-05 5.56691756158E-05 5.63694076436E-05 + 5.70784475060E-05 5.77964059920E-05 5.85233952840E-05 5.92595289755E-05 + 6.00049220891E-05 6.07596910938E-05 6.15239539238E-05 6.22978299968E-05 + 6.30814402325E-05 6.38749070716E-05 6.46783544949E-05 6.54919080426E-05 + 6.63156948342E-05 6.71498435881E-05 6.79944846416E-05 6.88497499717E-05 + 6.97157732153E-05 7.05926896903E-05 7.14806364167E-05 7.23797521380E-05 + 7.32901773428E-05 7.42120542869E-05 7.51455270155E-05 7.60907413855E-05 + 7.70478450887E-05 7.80169876745E-05 7.89983205733E-05 7.99919971204E-05 + 8.09981725798E-05 8.20170041685E-05 8.30486510809E-05 8.40932745141E-05 + 8.51510376925E-05 8.62221058937E-05 8.73066464744E-05 8.84048288963E-05 + 8.95168247525E-05 9.06428077947E-05 9.17829539601E-05 9.29374413987E-05 + 9.41064505017E-05 9.52901639290E-05 9.64887666382E-05 9.77024459136E-05 + 9.89313913949E-05 1.00175795107E-04 1.01435851492E-04 1.02711757434E-04 + 1.04003712298E-04 1.05311917953E-04 1.06636578810E-04 1.07977901849E-04 + 1.09336096654E-04 1.10711375448E-04 1.12103953119E-04 1.13514047261E-04 + 1.14941878203E-04 1.16387669048E-04 1.17851645703E-04 1.19334036918E-04 + 1.20835074318E-04 1.22354992445E-04 1.23894028788E-04 1.25452423826E-04 + 1.27030421059E-04 1.28628267055E-04 1.30246211479E-04 1.31884507138E-04 + 1.33543410020E-04 1.35223179332E-04 1.36924077540E-04 1.38646370414E-04 + 1.40390327066E-04 1.42156219992E-04 1.43944325116E-04 1.45754921834E-04 + 1.47588293055E-04 1.49444725247E-04 1.51324508482E-04 1.53227936479E-04 + 1.55155306652E-04 1.57106920158E-04 1.59083081940E-04 1.61084100777E-04 + 1.63110289333E-04 1.65161964203E-04 1.67239445966E-04 1.69343059233E-04 + 1.71473132697E-04 1.73629999187E-04 1.75813995718E-04 1.78025463543E-04 + 1.80264748210E-04 1.82532199609E-04 1.84828172037E-04 1.87153024242E-04 + 1.89507119488E-04 1.91890825607E-04 1.94304515058E-04 1.96748564985E-04 + 1.99223357275E-04 2.01729278621E-04 2.04266720576E-04 2.06836079622E-04 + 2.09437757227E-04 2.12072159907E-04 2.14739699293E-04 2.17440792195E-04 + 2.20175860662E-04 2.22945332056E-04 2.25749639111E-04 2.28589220007E-04 + 2.31464518434E-04 2.34375983662E-04 2.37324070615E-04 2.40309239937E-04 + 2.43331958066E-04 2.46392697309E-04 2.49491935912E-04 2.52630158138E-04 + 2.55807854339E-04 2.59025521039E-04 2.62283661003E-04 2.65582783323E-04 + 2.68923403493E-04 2.72306043492E-04 2.75731231864E-04 2.79199503803E-04 + 2.82711401231E-04 2.86267472892E-04 2.89868274427E-04 2.93514368470E-04 + 2.97206324730E-04 3.00944720084E-04 3.04730138662E-04 3.08563171944E-04 + 3.12444418849E-04 3.16374485831E-04 3.20353986970E-04 3.24383544071E-04 + 3.28463786760E-04 3.32595352585E-04 3.36778887110E-04 3.41015044021E-04 + 3.45304485227E-04 3.49647880961E-04 3.54045909888E-04 3.58499259209E-04 + 3.63008624768E-04 3.67574711164E-04 3.72198231856E-04 3.76879909279E-04 + 3.81620474954E-04 3.86420669605E-04 3.91281243272E-04 3.96202955430E-04 + 4.01186575105E-04 4.06232880998E-04 4.11342661606E-04 4.16516715342E-04 + 4.21755850662E-04 4.27060886191E-04 4.32432650853E-04 4.37871983996E-04 + 4.43379735528E-04 4.48956766045E-04 4.54603946971E-04 4.60322160688E-04 + 4.66112300679E-04 4.71975271666E-04 4.77911989749E-04 4.83923382553E-04 + 4.90010389370E-04 4.96173961307E-04 5.02415061435E-04 5.08734664938E-04 + 5.15133759268E-04 5.21613344296E-04 5.28174432470E-04 5.34818048974E-04 + 5.41545231886E-04 5.48357032343E-04 5.55254514701E-04 5.62238756707E-04 + 5.69310849662E-04 5.76471898596E-04 5.83723022437E-04 5.91065354188E-04 + 5.98500041103E-04 6.06028244867E-04 6.13651141778E-04 6.21369922927E-04 + 6.29185794392E-04 6.37099977417E-04 6.45113708609E-04 6.53228240131E-04 + 6.61444839894E-04 6.69764791760E-04 6.78189395737E-04 6.86719968186E-04 + 6.95357842028E-04 7.04104366947E-04 7.12960909607E-04 7.21928853858E-04 + 7.31009600962E-04 7.40204569804E-04 7.49515197115E-04 7.58942937701E-04 + 7.68489264665E-04 7.78155669640E-04 7.87943663022E-04 7.97854774204E-04 + 8.07890551818E-04 8.18052563974E-04 8.28342398508E-04 8.38761663226E-04 + 8.49311986161E-04 8.59995015822E-04 8.70812421454E-04 8.81765893298E-04 + 8.92857142857E-04 9.04087903161E-04 9.15459929040E-04 9.26974997394E-04 + 9.38634907479E-04 9.50441481177E-04 9.62396563290E-04 9.74502021824E-04 + 9.86759748282E-04 9.99171657958E-04 1.01173969024E-03 1.02446580890E-03 + 1.03735200244E-03 1.05040028433E-03 1.06361269340E-03 1.07699129413E-03 + 1.09053817693E-03 1.10425545854E-03 1.11814528231E-03 1.13220981856E-03 + 1.14645126490E-03 1.16087184658E-03 1.17547381685E-03 1.19025945729E-03 + 1.20523107819E-03 1.22039101891E-03 1.23574164820E-03 1.25128536464E-03 + 1.26702459696E-03 1.28296180445E-03 1.29909947734E-03 1.31544013716E-03 + 1.33198633718E-03 1.34874066277E-03 1.36570573184E-03 1.38288419521E-03 + 1.40027873704E-03 1.41789207528E-03 1.43572696204E-03 1.45378618406E-03 + 1.47207256313E-03 1.49058895652E-03 1.50933825748E-03 1.52832339561E-03 + 1.54754733738E-03 1.56701308657E-03 1.58672368474E-03 1.60668221172E-03 + 1.62689178606E-03 1.64735556556E-03 1.66807674771E-03 1.68905857024E-03 + 1.71030431162E-03 1.73181729152E-03 1.75360087140E-03 1.77565845498E-03 + 1.79799348881E-03 1.82060946278E-03 1.84350991068E-03 1.86669841076E-03 + 1.89017858626E-03 1.91395410601E-03 1.93802868499E-03 1.96240608488E-03 + 1.98709011473E-03 2.01208463144E-03 2.03739354047E-03 2.06302079639E-03 + 2.08897040351E-03 2.11524641650E-03 2.14185294104E-03 2.16879413447E-03 + 2.19607420639E-03 2.22369741937E-03 2.25166808961E-03 2.27999058756E-03 + 2.30866933867E-03 2.33770882407E-03 2.36711358123E-03 2.39688820471E-03 + 2.42703734684E-03 2.45756571849E-03 2.48847808979E-03 2.51977929085E-03 + 2.55147421256E-03 2.58356780730E-03 2.61606508976E-03 2.64897113772E-03 + 2.68229109281E-03 2.71603016134E-03 2.75019361511E-03 2.78478679222E-03 + 2.81981509794E-03 2.85528400550E-03 2.89119905700E-03 2.92756586423E-03 + 2.96439010959E-03 3.00167754693E-03 3.03943400249E-03 3.07766537580E-03 + 3.11637764059E-03 3.15557684573E-03 3.19526911616E-03 3.23546065390E-03 + 3.27615773895E-03 3.31736673030E-03 3.35909406696E-03 3.40134626891E-03 + 3.44412993812E-03 3.48745175965E-03 3.53131850261E-03 3.57573702127E-03 + 3.62071425611E-03 3.66625723492E-03 3.71237307389E-03 3.75906897870E-03 + 3.80635224569E-03 3.85423026296E-03 3.90271051154E-03 3.95180056659E-03 + 4.00150809852E-03 4.05184087422E-03 4.10280675831E-03 4.15441371430E-03 + 4.20666980588E-03 4.25958319819E-03 4.31316215903E-03 4.36741506023E-03 + 4.42235037892E-03 4.47797669886E-03 4.53430271177E-03 4.59133721870E-03 + 4.64908913141E-03 4.70756747376E-03 4.76678138310E-03 4.82674011173E-03 + 4.88745302833E-03 4.94892961940E-03 5.01117949080E-03 5.07421236918E-03 + 5.13803810358E-03 5.20266666688E-03 5.26810815743E-03 5.33437280060E-03 + 5.40147095037E-03 5.46941309097E-03 5.53820983849E-03 5.60787194256E-03 + 5.67841028804E-03 5.74983589667E-03 5.82215992887E-03 5.89539368539E-03 + 5.96954860918E-03 6.04463628708E-03 6.12066845170E-03 6.19765698321E-03 + 6.27561391124E-03 6.35455141671E-03 6.43448183377E-03 6.51541765170E-03 + 6.59737151690E-03 6.68035623482E-03 6.76438477200E-03 6.84947025805E-03 + 6.93562598777E-03 7.02286542317E-03 7.11120219557E-03 7.20065010778E-03 + 7.29122313622E-03 7.38293543311E-03 7.47580132869E-03 7.56983533343E-03 + 7.66505214034E-03 7.76146662724E-03 7.85909385910E-03 7.95794909036E-03 + 8.05804776735E-03 8.15940553071E-03 8.26203821777E-03 8.36596186512E-03 + 8.47119271103E-03 8.57774719804E-03 8.68564197550E-03 8.79489390219E-03 + 8.90552004894E-03 9.01753770132E-03 9.13096436231E-03 9.24581775506E-03 + 9.36211582565E-03 9.47987674588E-03 9.59911891614E-03 9.71986096826E-03 + 9.84212176843E-03 9.96592042015E-03 1.00912762672E-02 1.02182088967E-02 + 1.03467381422E-02 1.04768840865E-02 1.06086670653E-02 1.07421076699E-02 + 1.08772267506E-02 1.10140454202E-02 1.11525850568E-02 1.12928673075E-02 + 1.14349140917E-02 1.15787476044E-02 1.17243903201E-02 1.18718649956E-02 + 1.20211946741E-02 1.21724026888E-02 1.23255126661E-02 1.24805485299E-02 + 1.26375345048E-02 1.27964951202E-02 1.29574552139E-02 1.31204399364E-02 + 1.32854747544E-02 1.34525854547E-02 1.36217981490E-02 1.37931392769E-02 + 1.39666356109E-02 1.41423142601E-02 1.43202026747E-02 1.45003286501E-02 + 1.46827203313E-02 1.48674062175E-02 1.50544151662E-02 1.52437763978E-02 + 1.54355195005E-02 1.56296744345E-02 1.58262715370E-02 1.60253415266E-02 + 1.62269155084E-02 1.64310249788E-02 1.66377018303E-02 1.68469783565E-02 + 1.70588872573E-02 1.72734616441E-02 1.74907350443E-02 1.77107414074E-02 + 1.79335151100E-02 1.81590909608E-02 1.83875042064E-02 1.86187905370E-02 + 1.88529860916E-02 1.90901274635E-02 1.93302517067E-02 1.95733963411E-02 + 1.98195993584E-02 2.00688992285E-02 2.03213349049E-02 2.05769458313E-02 + 2.08357719473E-02 2.10978536950E-02 2.13632320253E-02 2.16319484041E-02 + 2.19040448188E-02 2.21795637851E-02 2.24585483534E-02 2.27410421155E-02 + 2.30270892118E-02 2.33167343376E-02 2.36100227505E-02 2.39070002775E-02 + 2.42077133220E-02 2.45122088709E-02 2.48205345024E-02 2.51327383928E-02 + 2.54488693248E-02 2.57689766944E-02 2.60931105190E-02 2.64213214452E-02 + 2.67536607566E-02 2.70901803820E-02 2.74309329031E-02 2.77759715634E-02 + 2.81253502757E-02 2.84791236312E-02 2.88373469077E-02 2.92000760783E-02 + 2.95673678203E-02 2.99392795236E-02 3.03158693002E-02 3.06971959931E-02 + 3.10833191854E-02 3.14742992095E-02 3.18701971568E-02 3.22710748874E-02 + 3.26769950390E-02 3.30880210376E-02 3.35042171068E-02 3.39256482781E-02 + 3.43523804009E-02 3.47844801531E-02 3.52220150511E-02 3.56650534606E-02 + 3.61136646072E-02 3.65679185874E-02 3.70278863793E-02 3.74936398538E-02 + 3.79652517858E-02 3.84427958656E-02 3.89263467105E-02 3.94159798762E-02 + 3.99117718690E-02 4.04138001574E-02 4.09221431842E-02 4.14368803792E-02 + 4.19580921711E-02 4.24858600002E-02 4.30202663313E-02 4.35613946667E-02 + 4.41093295585E-02 4.46641566229E-02 4.52259625525E-02 4.57948351309E-02 + 4.63708632454E-02 4.69541369016E-02 4.75447472373E-02 4.81427865364E-02 + 4.87483482439E-02 4.93615269800E-02 4.99824185550E-02 5.06111199847E-02 + 5.12477295049E-02 5.18923465870E-02 5.25450719539E-02 5.32060075952E-02 + 5.38752567834E-02 5.45529240900E-02 5.52391154021E-02 5.59339379383E-02 + 5.66375002662E-02 5.73499123187E-02 5.80712854116E-02 5.88017322611E-02 + 5.95413670008E-02 6.02903052003E-02 6.10486638826E-02 6.18165615429E-02 + 6.25941181667E-02 6.33814552488E-02 6.41786958122E-02 6.49859644274E-02 + 6.58033872318E-02 6.66310919493E-02 6.74692079105E-02 6.83178660727E-02 + 6.91771990404E-02 7.00473410863E-02 7.09284281717E-02 7.18205979683E-02 + 7.27239898794E-02 7.36387450620E-02 7.45650064483E-02 7.55029187685E-02 + 7.64526285734E-02 7.74142842571E-02 7.83880360801E-02 7.93740361933E-02 + 8.03724386612E-02 8.13833994861E-02 8.24070766327E-02 8.34436300528E-02 + 8.44932217098E-02 8.55560156045E-02 8.66321778008E-02 8.77218764512E-02 + 8.88252818232E-02 8.99425663262E-02 9.10739045381E-02 9.22194732330E-02 + 9.33794514081E-02 9.45540203126E-02 9.57433634750E-02 9.69476667328E-02 + 9.81671182608E-02 9.94019086008E-02 1.00652230691E-01 1.01918279897E-01 + 1.03200254042E-01 1.04498353437E-01 1.05812780911E-01 1.07143741848E-01 + 1.08491444213E-01 1.09856098587E-01 1.11237918199E-01 1.12637118963E-01 + 1.14053919505E-01 1.15488541205E-01 1.16941208224E-01 1.18412147545E-01 + 1.19901589004E-01 1.21409765331E-01 1.22936912181E-01 1.24483268174E-01 + 1.26049074930E-01 1.27634577111E-01 1.29240022454E-01 1.30865661813E-01 + 1.32511749199E-01 1.34178541815E-01 1.35866300101E-01 1.37575287772E-01 + 1.39305771863E-01 1.41058022764E-01 1.42832314267E-01 1.44628923611E-01 + 1.46448131518E-01 1.48290222243E-01 1.50155483618E-01 1.52044207092E-01 + 1.53956687783E-01 1.55893224520E-01 1.57854119890E-01 1.59839680287E-01 + 1.61850215960E-01 1.63886041058E-01 1.65947473684E-01 1.68034835940E-01 + 1.70148453981E-01 1.72288658064E-01 1.74455782600E-01 1.76650166208E-01 + 1.78872151763E-01 1.81122086456E-01 1.83400321844E-01 1.85707213904E-01 + 1.88043123095E-01 1.90408414407E-01 1.92803457420E-01 1.95228626366E-01 + 1.97684300182E-01 2.00170862572E-01 2.02688702067E-01 2.05238212084E-01 + 2.07819790989E-01 2.10433842159E-01 2.13080774045E-01 2.15761000236E-01 + 2.18474939522E-01 2.21223015961E-01 2.24005658947E-01 2.26823303273E-01 + 2.29676389202E-01 2.32565362533E-01 2.35490674676E-01 2.38452782716E-01 + 2.41452149488E-01 2.44489243649E-01 2.47564539753E-01 2.50678518319E-01 + 2.53831665914E-01 2.57024475223E-01 2.60257445130E-01 2.63531080791E-01 + 2.66845893721E-01 2.70202401864E-01 2.73601129682E-01 2.77042608233E-01 + 2.80527375255E-01 2.84055975251E-01 2.87628959570E-01 2.91246886500E-01 + 2.94910321348E-01 2.98619836534E-01 3.02376011677E-01 3.06179433687E-01 + 3.10030696856E-01 3.13930402953E-01 3.17879161313E-01 3.21877588940E-01 + 3.25926310594E-01 3.30025958898E-01 3.34177174429E-01 3.38380605823E-01 + 3.42636909876E-01 3.46946751643E-01 3.51310804546E-01 3.55729750476E-01 + 3.60204279904E-01 3.64735091984E-01 3.69322894663E-01 3.73968404797E-01 + 3.78672348254E-01 3.83435460037E-01 3.88258484390E-01 3.93142174921E-01 + 3.98087294717E-01 4.03094616462E-01 4.08164922562E-01 4.13299005261E-01 + 4.18497666770E-01 4.23761719391E-01 4.29091985643E-01 4.34489298391E-01 + 4.39954500976E-01 4.45488447347E-01 4.51092002194E-01 4.56766041084E-01 + 4.62511450597E-01 4.68329128465E-01 4.74219983713E-01 4.80184936797E-01 + 4.86224919755E-01 4.92340876346E-01 4.98533762201E-01 5.04804544970E-01 + 5.11154204476E-01 5.17583732867E-01 5.24094134769E-01 5.30686427446E-01 + 5.37361640957E-01 5.44120818318E-01 5.50965015663E-01 5.57895302413E-01 + 5.64912761440E-01 5.72018489234E-01 5.79213596081E-01 5.86499206231E-01 + 5.93876458075E-01 6.01346504324E-01 6.08910512188E-01 6.16569663558E-01 + 6.24325155193E-01 6.32178198903E-01 6.40130021743E-01 6.48181866201E-01 + 6.56334990395E-01 6.64590668266E-01 6.72950189781E-01 6.81414861132E-01 + 6.89986004942E-01 6.98664960469E-01 7.07453083817E-01 7.16351748149E-01 + 7.25362343900E-01 7.34486278992E-01 7.43724979059E-01 7.53079887668E-01 + 7.62552466541E-01 7.72144195789E-01 7.81856574138E-01 7.91691119167E-01 + 8.01649367545E-01 8.11732875267E-01 8.21943217903E-01 8.32281990838E-01 + 8.42750809528E-01 8.53351309747E-01 8.64085147843E-01 8.74954001003E-01 + 8.85959567504E-01 8.97103566991E-01 9.08387740736E-01 9.19813851913E-01 + 9.31383685875E-01 9.43099050434E-01 9.54961776138E-01 9.66973716562E-01 + 9.79136748597E-01 9.91452772741E-01 1.00392371340E+00 1.01655151918E+00 + 1.02933816320E+00 1.04228564340E+00 1.05539598286E+00 1.06867123009E+00 + 1.08211345937E+00 1.09572477108E+00 1.10950729201E+00 1.12346317572E+00 + 1.13759460283E+00 1.15190378142E+00 1.16639294731E+00 1.18106436448E+00 + 1.19592032535E+00 1.21096315121E+00 1.22619519253E+00 1.24161882933E+00 + 1.25723647161E+00 + + + + + + -1.05300774746E+01 -1.05300775064E+01 -1.05300775806E+01 -1.05300776560E+01 + -1.05300777336E+01 -1.05300778196E+01 -1.05300779034E+01 -1.05300779856E+01 + -1.05300780770E+01 -1.05300781648E+01 -1.05300782509E+01 -1.05300783451E+01 + -1.05300784424E+01 -1.05300785397E+01 -1.05300786396E+01 -1.05300787418E+01 + -1.05300788464E+01 -1.05300789532E+01 -1.05300790615E+01 -1.05300791727E+01 + -1.05300792913E+01 -1.05300794159E+01 -1.05300795387E+01 -1.05300796624E+01 + -1.05300797927E+01 -1.05300799265E+01 -1.05300800580E+01 -1.05300801950E+01 + -1.05300803415E+01 -1.05300804883E+01 -1.05300806375E+01 -1.05300807916E+01 + -1.05300809464E+01 -1.05300811065E+01 -1.05300812753E+01 -1.05300814456E+01 + -1.05300816168E+01 -1.05300817936E+01 -1.05300819793E+01 -1.05300821692E+01 + -1.05300823586E+01 -1.05300825558E+01 -1.05300827597E+01 -1.05300829655E+01 + -1.05300831781E+01 -1.05300833960E+01 -1.05300836185E+01 -1.05300838490E+01 + -1.05300840840E+01 -1.05300843234E+01 -1.05300845708E+01 -1.05300848243E+01 + -1.05300850829E+01 -1.05300853485E+01 -1.05300856222E+01 -1.05300859019E+01 + -1.05300861879E+01 -1.05300864818E+01 -1.05300867827E+01 -1.05300870916E+01 + -1.05300874091E+01 -1.05300877339E+01 -1.05300880675E+01 -1.05300884097E+01 + -1.05300887598E+01 -1.05300891175E+01 -1.05300894845E+01 -1.05300898632E+01 + -1.05300902519E+01 -1.05300906479E+01 -1.05300910535E+01 -1.05300914717E+01 + -1.05300919005E+01 -1.05300923389E+01 -1.05300927884E+01 -1.05300932497E+01 + -1.05300937227E+01 -1.05300942072E+01 -1.05300947041E+01 -1.05300952132E+01 + -1.05300957352E+01 -1.05300962711E+01 -1.05300968210E+01 -1.05300973842E+01 + -1.05300979611E+01 -1.05300985533E+01 -1.05300991608E+01 -1.05300997827E+01 + -1.05301004204E+01 -1.05301010750E+01 -1.05301017457E+01 -1.05301024334E+01 + -1.05301031388E+01 -1.05301038618E+01 -1.05301046028E+01 -1.05301053631E+01 + -1.05301061431E+01 -1.05301069425E+01 -1.05301077616E+01 -1.05301086011E+01 + -1.05301094627E+01 -1.05301103464E+01 -1.05301112516E+01 -1.05301121800E+01 + -1.05301131322E+01 -1.05301141083E+01 -1.05301151092E+01 -1.05301161357E+01 + -1.05301171877E+01 -1.05301182664E+01 -1.05301193726E+01 -1.05301205065E+01 + -1.05301216691E+01 -1.05301228613E+01 -1.05301240837E+01 -1.05301253370E+01 + -1.05301266222E+01 -1.05301279399E+01 -1.05301292908E+01 -1.05301306759E+01 + -1.05301320960E+01 -1.05301335522E+01 -1.05301350453E+01 -1.05301365761E+01 + -1.05301381458E+01 -1.05301397551E+01 -1.05301414052E+01 -1.05301430970E+01 + -1.05301448316E+01 -1.05301466102E+01 -1.05301484338E+01 -1.05301503036E+01 + -1.05301522207E+01 -1.05301541863E+01 -1.05301562017E+01 -1.05301582681E+01 + -1.05301603868E+01 -1.05301625592E+01 -1.05301647866E+01 -1.05301670703E+01 + -1.05301694119E+01 -1.05301718127E+01 -1.05301742743E+01 -1.05301767982E+01 + -1.05301793860E+01 -1.05301820394E+01 -1.05301847599E+01 -1.05301875493E+01 + -1.05301904093E+01 -1.05301933417E+01 -1.05301963483E+01 -1.05301994311E+01 + -1.05302025919E+01 -1.05302058327E+01 -1.05302091556E+01 -1.05302125626E+01 + -1.05302160559E+01 -1.05302196375E+01 -1.05302233097E+01 -1.05302270750E+01 + -1.05302309357E+01 -1.05302348941E+01 -1.05302389527E+01 -1.05302431139E+01 + -1.05302473804E+01 -1.05302517551E+01 -1.05302562405E+01 -1.05302608395E+01 + -1.05302655549E+01 -1.05302703898E+01 -1.05302753470E+01 -1.05302804296E+01 + -1.05302856410E+01 -1.05302909843E+01 -1.05302964628E+01 -1.05303020800E+01 + -1.05303078395E+01 -1.05303137447E+01 -1.05303197994E+01 -1.05303260074E+01 + -1.05303323726E+01 -1.05303388989E+01 -1.05303455904E+01 -1.05303524513E+01 + -1.05303594863E+01 -1.05303666990E+01 -1.05303740942E+01 -1.05303816766E+01 + -1.05303894512E+01 -1.05303974228E+01 -1.05304055960E+01 -1.05304139759E+01 + -1.05304225681E+01 -1.05304313778E+01 -1.05304404104E+01 -1.05304496720E+01 + -1.05304591679E+01 -1.05304689042E+01 -1.05304788871E+01 -1.05304891227E+01 + -1.05304996173E+01 -1.05305103777E+01 -1.05305214103E+01 -1.05305327222E+01 + -1.05305443209E+01 -1.05305562131E+01 -1.05305684063E+01 -1.05305809083E+01 + -1.05305937267E+01 -1.05306068697E+01 -1.05306203456E+01 -1.05306341624E+01 + -1.05306483288E+01 -1.05306628541E+01 -1.05306777471E+01 -1.05306930172E+01 + -1.05307086740E+01 -1.05307247273E+01 -1.05307411870E+01 -1.05307580632E+01 + -1.05307753670E+01 -1.05307931088E+01 -1.05308112993E+01 -1.05308299505E+01 + -1.05308490739E+01 -1.05308686816E+01 -1.05308887862E+01 -1.05309093997E+01 + -1.05309305345E+01 -1.05309522045E+01 -1.05309744234E+01 -1.05309972049E+01 + -1.05310205633E+01 -1.05310445128E+01 -1.05310690688E+01 -1.05310942467E+01 + -1.05311200619E+01 -1.05311465307E+01 -1.05311736698E+01 -1.05312014962E+01 + -1.05312300270E+01 -1.05312592798E+01 -1.05312892734E+01 -1.05313200266E+01 + -1.05313515587E+01 -1.05313838892E+01 -1.05314170384E+01 -1.05314510268E+01 + -1.05314858753E+01 -1.05315216063E+01 -1.05315582429E+01 -1.05315958063E+01 + -1.05316343207E+01 -1.05316738109E+01 -1.05317143009E+01 -1.05317558160E+01 + -1.05317983825E+01 -1.05318420272E+01 -1.05318867769E+01 -1.05319326597E+01 + -1.05319797045E+01 -1.05320279403E+01 -1.05320773975E+01 -1.05321281074E+01 + -1.05321801016E+01 -1.05322334120E+01 -1.05322880722E+01 -1.05323441170E+01 + -1.05324015810E+01 -1.05324605002E+01 -1.05325209117E+01 -1.05325828530E+01 + -1.05326463631E+01 -1.05327114817E+01 -1.05327782492E+01 -1.05328467073E+01 + -1.05329168993E+01 -1.05329888691E+01 -1.05330626618E+01 -1.05331383234E+01 + -1.05332159012E+01 -1.05332954437E+01 -1.05333770008E+01 -1.05334606239E+01 + -1.05335463651E+01 -1.05336342777E+01 -1.05337244169E+01 -1.05338168395E+01 + -1.05339116033E+01 -1.05340087670E+01 -1.05341083917E+01 -1.05342105404E+01 + -1.05343152765E+01 -1.05344226654E+01 -1.05345327751E+01 -1.05346456740E+01 + -1.05347614327E+01 -1.05348801239E+01 -1.05350018220E+01 -1.05351266031E+01 + -1.05352545453E+01 -1.05353857293E+01 -1.05355202367E+01 -1.05356581514E+01 + -1.05357995605E+01 -1.05359445525E+01 -1.05360932181E+01 -1.05362456505E+01 + -1.05364019450E+01 -1.05365621997E+01 -1.05367265152E+01 -1.05368949946E+01 + -1.05370677434E+01 -1.05372448694E+01 -1.05374264838E+01 -1.05376127007E+01 + -1.05378036365E+01 -1.05379994114E+01 -1.05382001481E+01 -1.05384059723E+01 + -1.05386170128E+01 -1.05388334019E+01 -1.05390552759E+01 -1.05392827735E+01 + -1.05395160372E+01 -1.05397552141E+01 -1.05400004541E+01 -1.05402519104E+01 + -1.05405097409E+01 -1.05407741080E+01 -1.05410451772E+01 -1.05413231186E+01 + -1.05416081068E+01 -1.05419003200E+01 -1.05421999419E+01 -1.05425071612E+01 + -1.05428221707E+01 -1.05431451679E+01 -1.05434763552E+01 -1.05438159405E+01 + -1.05441641377E+01 -1.05445211658E+01 -1.05448872479E+01 -1.05452626142E+01 + -1.05456475011E+01 -1.05460421503E+01 -1.05464468096E+01 -1.05468617332E+01 + -1.05472871816E+01 -1.05477234222E+01 -1.05481707290E+01 -1.05486293836E+01 + -1.05490996743E+01 -1.05495818964E+01 -1.05500763529E+01 -1.05505833551E+01 + -1.05511032216E+01 -1.05516362785E+01 -1.05521828616E+01 -1.05527433148E+01 + -1.05533179898E+01 -1.05539072481E+01 -1.05545114606E+01 -1.05551310070E+01 + -1.05557662771E+01 -1.05564176704E+01 -1.05570855963E+01 -1.05577704750E+01 + -1.05584727371E+01 -1.05591928241E+01 -1.05599311889E+01 -1.05606882959E+01 + -1.05614646210E+01 -1.05622606523E+01 -1.05630768907E+01 -1.05639138490E+01 + -1.05647720533E+01 -1.05656520429E+01 -1.05665543710E+01 -1.05674796048E+01 + -1.05684283254E+01 -1.05694011288E+01 -1.05703986261E+01 -1.05714214441E+01 + -1.05724702243E+01 -1.05735456247E+01 -1.05746483210E+01 -1.05757790046E+01 + -1.05769383845E+01 -1.05781271876E+01 -1.05793461590E+01 -1.05805960619E+01 + -1.05818776792E+01 -1.05831918133E+01 -1.05845392857E+01 -1.05859209391E+01 + -1.05873376370E+01 -1.05887902641E+01 -1.05902797264E+01 -1.05918069529E+01 + -1.05933728955E+01 -1.05949785289E+01 -1.05966248524E+01 -1.05983128883E+01 + -1.06000436845E+01 -1.06018183153E+01 -1.06036378800E+01 -1.06055035043E+01 + -1.06074163406E+01 -1.06093775695E+01 -1.06113884004E+01 -1.06134500698E+01 + -1.06155638440E+01 -1.06177310200E+01 -1.06199529247E+01 -1.06222309152E+01 + -1.06245663802E+01 -1.06269607406E+01 -1.06294154502E+01 -1.06319319958E+01 + -1.06345118972E+01 -1.06371567084E+01 -1.06398680182E+01 -1.06426474504E+01 + -1.06454966645E+01 -1.06484173559E+01 -1.06514112563E+01 -1.06544801337E+01 + -1.06576257944E+01 -1.06608500815E+01 -1.06641548757E+01 -1.06675420962E+01 + -1.06710137006E+01 -1.06745716849E+01 -1.06782180831E+01 -1.06819549688E+01 + -1.06857844541E+01 -1.06897086893E+01 -1.06937298636E+01 -1.06978502047E+01 + -1.07020719775E+01 -1.07063974860E+01 -1.07108290704E+01 -1.07153691076E+01 + -1.07200200109E+01 -1.07247842282E+01 -1.07296642419E+01 -1.07346625673E+01 + -1.07397817523E+01 -1.07450243748E+01 -1.07503930414E+01 -1.07558903865E+01 + -1.07615190691E+01 -1.07672817725E+01 -1.07731812005E+01 -1.07792200745E+01 + -1.07854011318E+01 -1.07917271218E+01 -1.07982008042E+01 -1.08048249439E+01 + -1.08116023059E+01 -1.08185356541E+01 -1.08256277451E+01 -1.08328813229E+01 + -1.08402991152E+01 -1.08478838255E+01 -1.08556381291E+01 -1.08635646666E+01 + -1.08716660356E+01 -1.08799447847E+01 -1.08884034054E+01 -1.08970443238E+01 + -1.09058698922E+01 -1.09148823800E+01 -1.09240839638E+01 -1.09334767167E+01 + -1.09430625978E+01 -1.09528434428E+01 -1.09628209501E+01 -1.09729966679E+01 + -1.09833719835E+01 -1.09939481087E+01 -1.10047260649E+01 -1.10157066701E+01 + -1.10268905232E+01 -1.10382779870E+01 -1.10498691736E+01 -1.10616639278E+01 + -1.10736618091E+01 -1.10858620728E+01 -1.10982636538E+01 -1.11108651478E+01 + -1.11236647918E+01 -1.11366604446E+01 -1.11498495677E+01 -1.11632292066E+01 + -1.11767959689E+01 -1.11905460057E+01 -1.12044749916E+01 -1.12185781045E+01 + -1.12328500061E+01 -1.12472848234E+01 -1.12618761282E+01 -1.12766169194E+01 + -1.12914996061E+01 -1.13065159887E+01 -1.13216572447E+01 -1.13369139126E+01 + -1.13522758781E+01 -1.13677323621E+01 -1.13832719095E+01 -1.13988823794E+01 + -1.14145509386E+01 -1.14302640569E+01 -1.14460075021E+01 -1.14617663402E+01 + -1.14775249384E+01 -1.14932669687E+01 -1.15089754161E+01 -1.15246325890E+01 + -1.15402201332E+01 -1.15557190501E+01 -1.15711097177E+01 -1.15863719156E+01 + -1.16014848534E+01 -1.16164272033E+01 -1.16311771374E+01 -1.16457123685E+01 + -1.16600101947E+01 -1.16740475493E+01 -1.16878010540E+01 -1.17012470765E+01 + -1.17143617913E+01 -1.17271212465E+01 -1.17395014326E+01 -1.17514783555E+01 + -1.17630281127E+01 -1.17741269739E+01 -1.17847514624E+01 -1.17948784405E+01 + -1.18044851979E+01 -1.18135495394E+01 -1.18220498759E+01 -1.18299653158E+01 + -1.18372757569E+01 -1.18439619773E+01 -1.18500057274E+01 -1.18553898192E+01 + -1.18600982126E+01 -1.18641161026E+01 -1.18674300002E+01 -1.18700278107E+01 + -1.18718989078E+01 -1.18730342027E+01 -1.18734262068E+01 -1.18730690890E+01 + -1.18719587264E+01 -1.18700927466E+01 -1.18674705638E+01 -1.18640934053E+01 + -1.18599643306E+01 -1.18550882417E+01 -1.18494718826E+01 -1.18431238318E+01 + -1.18360544842E+01 -1.18282760238E+01 -1.18198023869E+01 -1.18106492168E+01 + -1.18008338088E+01 -1.17903750466E+01 -1.17792933309E+01 -1.17676104992E+01 + -1.17553497388E+01 -1.17425354934E+01 -1.17291933628E+01 -1.17153499969E+01 + -1.17010329863E+01 -1.16862707472E+01 -1.16710924049E+01 -1.16555276733E+01 + -1.16396067344E+01 -1.16233601160E+01 -1.16068185701E+01 -1.15900129526E+01 + -1.15729741043E+01 -1.15557327348E+01 -1.15383193098E+01 -1.15207639420E+01 + -1.15030962870E+01 -1.14853454445E+01 -1.14675398651E+01 -1.14497072631E+01 + -1.14318745364E+01 -1.14140676928E+01 -1.13963117835E+01 -1.13786308446E+01 + -1.13610478447E+01 -1.13435846414E+01 -1.13262619443E+01 -1.13090992857E+01 + -1.12921149984E+01 -1.12753262004E+01 -1.12587487869E+01 -1.12423974282E+01 + -1.12262855739E+01 -1.12104254632E+01 -1.11948281401E+01 -1.11795034743E+01 + -1.11644601859E+01 -1.11497058752E+01 -1.11352470553E+01 -1.11210891887E+01 + -1.11072367261E+01 -1.10936931488E+01 -1.10804610114E+01 -1.10675419881E+01 + -1.10549369181E+01 -1.10426458539E+01 -1.10306681086E+01 -1.10190023043E+01 + -1.10076464199E+01 -1.09965978384E+01 -1.09858533942E+01 -1.09754094190E+01 + -1.09652617864E+01 -1.09554059560E+01 -1.09458370152E+01 -1.09365497199E+01 + -1.09275385338E+01 -1.09187976650E+01 -1.09103211016E+01 -1.09021026453E+01 + -1.08941359421E+01 -1.08864145127E+01 -1.08789317791E+01 -1.08716810907E+01 + -1.08646557475E+01 -1.08578490216E+01 -1.08512541770E+01 -1.08448644875E+01 + -1.08386732524E+01 -1.08326738107E+01 -1.08268595539E+01 -1.08212239365E+01 + -1.08157604854E+01 -1.08104628077E+01 -1.08053245969E+01 -1.08003396380E+01 + -1.07955018107E+01 -1.07908050925E+01 -1.07862435591E+01 -1.07818113851E+01 + -1.07775028424E+01 -1.07733122991E+01 -1.07692342158E+01 -1.07652631421E+01 + -1.07613937122E+01 -1.07576206389E+01 -1.07539387082E+01 -1.07503427719E+01 + -1.07468277402E+01 -1.07433885736E+01 -1.07400202741E+01 -1.07367178758E+01 + -1.07334764351E+01 -1.07302910203E+01 -1.07271567005E+01 -1.07240685341E+01 + -1.07210215574E+01 -1.07180107714E+01 -1.07150311295E+01 -1.07120775242E+01 + -1.07091447728E+01 -1.07062276037E+01 -1.07033206417E+01 -1.07004183926E+01 + -1.06975152277E+01 -1.06946053681E+01 -1.06916828681E+01 -1.06887415986E+01 + -1.06857752295E+01 -1.06827772126E+01 -1.06797407630E+01 -1.06766588413E+01 + -1.06735241347E+01 -1.06703290378E+01 -1.06670656336E+01 -1.06637256739E+01 + -1.06603005593E+01 -1.06567813197E+01 -1.06531585942E+01 -1.06494226110E+01 + -1.06455631678E+01 -1.06415696121E+01 -1.06374308216E+01 -1.06331351854E+01 + -1.06286705854E+01 -1.06240243788E+01 -1.06191833812E+01 -1.06141338507E+01 + -1.06088614732E+01 -1.06033513499E+01 -1.05975879853E+01 -1.05915552783E+01 + -1.05852365149E+01 -1.05786143637E+01 -1.05716708740E+01 -1.05643874775E+01 + -1.05567449927E+01 -1.05487236344E+01 -1.05403030260E+01 -1.05314622172E+01 + -1.05221797061E+01 -1.05124334671E+01 -1.05022009834E+01 -1.04914592859E+01 + -1.04801849981E+01 -1.04683543870E+01 -1.04559434204E+01 -1.04429278309E+01 + -1.04292831859E+01 -1.04149849643E+01 -1.04000086391E+01 -1.03843297656E+01 + -1.03679240754E+01 -1.03507675746E+01 -1.03328366457E+01 -1.03141081527E+01 + -1.02945595481E+01 -1.02741689794E+01 -1.02529153959E+01 -1.02307786513E+01 + -1.02077396027E+01 -1.01837802030E+01 -1.01588835846E+01 -1.01330341324E+01 + -1.01062175451E+01 -1.00784208808E+01 -1.00496325866E+01 -1.00198425104E+01 + -9.98904189272E+00 -9.95722333793E+00 -9.92438076415E+00 -9.89050933181E+00 + -9.85560535080E+00 -9.81966616751E+00 -9.78269003292E+00 -9.74467595404E+00 + -9.70562353128E+00 -9.66553278486E+00 -9.62440397392E+00 -9.58223741225E+00 + -9.53903328474E+00 -9.49479146884E+00 -9.44951136503E+00 -9.40319174034E+00 + -9.35583058814E+00 -9.30742500733E+00 -9.25797110299E+00 -9.20746391000E+00 + -9.15589734021E+00 -9.10326415285E+00 -9.04955594706E+00 -8.99476317475E+00 + -8.93887517095E+00 -8.88188019884E+00 -8.82376550570E+00 -8.76451738647E+00 + -8.70412125120E+00 -8.64256169349E+00 -8.57982255737E+00 -8.51588700113E+00 + -8.45073755777E+00 -8.38435619322E+00 -8.31672436512E+00 -8.24782308676E+00 + -8.17763300286E+00 -8.10613448580E+00 -8.03330776279E+00 -7.95913308633E+00 + -7.88359096167E+00 -7.80666244561E+00 -7.72832953150E+00 -7.64857563404E+00 + -7.56738618611E+00 -7.48474935620E+00 -7.40065689107E+00 -7.31510508220E+00 + -7.22809584794E+00 -7.13963791525E+00 -7.04974807689E+00 -6.95845249132E+00 + -6.86578798542E+00 -6.77180331333E+00 -6.67656032123E+00 -6.58013496573E+00 + -6.48261813542E+00 -6.38411622976E+00 -6.28475145732E+00 -6.18466182579E+00 + -6.08400080863E+00 -5.98293668641E+00 -5.88165157417E+00 -5.78034015801E+00 + -5.67920817375E+00 -5.57847066754E+00 -5.47835008150E+00 -5.37907420741E+00 + -5.28087404831E+00 -5.18398162172E+00 -5.08862772986E+00 -4.99503971344E+00 + -4.90343919541E+00 -4.81403981239E+00 -4.72704492333E+00 -4.64264527873E+00 + -4.56101663040E+00 -4.48231725974E+00 -4.40668540484E+00 -4.33423657086E+00 + -4.26506071624E+00 -4.19921931876E+00 -4.13674234028E+00 -4.07762512864E+00 + -4.02182531874E+00 -3.96925982421E+00 -3.91980204594E+00 -3.87327946587E+00 + -3.82947184407E+00 -3.78811029602E+00 -3.74887759579E+00 -3.71141013172E+00 + -3.67530203480E+00 -3.64011210890E+00 -3.60537431848E+00 -3.57061273567E+00 + -3.53536201959E+00 -3.49919470088E+00 -3.46175678234E+00 -3.42281345116E+00 + -3.38230704496E+00 -3.34050434673E+00 -3.29834641242E+00 -3.25701930663E+00 + -3.21656322165E+00 -3.17666898929E+00 -3.13726349850E+00 -3.09834122249E+00 + -3.05989668111E+00 -3.02192443608E+00 -2.98441908780E+00 -2.94730290234E+00 + -2.91064256360E+00 -2.87458502900E+00 -2.83897270465E+00 -2.80372482626E+00 + -2.76891223844E+00 -2.73452980008E+00 -2.70057240896E+00 -2.66703500298E+00 + -2.63391256143E+00 -2.60120010616E+00 -2.56889270278E+00 -2.53698546178E+00 + -2.50547353950E+00 -2.47435213908E+00 -2.44357585293E+00 -2.41318511826E+00 + -2.38325709055E+00 -2.35369686747E+00 -2.32446163793E+00 -2.29558923506E+00 + -2.26707519678E+00 -2.23891511010E+00 -2.21110461121E+00 -2.18363938559E+00 + -2.15651516804E+00 -2.12972774265E+00 -2.10327294269E+00 -2.07714665055E+00 + -2.05134479750E+00 -2.02586336354E+00 -2.00069837711E+00 -1.97584591470E+00 + -1.95130210079E+00 -1.92706310750E+00 -1.90312515358E+00 -1.87948450444E+00 + -1.85613747193E+00 -1.83308041351E+00 -1.81030973183E+00 -1.78782187422E+00 + -1.76561333221E+00 -1.74368064091E+00 -1.72202037855E+00 -1.70062916585E+00 + -1.67950366550E+00 -1.65864058159E+00 -1.63803665904E+00 -1.61768868305E+00 + -1.59759347858E+00 -1.57774790974E+00 -1.55814887929E+00 -1.53879332812E+00 + -1.51967823473E+00 -1.50080061467E+00 -1.48215752015E+00 -1.46374603946E+00 + -1.44556329658E+00 -1.42760645068E+00 -1.40987269572E+00 -1.39235926002E+00 + -1.37506340582E+00 -1.35798242897E+00 -1.34111365845E+00 -1.32445445608E+00 + -1.30800221613E+00 -1.29175436496E+00 -1.27570836072E+00 -1.25986169297E+00 + -1.24421188237E+00 -1.22875648035E+00 -1.21349306877E+00 -1.19841925963E+00 + -1.18353269470E+00 -1.16883104519E+00 -1.15431201145E+00 -1.13997332263E+00 + -1.12581273630E+00 -1.11182803818E+00 -1.09801704174E+00 -1.08437758789E+00 + -1.07090754461E+00 -1.05760480664E+00 -1.04446729511E+00 -1.03149295722E+00 + -1.01867976587E+00 -1.00602571934E+00 -9.93528840964E-01 -9.81187178790E-01 + -9.68998805242E-01 -9.56961816813E-01 -9.45074333740E-01 -9.33334499693E-01 + -9.21740481463E-01 -9.10290468667E-01 -8.98982673440E-01 -8.87815330152E-01 + -8.76786695114E-01 -8.65895046297E-01 -8.55138683055E-01 -8.44515925853E-01 + -8.34025115995E-01 -8.23664615365E-01 -8.13432806163E-01 -8.03328090649E-01 + -7.93348890896E-01 -7.83493648539E-01 -7.73760824530E-01 -7.64148898900E-01 + -7.54656370519E-01 -7.45281756864E-01 -7.36023593791E-01 -7.26880435301E-01 + -7.17850853321E-01 -7.08933437479E-01 -7.00126794890E-01 -6.91429549933E-01 + -6.82840344047E-01 -6.74357835510E-01 -6.65980699242E-01 -6.57707626590E-01 + -6.49537325133E-01 -6.41468518477E-01 -6.33499946060E-01 -6.25630362955E-01 + -6.17858539676E-01 -6.10183261992E-01 -6.02603330732E-01 -5.95117561608E-01 + -5.87724785400E-01 -5.80423846231E-01 -5.73213603767E-01 -5.66092931412E-01 + -5.59060716553E-01 -5.52115860383E-01 -5.45257277735E-01 -5.38483896910E-01 + -5.31794659513E-01 -5.25188520284E-01 -5.18664447208E-01 -5.12221420420E-01 + -5.05858432466E-01 -4.99574484442E-01 -4.93368633461E-01 -4.87239803392E-01 + -4.81187183660E-01 -4.75208671361E-01 -4.69305597009E-01 -4.63475789300E-01 + -4.57718400624E-01 -4.52032531377E-01 -4.46417293131E-01 -4.40871808492E-01 + -4.35395210968E-01 -4.29986644830E-01 -4.24645263962E-01 -4.19370235819E-01 + -4.14160735127E-01 -4.09015947889E-01 -4.03935070223E-01 -3.98917308232E-01 + -3.93961878019E-01 -3.89068004997E-01 -3.84234926956E-01 -3.79461884032E-01 + -3.74748132798E-01 -3.70092936724E-01 -3.65495568423E-01 -3.60955309549E-01 + -3.56471450677E-01 -3.52043291194E-01 -3.47670139192E-01 -3.43351311357E-01 + -3.39086132863E-01 -3.34873937267E-01 -3.30714066405E-01 -3.26605870001E-01 + -3.22548706724E-01 -3.18541942338E-01 -3.14584950780E-01 -3.10677113759E-01 + -3.06817820670E-01 -3.03006468490E-01 -2.99242461687E-01 -2.95525212127E-01 + -2.91854138983E-01 -2.88228668642E-01 -2.84648234616E-01 -2.81112277457E-01 + -2.77620244663E-01 -2.74171590597E-01 -2.70765776399E-01 -2.67402269906E-01 + -2.64080545560E-01 -2.60800084338E-01 -2.57560373659E-01 -2.54360907312E-01 + -2.51201185375E-01 -2.48080714134E-01 -2.44999006010E-01 -2.41955579478E-01 + -2.38949958998E-01 -2.35981674936E-01 -2.33050263490E-01 -2.30155266622E-01 + -2.27296231983E-01 -2.24472712842E-01 -2.21684268019E-01 -2.18930461815E-01 + -2.16210863940E-01 -2.13525049453E-01 -2.10872598689E-01 -2.08253097198E-01 + -2.05666135676E-01 -2.03111309907E-01 -2.00588220694E-01 -1.98096473798E-01 + -1.95635679879E-01 -1.93205454433E-01 -1.90805417732E-01 -1.88435194766E-01 + -1.86094415183E-01 -1.83782713231E-01 -1.81499727701E-01 -1.79245101873E-01 + -1.77018483457E-01 -1.74819524540E-01 -1.72647881528E-01 -1.70503215099E-01 + -1.68385190145E-01 -1.66293475719E-01 -1.64227744987E-01 -1.62187675175E-01 + -1.60172947516E-01 -1.58183247207E-01 -1.56218263351E-01 -1.54277688917E-01 + -1.52361220686E-01 -1.50468559206E-01 -1.48599408744E-01 -1.46753477242E-01 + -1.44930476270E-01 -1.43130120979E-01 -1.41352130061E-01 -1.39596225701E-01 + -1.37862133535E-01 -1.36149582608E-01 -1.34458305330E-01 -1.32788037436E-01 + -1.31138517943E-01 -1.29509489110E-01 -1.27900696398E-01 -1.26311888431E-01 + -1.24742816952E-01 -1.23193236793E-01 -1.21662905828E-01 -1.20151584939E-01 + -1.18659037980E-01 -1.17185031737E-01 -1.15729335894E-01 -1.14291722995E-01 + -1.12871968410E-01 -1.11469850300E-01 -1.10085149580E-01 -1.08717649890E-01 + -1.07367137553E-01 -1.06033401550E-01 -1.04716233481E-01 -1.03415427537E-01 + -1.02130780465E-01 -1.00862091534E-01 -9.96091625103E-02 -9.83717976210E-02 + -9.71498035252E-02 -9.59429892838E-02 -9.47511663297E-02 -9.35741484381E-02 + -9.24117516976E-02 -9.12637944813E-02 -9.01300974186E-02 -8.90104833669E-02 + -8.79047773844E-02 -8.68128067022E-02 -8.57344006977E-02 -8.46693908677E-02 + -8.36176108022E-02 -8.25788961586E-02 -8.15530846355E-02 -8.05400159479E-02 + -7.95395318015E-02 + + + + + + 1 0 Beta L + 853 + 3.77200132062E-04 3.81944725674E-04 3.86748998928E-04 3.91613702502E-04 + 3.96546579553E-04 4.01515177810E-04 4.06536940162E-04 4.11770938535E-04 + 4.16795272755E-04 4.22108201131E-04 4.27400458426E-04 4.32835684206E-04 + 4.38193933658E-04 4.43780601874E-04 4.49307002731E-04 4.55023307290E-04 + 4.60696213841E-04 4.66541306357E-04 4.72349689351E-04 4.78336558387E-04 + 4.84339519398E-04 4.90397051406E-04 4.96554714049E-04 5.02864003256E-04 + 5.09172177154E-04 5.15540821215E-04 5.22062208520E-04 5.28638352266E-04 + 5.35256610115E-04 5.42005611279E-04 5.48813822380E-04 5.55737157710E-04 + 5.62702849532E-04 5.69829070363E-04 5.76944359780E-04 5.84235396155E-04 + 5.91546259094E-04 5.99002669746E-04 6.06584760781E-04 6.14121355985E-04 + 6.21922588327E-04 6.29730384629E-04 6.37589688236E-04 6.45703566486E-04 + 6.53776668664E-04 6.61995115536E-04 6.70356809366E-04 6.78739358807E-04 + 6.87297003565E-04 6.95967577763E-04 7.04702279377E-04 7.13541010513E-04 + 7.22537436050E-04 7.31637680319E-04 7.40824327718E-04 7.50122252789E-04 + 7.59621318756E-04 7.69097768058E-04 7.78845302638E-04 7.88588175093E-04 + 7.98549199430E-04 8.08579389517E-04 8.18751149807E-04 8.29025402424E-04 + 8.39476520812E-04 8.50009855040E-04 8.60754123455E-04 8.71560712619E-04 + 8.82500146517E-04 8.93597289155E-04 9.04876855397E-04 9.16218080539E-04 + 9.27743817620E-04 9.39427356892E-04 9.51242417883E-04 9.63208408269E-04 + 9.75315294325E-04 9.87589735061E-04 1.00002284690E-03 1.01259752536E-03 + 1.02534154863E-03 1.03822404507E-03 1.05129180760E-03 1.06450464424E-03 + 1.07790193931E-03 1.09146824411E-03 1.10517771634E-03 1.11908167464E-03 + 1.13320035376E-03 1.14739956395E-03 1.16187095571E-03 1.17647573143E-03 + 1.19126024003E-03 1.20625883884E-03 1.22142636373E-03 1.23680137505E-03 + 1.25233761762E-03 1.26809297441E-03 1.28404326071E-03 1.30022879717E-03 + 1.31654830535E-03 1.33311425320E-03 1.34986907416E-03 1.36689208035E-03 + 1.38405063947E-03 1.40147315444E-03 1.41909277875E-03 1.43693989475E-03 + 1.45501473608E-03 1.47333492959E-03 1.49183619704E-03 1.51062212844E-03 + 1.52962209736E-03 1.54886724319E-03 1.56833920093E-03 1.58807737024E-03 + 1.60803892650E-03 1.62827094408E-03 1.64874923664E-03 1.66949358371E-03 + 1.69048532493E-03 1.71176700398E-03 1.73326793125E-03 1.75511463670E-03 + 1.77714445163E-03 1.79952974573E-03 1.82214712257E-03 1.84506314147E-03 + 1.86829730551E-03 1.89177141981E-03 1.91558758998E-03 1.93966807722E-03 + 1.96406069056E-03 1.98878888257E-03 2.01379280822E-03 2.03912075435E-03 + 2.06477267558E-03 2.09074153745E-03 2.11704680625E-03 2.14366844787E-03 + 2.17063582413E-03 2.19793555610E-03 2.22558187035E-03 2.25357900768E-03 + 2.28193331024E-03 2.31062898986E-03 2.33969945416E-03 2.36912370729E-03 + 2.39892072487E-03 2.42910244513E-03 2.45964743754E-03 2.49058571046E-03 + 2.52192187929E-03 2.55363666393E-03 2.58577101163E-03 2.61827754013E-03 + 2.65123803904E-03 2.68455870811E-03 2.71834597890E-03 2.75251644555E-03 + 2.78716225895E-03 2.82220392837E-03 2.85771007613E-03 2.89365702839E-03 + 2.93003927973E-03 2.96691655920E-03 3.00421764733E-03 3.04201847672E-03 + 3.08027758503E-03 3.11902559473E-03 3.15825452171E-03 3.19798548076E-03 + 3.23820381956E-03 3.27895033102E-03 3.32017748903E-03 3.36195198377E-03 + 3.40423772154E-03 3.44705234691E-03 3.49041511255E-03 3.53431277924E-03 + 3.57877235378E-03 3.62378794500E-03 3.66937115543E-03 3.71552483051E-03 + 3.76226166335E-03 3.80958809428E-03 3.85750751609E-03 3.90602010825E-03 + 3.95515917840E-03 4.00490513508E-03 4.05528880964E-03 4.10628859071E-03 + 4.15794499816E-03 4.21024410920E-03 4.26319977163E-03 4.31682260600E-03 + 4.37112675512E-03 4.42610215356E-03 4.48178299940E-03 4.53814993987E-03 + 4.59523845210E-03 4.65303693666E-03 4.71156279386E-03 4.77082885736E-03 + 4.83083721242E-03 4.89160467683E-03 4.95313163188E-03 5.01543635173E-03 + 5.07852124365E-03 5.14239856633E-03 5.20708713743E-03 5.27257979969E-03 + 5.33890097206E-03 5.40605903582E-03 5.47405276464E-03 5.54291437998E-03 + 5.61263083112E-03 5.68323337559E-03 5.75472331739E-03 5.82709767362E-03 + 5.90040333526E-03 5.97461858369E-03 6.04976586394E-03 6.12586755998E-03 + 6.20291594141E-03 6.28094292302E-03 6.35994277974E-03 6.43995172763E-03 + 6.52094654448E-03 6.60297116182E-03 6.68602921642E-03 6.77012555850E-03 + 6.85528398571E-03 6.94151686301E-03 7.02882239702E-03 7.11724097428E-03 + 7.20676248028E-03 7.29741036237E-03 7.38920328458E-03 7.48214525593E-03 + 7.57626428806E-03 7.67155656359E-03 7.76805436875E-03 7.86576261821E-03 + 7.96470327926E-03 8.06488714118E-03 8.16632967282E-03 8.26905277053E-03 + 8.37306143742E-03 8.47837635336E-03 8.58503068137E-03 8.69301057112E-03 + 8.80235436075E-03 8.91307698958E-03 9.02518966924E-03 9.13871060858E-03 + 9.25366132790E-03 9.37005781061E-03 9.48792056196E-03 9.60725885302E-03 + 9.72810963417E-03 9.85046701994E-03 9.97437483895E-03 1.00998341373E-02 + 1.02268774027E-02 1.03555139543E-02 1.04857671274E-02 1.06176643994E-02 + 1.07512176149E-02 1.08864483757E-02 1.10233849102E-02 1.11620411069E-02 + 1.13024410379E-02 1.14446084420E-02 1.15885648033E-02 1.17343268298E-02 + 1.18819286562E-02 1.20313832391E-02 1.21827193529E-02 1.23359574588E-02 + 1.24911249393E-02 1.26482436408E-02 1.28073358702E-02 1.29684335260E-02 + 1.31315559379E-02 1.32967276960E-02 1.34639808510E-02 1.36333337232E-02 + 1.38048225613E-02 1.39784633180E-02 1.41542889163E-02 1.43323279756E-02 + 1.45126065268E-02 1.46951482213E-02 1.48799917730E-02 1.50671570857E-02 + 1.52566776738E-02 1.54485808864E-02 1.56428986896E-02 1.58396623489E-02 + 1.60388971137E-02 1.62406415531E-02 1.64449233808E-02 1.66517707564E-02 + 1.68612244198E-02 1.70733085050E-02 1.72880650856E-02 1.75055181203E-02 + 1.77257105164E-02 1.79486675758E-02 1.81744346189E-02 1.84030370388E-02 + 1.86345180998E-02 1.88689089433E-02 1.91062462321E-02 1.93465723495E-02 + 1.95899181396E-02 1.98363265436E-02 2.00858354571E-02 2.03384797918E-02 + 2.05943052053E-02 2.08533431185E-02 2.11156453033E-02 2.13812418001E-02 + 2.16501823197E-02 2.19225035773E-02 2.21982519109E-02 2.24774671194E-02 + 2.27601941399E-02 2.30464788396E-02 2.33363633581E-02 2.36298925280E-02 + 2.39271177976E-02 2.42280769703E-02 2.45328240282E-02 2.48414033088E-02 + 2.51538637605E-02 2.54702555114E-02 2.57906254997E-02 2.61150257020E-02 + 2.64435039942E-02 2.67761174754E-02 2.71129118290E-02 2.74539417218E-02 + 2.77992639518E-02 2.81489262783E-02 2.85029888305E-02 2.88615039777E-02 + 2.92245275576E-02 2.95921180550E-02 2.99643309358E-02 3.03412261057E-02 + 3.07228617247E-02 3.11092972242E-02 3.15005923719E-02 3.18968098987E-02 + 3.22980107598E-02 3.27042573221E-02 3.31156121504E-02 3.35321435713E-02 + 3.39539115575E-02 3.43809844766E-02 3.48134294379E-02 3.52513125026E-02 + 3.56947037502E-02 3.61436711406E-02 3.65982846695E-02 3.70586167321E-02 + 3.75247378590E-02 3.79967220192E-02 3.84746409287E-02 3.89585721712E-02 + 3.94485885965E-02 3.99447674934E-02 4.04471886083E-02 4.09559262139E-02 + 4.14710640089E-02 4.19926787036E-02 4.25208545396E-02 4.30556729001E-02 + 4.35972170823E-02 4.41455722180E-02 4.47008228925E-02 4.52630579481E-02 + 4.58323628918E-02 4.64088270843E-02 4.69925419978E-02 4.75835967020E-02 + 4.81820861436E-02 4.87880990863E-02 4.94017368091E-02 5.00230887509E-02 + 5.06522558449E-02 5.12893354438E-02 5.19344253097E-02 5.25876289254E-02 + 5.32490462992E-02 5.39187809887E-02 5.45969383732E-02 5.52836229812E-02 + 5.59789437312E-02 5.66830072634E-02 5.73959251431E-02 5.81178073346E-02 + 5.88487664959E-02 5.95889181608E-02 6.03383763986E-02 6.10972594084E-02 + 6.18656841586E-02 6.26437709538E-02 6.34316428363E-02 6.42294206480E-02 + 6.50372296796E-02 6.58551953689E-02 6.66834473640E-02 6.75221125196E-02 + 6.83713228082E-02 6.92312106920E-02 7.01019094688E-02 7.09835564583E-02 + 7.18762881504E-02 7.27802437949E-02 7.36955646413E-02 7.46223931079E-02 + 7.55608743655E-02 7.65111545552E-02 7.74733815121E-02 7.84477052934E-02 + 7.94342781529E-02 8.04332541169E-02 8.14447882117E-02 8.24690387488E-02 + 8.35061645433E-02 8.45563291499E-02 8.56196934996E-02 8.66964260472E-02 + 8.77866927760E-02 8.88906644893E-02 9.00085124788E-02 9.11404122127E-02 + 9.22865382340E-02 9.34470708806E-02 9.46221899999E-02 9.58120783816E-02 + 9.70169225838E-02 9.82369086946E-02 9.94722280742E-02 1.00723072180E-01 + 1.01989636010E-01 1.03272117325E-01 1.04570714922E-01 1.05885631854E-01 + 1.07217071698E-01 1.08565242621E-01 1.09930354234E-01 1.11312618637E-01 + 1.12712251399E-01 1.14129469361E-01 1.15564493979E-01 1.17017548198E-01 + 1.18488857842E-01 1.19978651340E-01 1.21487161185E-01 1.23014621153E-01 + 1.24561269257E-01 1.26127345344E-01 1.27713093225E-01 1.29318759064E-01 + 1.30944592357E-01 1.32590845601E-01 1.34257774811E-01 1.35945638417E-01 + 1.37654698840E-01 1.39385220844E-01 1.41137474080E-01 1.42911729541E-01 + 1.44708262584E-01 1.46527352334E-01 1.48369280969E-01 1.50234333755E-01 + 1.52122800063E-01 1.54034972872E-01 1.55971147963E-01 1.57931625798E-01 + 1.59916710042E-01 1.61926708387E-01 1.63961931582E-01 1.66022694935E-01 + 1.68109317693E-01 1.70222122423E-01 1.72361436210E-01 1.74527589653E-01 + 1.76720917967E-01 1.78941760286E-01 1.81190459272E-01 1.83467363346E-01 + 1.85772823228E-01 1.88107195465E-01 1.90470840140E-01 1.92864122401E-01 + 1.95287410724E-01 1.97741079649E-01 2.00225506965E-01 2.02741075644E-01 + 2.05288173567E-01 2.07867192482E-01 2.10478529701E-01 2.13122587281E-01 + 2.15799771462E-01 2.18510494297E-01 2.21255172497E-01 2.24034227470E-01 + 2.26848086206E-01 2.29697180485E-01 2.32581947965E-01 2.35502830318E-01 + 2.38460276100E-01 2.41454737697E-01 2.44486674308E-01 2.47556549716E-01 + 2.50664833737E-01 2.53812001276E-01 2.56998533767E-01 2.60224917415E-01 + 2.63491645124E-01 2.66799214985E-01 2.70148131270E-01 2.73538904390E-01 + 2.76972050334E-01 2.80448091796E-01 2.83967557161E-01 2.87530981229E-01 + 2.91138905183E-01 2.94791876267E-01 2.98490448416E-01 3.02235182154E-01 + 3.06026643969E-01 3.09865407565E-01 3.13752053238E-01 3.17687167327E-01 + 3.21671344215E-01 3.25705183753E-01 3.29789293952E-01 3.33924288806E-01 + 3.38110790068E-01 3.42349426284E-01 3.46640832940E-01 3.50985653628E-01 + 3.55384537927E-01 3.59838143928E-01 3.64347136733E-01 3.68912188598E-01 + 3.73533979781E-01 3.78213198064E-01 3.82950538569E-01 3.87746704630E-01 + 3.92602406832E-01 3.97518364050E-01 4.02495302781E-01 4.07533957651E-01 + 4.12635070821E-01 4.17799393428E-01 4.23027683590E-01 4.28320708598E-01 + 4.33679243205E-01 4.39104070860E-01 4.44595983111E-01 4.50155780001E-01 + 4.55784269791E-01 4.61482269299E-01 4.67250603880E-01 4.73090107236E-01 + 4.79001621775E-01 4.84985998259E-01 4.91044096552E-01 4.97176784582E-01 + 5.03384939256E-01 5.09669446290E-01 5.16031199810E-01 5.22471102954E-01 + 5.28990067515E-01 5.35589013990E-01 5.42268871781E-01 5.49030578946E-01 + 5.55875082333E-01 5.62803337712E-01 5.69816309501E-01 5.76914970742E-01 + 5.84100303545E-01 5.91373298496E-01 5.98734954817E-01 6.06186280626E-01 + 6.13728292460E-01 6.21362015513E-01 6.29088483478E-01 6.36908738496E-01 + 6.44823831111E-01 6.52834820242E-01 6.60942773025E-01 6.69148764645E-01 + 6.77453878623E-01 6.85859206081E-01 6.94365846425E-01 7.02974906316E-01 + 7.11687500348E-01 7.20504750554E-01 7.29427785874E-01 7.38457742969E-01 + 7.47595765129E-01 7.56843002277E-01 7.66200611320E-01 7.75669755072E-01 + 7.85251602856E-01 7.94947329724E-01 8.04758116156E-01 8.14685148498E-01 + 8.24729617635E-01 8.34892719603E-01 8.45175654591E-01 8.55579627233E-01 + 8.66105845464E-01 8.76755521073E-01 8.87529868488E-01 8.98430104695E-01 + 9.09457448941E-01 9.20613122006E-01 9.31898345782E-01 9.43314342879E-01 + 9.54862335918E-01 9.66543546993E-01 9.78359197235E-01 9.90310505979E-01 + 1.00239869009E+00 1.01462496359E+00 1.02699053647E+00 1.03949661439E+00 + 1.05214439738E+00 1.06493507961E+00 1.07786984795E+00 1.09094988137E+00 + 1.10417634995E+00 1.11755041377E+00 1.13107322201E+00 1.14474591178E+00 + 1.15856960678E+00 1.17254541669E+00 1.18667443507E+00 1.20095773891E+00 + 1.21539638659E+00 1.22999141674E+00 1.24474384703E+00 1.25965467188E+00 + 1.27472486164E+00 1.28995536035E+00 1.30534708406E+00 1.32090091932E+00 + 1.33661772065E+00 1.35249830914E+00 1.36854346992E+00 1.38475395002E+00 + 1.40113045636E+00 1.41767365287E+00 1.43438415846E+00 1.45126254411E+00 + 1.46830933021E+00 1.48552498380E+00 1.50290991542E+00 1.52046447615E+00 + 1.53818895443E+00 1.55608357228E+00 1.57414848244E+00 1.59238376384E+00 + 1.61078941860E+00 1.62936536726E+00 1.64811144507E+00 1.66702739737E+00 + 1.68611287500E+00 1.70536742954E+00 1.72479050837E+00 1.74438144912E+00 + 1.76413947474E+00 1.78406368701E+00 1.80415306129E+00 1.82440643976E+00 + 1.84482252500E+00 1.86539987322E+00 1.88613688684E+00 1.90703180735E+00 + 1.92808270706E+00 1.94928748098E+00 1.97064383851E+00 1.99214929383E+00 + 2.01380115706E+00 2.03559652392E+00 2.05753226555E+00 2.07960501772E+00 + 2.10181116926E+00 2.12414685039E+00 2.14660792005E+00 2.16918995275E+00 + 2.19188822536E+00 2.21469770199E+00 2.23761301970E+00 2.26062847226E+00 + 2.28373799379E+00 2.30693514156E+00 2.33021307775E+00 2.35356455060E+00 + 2.37698187449E+00 2.40045690913E+00 2.42398103799E+00 2.44754514524E+00 + 2.47113959244E+00 2.49475419315E+00 2.51837818727E+00 2.54200021397E+00 + 2.56560828298E+00 2.58918974561E+00 2.61273126353E+00 2.63621877679E+00 + 2.65963747082E+00 2.68297174115E+00 2.70620515797E+00 2.72932042840E+00 + 2.75229935797E+00 2.77512281068E+00 2.79777066729E+00 2.82022178321E+00 + 2.84245394418E+00 2.86444382141E+00 2.88616692549E+00 2.90759755889E+00 + 2.92870876823E+00 2.94947229506E+00 2.96985852651E+00 2.98983644544E+00 + 3.00937358003E+00 3.02843595413E+00 3.04698803721E+00 3.06499269527E+00 + 3.08241114338E+00 3.09920289844E+00 3.11532573556E+00 3.13073564538E+00 + 3.14538679564E+00 3.15923149620E+00 3.17222016825E+00 3.18430131956E+00 + 3.19542152531E+00 3.20552541650E+00 3.21455567680E+00 3.22245304799E+00 + 3.22915634733E+00 3.23460249562E+00 3.23872655946E+00 3.24146180832E+00 + 3.24273978751E+00 3.24249041031E+00 3.24064206905E+00 3.23712176867E+00 + 3.23185528381E+00 3.22476734125E+00 3.21578183061E+00 3.20482204418E+00 + 3.19181094883E+00 3.17667149186E+00 3.15932694190E+00 3.13970126843E+00 + 3.11771955981E+00 3.09330848315E+00 3.06639678607E+00 3.03691584250E+00 + 3.00480024309E+00 2.96998843030E+00 2.93242337932E+00 2.89205332312E+00 + 2.84883252181E+00 2.80272207413E+00 2.75369076859E+00 2.70171597174E+00 + 2.64678454909E+00 2.58889381377E+00 2.52805249733E+00 2.46428173497E+00 + 2.39761605767E+00 2.32810438099E+00 2.25581098042E+00 2.18081644096E+00 + 2.10321856730E+00 2.02313324043E+00 1.94069520423E+00 1.85605876490E+00 + 1.76939838503E+00 1.68090915234E+00 1.59080710307E+00 1.49932937858E+00 + 1.40673419334E+00 1.31330059228E+00 1.21932797513E+00 1.12513536597E+00 + 1.03106040638E+00 9.37458051877E-01 8.44698952513E-01 7.53167500214E-01 + 6.63259527856E-01 5.75379647718E-01 4.89938219974E-01 4.07347945966E-01 + 3.28020085018E-01 2.52360298382E-01 1.80764129499E-01 1.13612135644E-01 + 5.12646927761E-02 -5.94349718259E-03 -5.77091592845E-02 -1.03766412270E-01 + -1.43892892831E-01 -1.77915970002E-01 -2.05718970351E-01 -2.27247321143E-01 + -2.42514503603E-01 -2.51607692336E-01 -2.54692938497E-01 -2.52019734230E-01 + -2.43924774213E-01 -2.30834705442E-01 -2.13267630477E-01 -1.91833100456E-01 + -1.67230303018E-01 -1.40244117310E-01 -1.11738671259E-01 -8.26479985523E-02 + -5.39633501379E-02 -2.67166700392E-02 -1.95969656499E-03 1.92619039524E-02 + 3.59400290290E-02 4.71419112203E-02 5.20555763900E-02 5.00378357409E-02 + 4.07242185566E-02 2.36338797224E-02 2.78853866011E-03 -2.66285118891E-04 + 3.62976213596E-05 5.99428383250E-06 8.67837800385E-06 8.07855418087E-06 + 7.79357057068E-06 7.46899012701E-06 7.14326827255E-06 6.80430238581E-06 + 6.48141588687E-06 + 2.40 2.40 + 3S + + + 2 1 Beta L + 853 + -4.00348976379E-08 -4.10483858970E-08 -4.20875307336E-08 -4.31529816469E-08 + -4.42454045785E-08 -4.53654823283E-08 -4.65139149814E-08 -4.76914203455E-08 + -4.88987343999E-08 -5.01366117550E-08 -5.14058261246E-08 -5.27071708090E-08 + -5.40414591909E-08 -5.54095252440E-08 -5.68122240541E-08 -5.82504323538E-08 + -5.97250490699E-08 -6.12369958859E-08 -6.27872178178E-08 -6.43766838048E-08 + -6.60063873148E-08 -6.76773469656E-08 -6.93906071615E-08 -7.11472387457E-08 + -7.29483396702E-08 -7.47950356817E-08 -7.66884810253E-08 -7.86298591661E-08 + -8.06203835286E-08 -8.26612982552E-08 -8.47538789841E-08 -8.68994336465E-08 + -8.90993032838E-08 -9.13548628861E-08 -9.36675222517E-08 -9.60387268679E-08 + -9.84699588148E-08 -1.00962737692E-07 -1.03518621566E-07 -1.06139207949E-07 + -1.08826134792E-07 -1.11581081512E-07 -1.14405770040E-07 -1.17301965899E-07 + -1.20271479306E-07 -1.23316166302E-07 -1.26437929917E-07 -1.29638721353E-07 + -1.32920541211E-07 -1.36285440735E-07 -1.39735523095E-07 -1.43272944706E-07 + -1.46899916572E-07 -1.50618705668E-07 -1.54431636359E-07 -1.58341091849E-07 + -1.62349515676E-07 -1.66459413236E-07 -1.70673353349E-07 -1.74993969863E-07 + -1.79423963305E-07 -1.83966102565E-07 -1.88623226629E-07 -1.93398246349E-07 + -1.98294146270E-07 -2.03313986487E-07 -2.08460904565E-07 -2.13738117495E-07 + -2.19148923706E-07 -2.24696705129E-07 -2.30384929307E-07 -2.36217151567E-07 + -2.42197017236E-07 -2.48328263926E-07 -2.54614723865E-07 -2.61060326296E-07 + -2.67669099929E-07 -2.74445175464E-07 -2.81392788168E-07 -2.88516280526E-07 + -2.95820104952E-07 -3.03308826574E-07 -3.10987126087E-07 -3.18859802679E-07 + -3.26931777028E-07 -3.35208094381E-07 -3.43693927706E-07 -3.52394580925E-07 + -3.61315492230E-07 -3.70462237481E-07 -3.79840533691E-07 -3.89456242600E-07 + -3.99315374341E-07 -4.09424091191E-07 -4.19788711428E-07 -4.30415713276E-07 + -4.41311738958E-07 -4.52483598845E-07 -4.63938275712E-07 -4.75682929106E-07 + -4.87724899818E-07 -5.00071714472E-07 -5.12731090228E-07 -5.25710939609E-07 + -5.39019375443E-07 -5.52664715937E-07 -5.66655489871E-07 -5.81000441936E-07 + -5.95708538194E-07 -6.10788971683E-07 -6.26251168166E-07 -6.42104792019E-07 + -6.58359752274E-07 -6.75026208809E-07 -6.92114578703E-07 -7.09635542744E-07 + -7.27600052105E-07 -7.46019335188E-07 -7.64904904647E-07 -7.84268564576E-07 + -8.04122417894E-07 -8.24478873906E-07 -8.45350656060E-07 -8.66750809899E-07 + -8.88692711217E-07 -9.11190074417E-07 -9.34256961082E-07 -9.57907788770E-07 + -9.82157340017E-07 -1.00702077158E-06 -1.03251362392E-06 -1.05865183090E-06 + -1.08545172974E-06 -1.11293007126E-06 -1.14110403031E-06 -1.16999121655E-06 + -1.19960968539E-06 -1.22997794935E-06 -1.26111498958E-06 -1.29304026775E-06 + -1.32577373820E-06 -1.35933586040E-06 -1.39374761179E-06 -1.42903050083E-06 + -1.46520658046E-06 -1.50229846193E-06 -1.53883558145E-06 -1.57781182069E-06 + -1.61781722658E-06 -1.65879719023E-06 -1.70082989244E-06 -1.74392668025E-06 + -1.78808969714E-06 -1.83343613360E-06 -1.87985378814E-06 -1.92748545792E-06 + -1.97632997788E-06 -2.02638825800E-06 -2.07773741847E-06 -2.13036714116E-06 + -2.18433634239E-06 -2.23965849305E-06 -2.29638753250E-06 -2.35460108262E-06 + -2.41418458965E-06 -2.47538585613E-06 -2.53807380016E-06 -2.60233582348E-06 + -2.66831534937E-06 -2.73584351607E-06 -2.80517957496E-06 -2.87622206175E-06 + -2.94903375618E-06 -3.02379683975E-06 -3.10030509747E-06 -3.17889038519E-06 + -3.25936807209E-06 -3.34190351532E-06 -3.42658837219E-06 -3.51331804464E-06 + -3.60234377089E-06 -3.69354523808E-06 -3.78708636446E-06 -3.88304283701E-06 + -3.98131072580E-06 -4.08219105156E-06 -4.18554228986E-06 -4.29152822499E-06 + -4.40025145915E-06 -4.51162550614E-06 -4.62591537702E-06 -4.74304856731E-06 + -4.86313243187E-06 -4.98634515233E-06 -5.11254199663E-06 -5.24205412293E-06 + -5.37478073917E-06 -5.51085824943E-06 -5.65046675314E-06 -5.79346355225E-06 + -5.94022038361E-06 -6.09063267668E-06 -6.24481044974E-06 -6.40300862357E-06 + -6.56506300235E-06 -6.73134805777E-06 -6.90178154297E-06 -7.07650613893E-06 + -7.25575239548E-06 -7.43939392023E-06 -7.62780855754E-06 -7.82094281451E-06 + -8.01893577300E-06 -8.22203045732E-06 -8.43013461098E-06 -8.64364783545E-06 + -8.86247252720E-06 -9.08684864919E-06 -9.31697915290E-06 -9.55281687000E-06 + -9.79472233133E-06 -1.00426970131E-05 -1.02969645897E-05 -1.05577074385E-05 + -1.08249490913E-05 -1.10990737867E-05 -1.13800750145E-05 -1.16681812159E-05 + -1.19636435050E-05 -1.22664854701E-05 -1.25770925596E-05 -1.28955173991E-05 + -1.32219733176E-05 -1.35567922127E-05 -1.38999424010E-05 -1.42519163832E-05 + -1.46127344283E-05 -1.49826702115E-05 -1.53620540181E-05 -1.57509054283E-05 + -1.61497227856E-05 -1.65585850557E-05 -1.69778101048E-05 -1.74076358699E-05 + -1.78483489851E-05 -1.83002252441E-05 -1.87635355107E-05 -1.92385481974E-05 + -1.97256585611E-05 -2.02250092404E-05 -2.07370838923E-05 -2.12620602071E-05 + -2.18003578320E-05 -2.23522760469E-05 -2.29181532459E-05 -2.34983923310E-05 + -2.40932701418E-05 -2.47032297115E-05 -2.53286487913E-05 -2.59698650649E-05 + -2.66273393339E-05 -2.73014584999E-05 -2.79926104754E-05 -2.87012966016E-05 + -2.94279059994E-05 -3.01729265451E-05 -3.09367881615E-05 -3.17199888552E-05 + -3.25230323258E-05 -3.33463740304E-05 -3.41906000180E-05 -3.50561667446E-05 + -3.59436507911E-05 -3.68535998724E-05 -3.77865936556E-05 -3.87432063831E-05 + -3.97240342659E-05 -4.07296656728E-05 -4.17608021353E-05 -4.28180098674E-05 + -4.39019964378E-05 -4.50133990589E-05 -4.61529725145E-05 -4.73213781548E-05 + -4.85193484612E-05 -4.97476657788E-05 -5.10070553235E-05 -5.22983367317E-05 + -5.36223310559E-05 -5.49797929144E-05 -5.63716677218E-05 -5.77987448467E-05 + -5.92619120140E-05 -6.07627011400E-05 -6.22957589741E-05 -6.38841257716E-05 + -6.54952995294E-05 -6.71513558934E-05 -6.88502884328E-05 -7.05975483017E-05 + -7.23827420315E-05 -7.42159730588E-05 -7.60882976286E-05 -7.80300572944E-05 + -7.99871078088E-05 -8.20284651514E-05 -8.40912156294E-05 -8.62310523512E-05 + -8.84035289243E-05 -9.06509906677E-05 -9.29409061195E-05 -9.52978058112E-05 + -9.77047514479E-05 -1.00178443054E-04 -1.02720114154E-04 -1.05314358253E-04 + -1.07986632680E-04 -1.10714402631E-04 -1.13521858423E-04 -1.16392712649E-04 + -1.19335235850E-04 -1.22367598298E-04 -1.25457996676E-04 -1.28632201135E-04 + -1.31890179342E-04 -1.35236069319E-04 -1.38647000758E-04 -1.42171220467E-04 + -1.45756969677E-04 -1.49450918590E-04 -1.53233823744E-04 -1.57124068763E-04 + -1.61084429076E-04 -1.65174664053E-04 -1.69347277271E-04 -1.73639670757E-04 + -1.78044207593E-04 -1.82531571385E-04 -1.87165191471E-04 -1.91897568084E-04 + -1.96763267610E-04 -2.01737413859E-04 -2.06851614362E-04 -2.12075131786E-04 + -2.17455256594E-04 -2.22955856131E-04 -2.28597793888E-04 -2.34398128108E-04 + -2.40310508910E-04 -2.46406817501E-04 -2.52647453651E-04 -2.59033924475E-04 + -2.65599593974E-04 -2.72315468565E-04 -2.79216121604E-04 -2.86281396380E-04 + -2.93523424725E-04 -3.00965224234E-04 -3.08577766409E-04 -3.16384056238E-04 + -3.24401503245E-04 -3.32614441656E-04 -3.41024677671E-04 -3.49669179641E-04 + -3.58509102332E-04 -3.67599874942E-04 -3.76891110179E-04 -3.86438471681E-04 + -3.96219151998E-04 -4.06252866718E-04 -4.16534755944E-04 -4.27077676542E-04 + -4.37889654714E-04 -4.48977341860E-04 -4.60340611899E-04 -4.71992001865E-04 + -4.83943244654E-04 -4.96195849726E-04 -5.08751689295E-04 -5.21632730236E-04 + -5.34837811389E-04 -5.48377189438E-04 -5.62260270715E-04 -5.76491762447E-04 + -5.91084511610E-04 -6.06048060233E-04 -6.21392280555E-04 -6.37118547624E-04 + -6.53238501505E-04 -6.69791714648E-04 -6.86740605043E-04 -7.04147335861E-04 + -7.21927914655E-04 -7.40232750420E-04 -7.58939803736E-04 -7.78203981747E-04 + -7.97838150001E-04 -8.18092569619E-04 -8.38769249366E-04 -8.60022998438E-04 + -8.81801307903E-04 -9.04062445358E-04 -9.27011483019E-04 -9.50465380283E-04 + -9.74496218563E-04 -9.99194199092E-04 -1.02448368293E-03 -1.05038432710E-03 + -1.07702127262E-03 -1.10426990602E-03 -1.13219153095E-03 -1.16089662625E-03 + -1.19025485306E-03 -1.22038669070E-03 -1.25129355850E-03 -1.28294038248E-03 + -1.31546029295E-03 -1.34870265754E-03 -1.38289698184E-03 -1.41786208079E-03 + -1.45378034197E-03 -1.49055631583E-03 -1.52830631968E-03 -1.56696695593E-03 + -1.60666821841E-03 -1.64730786845E-03 -1.68901612630E-03 -1.73176854234E-03 + -1.77561021380E-03 -1.82055183218E-03 -1.86661624277E-03 -1.91389750661E-03 + -1.96231725212E-03 -2.01200214481E-03 -2.06292606530E-03 -2.11514125285E-03 + -2.16868133998E-03 -2.22358058232E-03 -2.27984587233E-03 -2.33757623930E-03 + -2.39672484489E-03 -2.45740797226E-03 -2.51958833499E-03 -2.58338107779E-03 + -2.64875929887E-03 -2.71580778558E-03 -2.78455314335E-03 -2.85501519627E-03 + -2.92729906777E-03 -3.00137715840E-03 -3.07735182380E-03 -3.15523684298E-03 + -3.23510591317E-03 -3.31697619089E-03 -3.40093978674E-03 -3.48701744479E-03 + -3.57526597252E-03 -3.66576363874E-03 -3.75854352642E-03 -3.85366571793E-03 + -3.95120352027E-03 -4.05120466567E-03 -4.15374332770E-03 -4.25885966774E-03 + -4.36665517015E-03 -4.47717432939E-03 -4.59047232184E-03 -4.70666375851E-03 + -4.82577172207E-03 -4.94790474604E-03 -5.07313215414E-03 -5.20151587241E-03 + -5.33315529870E-03 -5.46812399811E-03 -5.60650761886E-03 -5.74838710109E-03 + -5.89386979104E-03 -6.04301220825E-03 -6.19594605351E-03 -6.35274184782E-03 + -6.51349903827E-03 -6.67833228012E-03 -6.84732855879E-03 -7.02059963688E-03 + -7.19825967262E-03 -7.38040766437E-03 -7.56716432274E-03 -7.75864219109E-03 + -7.95497177455E-03 -8.15625794175E-03 -8.36263858867E-03 -8.57423690555E-03 + -8.79119078630E-03 -9.01362883271E-03 -9.24169086389E-03 -9.47552135293E-03 + -9.71526504012E-03 -9.96107368256E-03 -1.02130932848E-02 -1.04714875159E-02 + -1.07364170400E-02 -1.10080432434E-02 -1.12865387586E-02 -1.15720712155E-02 + -1.18648285078E-02 -1.21649815771E-02 -1.24727270701E-02 -1.27882472534E-02 + -1.31117486501E-02 -1.34434231543E-02 -1.37834848794E-02 -1.41321387366E-02 + -1.44896050938E-02 -1.48561064639E-02 -1.52318736669E-02 -1.56171293622E-02 + -1.60121280561E-02 -1.64171035142E-02 -1.68323151455E-02 -1.72580124363E-02 + -1.76944738865E-02 -1.81419522420E-02 -1.86007437266E-02 -1.90711201291E-02 + -1.95533799183E-02 -2.00478213630E-02 -2.05547500831E-02 -2.10744834011E-02 + -2.16073413867E-02 -2.21536549030E-02 -2.27137653150E-02 -2.32880177072E-02 + -2.38767684225E-02 -2.44803834715E-02 -2.50992363991E-02 -2.57337123088E-02 + -2.63841999205E-02 -2.70511089940E-02 -2.77348466641E-02 -2.84358398997E-02 + -2.91545207346E-02 -2.98913347027E-02 -3.06467383721E-02 -3.14211976815E-02 + -3.22151944293E-02 -3.30292147446E-02 -3.38637660051E-02 -3.47193637654E-02 + -3.55965336429E-02 -3.64958193895E-02 -3.74177775272E-02 -3.83629735992E-02 + -3.93319941160E-02 -4.03254360140E-02 -4.13439088893E-02 -4.23880460861E-02 + -4.34584863249E-02 -4.45558902184E-02 -4.56809349538E-02 -4.68343102024E-02 + -4.80167289891E-02 -4.92289149535E-02 -5.04716169727E-02 -5.17455942837E-02 + -5.30516336118E-02 -5.43905339922E-02 -5.57631186726E-02 -5.71702274457E-02 + -5.86127262107E-02 -6.00914946201E-02 -6.16074429295E-02 -6.31614949270E-02 + -6.47546042595E-02 -6.63877433431E-02 -6.80619107965E-02 -6.97781292201E-02 + -7.15374458204E-02 -7.33409337232E-02 -7.51896924944E-02 -7.70848481434E-02 + -7.90275555575E-02 -8.10189941830E-02 -8.30603776368E-02 -8.51529438106E-02 + -8.72979640648E-02 -8.94967400524E-02 -9.17506024492E-02 -9.40609191177E-02 + -9.64290854747E-02 -9.88565347652E-02 -1.01344733936E-01 -1.03895182665E-01 + -1.06509420921E-01 -1.09189022730E-01 -1.11935600606E-01 -1.14750806404E-01 + -1.17636330645E-01 -1.20593904660E-01 -1.23625301304E-01 -1.26732335231E-01 + -1.29916864291E-01 -1.33180791238E-01 -1.36526062292E-01 -1.39954671126E-01 + -1.43468658527E-01 -1.47070112027E-01 -1.50761169343E-01 -1.54544018273E-01 + -1.58420897550E-01 -1.62394098090E-01 -1.66465964428E-01 -1.70638895794E-01 + -1.74915346321E-01 -1.79297827840E-01 -1.83788909452E-01 -1.88391219735E-01 + -1.93107446860E-01 -1.97940341861E-01 -2.02892716861E-01 -2.07967449241E-01 + -2.13167480860E-01 -2.18495819990E-01 -2.23955543062E-01 -2.29549794931E-01 + -2.35281791126E-01 -2.41154818741E-01 -2.47172237098E-01 -2.53337480440E-01 + -2.59654057829E-01 -2.66125555810E-01 -2.72755638063E-01 -2.79548048686E-01 + -2.86506611567E-01 -2.93635233157E-01 -3.00937903352E-01 -3.08418696074E-01 + -3.16081771607E-01 -3.23931377393E-01 -3.31971849101E-01 -3.40207612252E-01 + -3.48643183278E-01 -3.57283170658E-01 -3.66132275963E-01 -3.75195295651E-01 + -3.84477121058E-01 -3.93982740819E-01 -4.03717240205E-01 -4.13685804180E-01 + -4.23893716218E-01 -4.34346360397E-01 -4.45049222268E-01 -4.56007888668E-01 + -4.67228049106E-01 -4.78715496323E-01 -4.90476125743E-01 -5.02515937816E-01 + -5.14841035562E-01 -5.27457627395E-01 -5.40372025275E-01 -5.53590644921E-01 + -5.67120006452E-01 -5.80966732559E-01 -5.95137548662E-01 -6.09639282186E-01 + -6.24478860915E-01 -6.39663312148E-01 -6.55199761436E-01 -6.71095430172E-01 + -6.87357634309E-01 -7.03993781455E-01 -7.21011368867E-01 -7.38417980112E-01 + -7.56221281862E-01 -7.74429020617E-01 -7.93049018026E-01 -8.12089167261E-01 + -8.31557427295E-01 -8.51461818180E-01 -8.71810414911E-01 -8.92611340757E-01 + -9.13872761028E-01 -9.35602874450E-01 -9.57809905974E-01 -9.80502097075E-01 + -1.00368769645E+00 -1.02737494975E+00 -1.05157208780E+00 -1.07628731546E+00 + -1.10152879751E+00 -1.12730464561E+00 -1.15362290282E+00 -1.18049152772E+00 + -1.20791837747E+00 -1.23591118868E+00 -1.26447755864E+00 -1.29362492396E+00 + -1.32336053785E+00 -1.35369144696E+00 -1.38462446535E+00 -1.41616614758E+00 + -1.44832276029E+00 -1.48110025086E+00 -1.51450421583E+00 -1.54853986543E+00 + -1.58321198779E+00 -1.61852490986E+00 -1.65448245600E+00 -1.69108790531E+00 + -1.72834394491E+00 -1.76625262156E+00 -1.80481529091E+00 -1.84403256225E+00 + -1.88390424274E+00 -1.92442927618E+00 -1.96560568011E+00 -2.00743047963E+00 + -2.04989963636E+00 -2.09300797600E+00 -2.13674911054E+00 -2.18111535749E+00 + -2.22609765560E+00 -2.27168547555E+00 -2.31786672843E+00 -2.36462766810E+00 + -2.41195279107E+00 -2.45982473188E+00 -2.50822415320E+00 -2.55712963365E+00 + -2.60651754979E+00 -2.65636195471E+00 -2.70663445304E+00 -2.75730407066E+00 + -2.80833712249E+00 -2.85969707473E+00 -2.91134440527E+00 -2.96323646044E+00 + -3.01532730865E+00 -3.06756759261E+00 -3.11990437889E+00 -3.17228100658E+00 + -3.22463693561E+00 -3.27690759439E+00 -3.32902422944E+00 -3.38091375590E+00 + -3.43249861183E+00 -3.48369661653E+00 -3.53442083353E+00 -3.58457944231E+00 + -3.63407561660E+00 -3.68280741470E+00 -3.73066768168E+00 -3.77754396546E+00 + -3.82331845128E+00 -3.86786791386E+00 -3.91106369305E+00 -3.95277169431E+00 + -3.99285241665E+00 -4.03116101358E+00 -4.06754738801E+00 -4.10185632675E+00 + -4.13392767820E+00 -4.16359657605E+00 -4.19069371598E+00 -4.21504568655E+00 + -4.23647536153E+00 -4.25480235741E+00 -4.26984355938E+00 -4.28141372370E+00 + -4.28932615696E+00 -4.29339348075E+00 -4.29342848271E+00 -4.28924506008E+00 + -4.28065925865E+00 -4.26749040941E+00 -4.24956236733E+00 -4.22670485182E+00 + -4.19875489110E+00 -4.16555837063E+00 -4.12697168235E+00 -4.08286347492E+00 + -4.03311649778E+00 -3.97762953551E+00 -3.91631942368E+00 -3.84912313550E+00 + -3.77599992981E+00 -3.69693354241E+00 -3.61193440699E+00 -3.52104188359E+00 + -3.42432647295E+00 -3.32189199137E+00 -3.21387767666E+00 -3.10046019449E+00 + -2.98185551026E+00 -2.85832058811E+00 -2.73015487806E+00 -2.59770154682E+00 + -2.46134840722E+00 -2.32152849899E+00 -2.17872027017E+00 -2.03344730982E+00 + -1.88627757898E+00 -1.73782208929E+00 -1.58873297706E+00 -1.43970092279E+00 + -1.29145186882E+00 -1.14474298841E+00 -1.00035786655E+00 -8.59100855153E-01 + -7.21790572304E-01 -5.89252523073E-01 -4.62310826500E-01 -3.41779044805E-01 + -2.28450121242E-01 -1.23085446877E-01 -2.64030917871E-02 6.09347467280E-02 + 1.38335005830E-01 2.05287632819E-01 2.61379952251E-01 3.06311371291E-01 + 3.39908234694E-01 3.62138599596E-01 3.73126653336E-01 3.73166442140E-01 + 3.62734515371E-01 3.42501016964E-01 3.13338671604E-01 2.76329016863E-01 + 2.32765121881E-01 1.84149908529E-01 1.32189047090E-01 7.87772377521E-02 + 2.59765060507E-02 -2.40150663594E-02 -6.89059857745E-02 -1.06367437113E-01 + -1.34105205127E-01 -1.49949961784E-01 -1.51970578607E-01 -1.38598521791E-01 + -1.08917128713E-01 -6.16642669764E-02 -7.09766675666E-03 7.30199405679E-04 + -4.81661291289E-05 2.68733033429E-05 1.74444589196E-05 1.65252417524E-05 + 1.48909057402E-05 1.34496330135E-05 1.21052310943E-05 1.08608947198E-05 + 9.71067802441E-06 + 2.40 2.40 + 3P + + + 3 1 Beta L + 853 + -4.02111234670E-08 -4.12290729043E-08 -4.22727918542E-08 -4.33429326752E-08 + -4.44401642400E-08 -4.55651723542E-08 -4.67186601844E-08 -4.79013486980E-08 + -4.91139771139E-08 -5.03573033644E-08 -5.16321045687E-08 -5.29391775192E-08 + -5.42793391790E-08 -5.56534271928E-08 -5.70623004103E-08 -5.85068394231E-08 + -5.99879471151E-08 -6.15065492269E-08 -6.30635949342E-08 -6.46600574413E-08 + -6.62969345892E-08 -6.79752494794E-08 -6.96960511133E-08 -7.14604150481E-08 + -7.32694440686E-08 -7.51242688767E-08 -7.70260487985E-08 -7.89759725083E-08 + -8.09752587719E-08 -8.30251572082E-08 -8.51269490705E-08 -8.72819480473E-08 + -8.94915010829E-08 -9.17569892199E-08 -9.40798284623E-08 -9.64614706601E-08 + -9.89034044173E-08 -1.01407156022E-07 -1.03974290400E-07 -1.06606412095E-07 + -1.09305166267E-07 -1.12072239727E-07 -1.14909361985E-07 -1.17818306335E-07 + -1.20800890963E-07 -1.23858980079E-07 -1.26994485090E-07 -1.30209365789E-07 + -1.33505631580E-07 -1.36885342736E-07 -1.40350611689E-07 -1.43903604342E-07 + -1.47546541433E-07 -1.51281699916E-07 -1.55111414386E-07 -1.59038078540E-07 + -1.63064146670E-07 -1.67192135200E-07 -1.71424624258E-07 -1.75764259286E-07 + -1.80213752699E-07 -1.84775885574E-07 -1.89453509392E-07 -1.94249547822E-07 + -1.99166998543E-07 -2.04208935121E-07 -2.09378508933E-07 -2.14678951128E-07 + -2.20113574657E-07 -2.25685776336E-07 -2.31399038973E-07 -2.37256933542E-07 + -2.43263121419E-07 -2.49421356666E-07 -2.55735488381E-07 -2.62209463102E-07 + -2.68847327273E-07 -2.75653229777E-07 -2.82631424524E-07 -2.89786273112E-07 + -2.97122247555E-07 -3.04643933076E-07 -3.12356030973E-07 -3.20263361559E-07 + -3.28370867172E-07 -3.36683615268E-07 -3.45206801585E-07 -3.53945753392E-07 + -3.62905932817E-07 -3.72092940266E-07 -3.81512517917E-07 -3.91170553312E-07 + -4.01073083038E-07 -4.11226296499E-07 -4.21636539784E-07 -4.32310319634E-07 + -4.43254307508E-07 -4.54475343756E-07 -4.65980441891E-07 -4.77776792973E-07 + -4.89871770107E-07 -5.02272933046E-07 -5.14988032921E-07 -5.28025017084E-07 + -5.41392034075E-07 -5.55097438714E-07 -5.69149797325E-07 -5.83557893091E-07 + -5.98330731541E-07 -6.13477546179E-07 -6.29007804258E-07 -6.44931212695E-07 + -6.61257724139E-07 -6.77997543191E-07 -6.95161132783E-07 -7.12759220718E-07 + -7.30802806375E-07 -7.49303167580E-07 -7.68271867664E-07 -7.87720762681E-07 + -8.07662008824E-07 -8.28108070022E-07 -8.49071725728E-07 -8.70566078911E-07 + -8.92604564240E-07 -9.15200956488E-07 -9.38369379136E-07 -9.62124313202E-07 + -9.86480606293E-07 -1.01145348189E-06 -1.03705854885E-06 -1.06331181117E-06 + -1.09022967800E-06 -1.11782897388E-06 -1.14612694927E-06 -1.17514129133E-06 + -1.20489013497E-06 -1.23539207418E-06 -1.26666617367E-06 -1.29873198077E-06 + -1.33160953765E-06 -1.36531939387E-06 -1.39988261917E-06 -1.43532081669E-06 + -1.47165613648E-06 -1.50741606664E-06 -1.54563883127E-06 -1.58478367147E-06 + -1.62495878312E-06 -1.66611737176E-06 -1.70834346133E-06 -1.75161618070E-06 + -1.79599248886E-06 -1.84150416864E-06 -1.88815705291E-06 -1.93599674305E-06 + -1.98503748465E-06 -2.03532112920E-06 -2.08690628714E-06 -2.13976125579E-06 + -2.19396590988E-06 -2.24955061833E-06 -2.30650723783E-06 -2.36500446604E-06 + -2.42483204202E-06 -2.48630503942E-06 -2.54927486592E-06 -2.61381131553E-06 + -2.68008604926E-06 -2.74788108884E-06 -2.81756087162E-06 -2.88888231864E-06 + -2.96204660182E-06 -3.03712801700E-06 -3.11397845596E-06 -3.19288317033E-06 + -3.27374864619E-06 -3.35662723584E-06 -3.44169881418E-06 -3.52879850686E-06 + -3.61822779055E-06 -3.70982038016E-06 -3.80377457880E-06 -3.90016088499E-06 + -3.99884572658E-06 -4.10018181537E-06 -4.20398691474E-06 -4.31043487788E-06 + -4.41963138395E-06 -4.53150634642E-06 -4.64629295954E-06 -4.76395118451E-06 + -4.88456303304E-06 -5.00829172366E-06 -5.13507399314E-06 -5.26514534720E-06 + -5.39846102790E-06 -5.53511648190E-06 -5.67536957411E-06 -5.81898317504E-06 + -5.96639263911E-06 -6.11744207478E-06 -6.27234027928E-06 -6.43121371514E-06 + -6.59397050694E-06 -6.76100249720E-06 -6.93218045069E-06 -7.10768799790E-06 + -7.28770297499E-06 -7.47216672686E-06 -7.66140347093E-06 -7.85537589884E-06 + -8.05424755266E-06 -8.25825071168E-06 -8.46727156423E-06 -8.68171228393E-06 + -8.90152273771E-06 -9.12687299647E-06 -9.35800408107E-06 -9.59488722728E-06 + -9.83785680166E-06 -1.00869234976E-05 -1.03423075381E-05 -1.06042049410E-05 + -1.08726211766E-05 -1.11479603688E-05 -1.14301892800E-05 -1.17195675599E-05 + -1.20163250896E-05 -1.23204982771E-05 -1.26324815499E-05 -1.29522955411E-05 + -1.32801898313E-05 -1.36164918371E-05 -1.39611491120E-05 -1.43146693489E-05 + -1.46770603432E-05 -1.50486356501E-05 -1.54296877405E-05 -1.58202708447E-05 + -1.62208413440E-05 -1.66314916147E-05 -1.70525574435E-05 -1.74842870277E-05 + -1.79269262824E-05 -1.83808194024E-05 -1.88461379081E-05 -1.93232683516E-05 + -1.98124876805E-05 -2.03140693273E-05 -2.08283685233E-05 -2.13556655047E-05 + -2.18963231030E-05 -2.24506920776E-05 -2.30190553351E-05 -2.36018330600E-05 + -2.41993422386E-05 -2.48119905559E-05 -2.54401510991E-05 -2.60841915839E-05 + -2.67445835913E-05 -2.74216345801E-05 -2.81158544176E-05 -2.88276793973E-05 + -2.95574569257E-05 -3.03057521274E-05 -3.10729878276E-05 -3.18596403692E-05 + -3.26662060300E-05 -3.34931733097E-05 -3.43411218703E-05 -3.52105028113E-05 + -3.61018904076E-05 -3.70158490900E-05 -3.79529466484E-05 -3.89137758272E-05 + -3.98989118850E-05 -4.09089762234E-05 -4.19446538795E-05 -4.30065084579E-05 + -4.40952616697E-05 -4.52115585883E-05 -4.63561361806E-05 -4.75296749231E-05 + -4.87329313450E-05 -4.99666510859E-05 -5.12316022643E-05 -5.25285559690E-05 + -5.38583635038E-05 -5.52218175596E-05 -5.66198203806E-05 -5.80531730374E-05 + -5.95228592967E-05 -6.10294405648E-05 -6.25773665572E-05 -6.41510897782E-05 + -6.57917629792E-05 -6.74480097289E-05 -6.91494380715E-05 -7.09108661068E-05 + -7.26969509449E-05 -7.45484356417E-05 -7.64249619227E-05 -7.83688051804E-05 + -8.03427589482E-05 -8.23881102505E-05 -8.44605684040E-05 -8.66099662742E-05 + -8.87953927101E-05 -9.10478235163E-05 -9.33518322656E-05 -9.57130057559E-05 + -9.81378561578E-05 -1.00619909195E-04 -1.03170045767E-04 -1.05781358240E-04 + -1.08457864411E-04 -1.11203668863E-04 -1.14021981748E-04 -1.16906154086E-04 + -1.19861574232E-04 -1.22904056009E-04 -1.26008827480E-04 -1.29199090361E-04 + -1.32474350566E-04 -1.35826619744E-04 -1.39259174178E-04 -1.42793213789E-04 + -1.46408601600E-04 -1.50093928437E-04 -1.53925646883E-04 -1.57805675616E-04 + -1.61797767471E-04 -1.65891260416E-04 -1.70104065150E-04 -1.74401540404E-04 + -1.78824663875E-04 -1.83334859948E-04 -1.87997767890E-04 -1.92738773375E-04 + -1.97622646599E-04 -2.02633415121E-04 -2.07750595574E-04 -2.13019906316E-04 + -2.18409526457E-04 -2.23931297561E-04 -2.29615976060E-04 -2.35417421171E-04 + -2.41376813795E-04 -2.47490775916E-04 -2.53754914266E-04 -2.60178164498E-04 + -2.66765653800E-04 -2.73514250436E-04 -2.80444325544E-04 -2.87546309003E-04 + -2.94814289793E-04 -3.02288692978E-04 -3.09935191021E-04 -3.17776469817E-04 + -3.25832244920E-04 -3.34075984012E-04 -3.42527203456E-04 -3.51204759711E-04 + -3.60096338029E-04 -3.69205133479E-04 -3.78559622282E-04 -3.88135482282E-04 + -3.97969991415E-04 -4.08030700137E-04 -4.18375274897E-04 -4.28954421825E-04 + -4.39817571230E-04 -4.50953216268E-04 -4.62368331623E-04 -4.74069783311E-04 + -4.86071363795E-04 -4.98380080713E-04 -5.10993336727E-04 -5.23929241684E-04 + -5.37190635025E-04 -5.50792276585E-04 -5.64730990530E-04 -5.79032088846E-04 + -5.93686348382E-04 -6.08716914994E-04 -6.24123013658E-04 -6.39927131093E-04 + -6.56114174692E-04 -6.72766317205E-04 -6.89733207785E-04 -7.07222800704E-04 + -7.25129592546E-04 -7.43484231669E-04 -7.62302441991E-04 -7.81588282416E-04 + -8.01423904684E-04 -8.21637786671E-04 -8.42484009438E-04 -8.63794240547E-04 + -8.85642875265E-04 -9.08120475188E-04 -9.31045988456E-04 -9.54647225568E-04 + -9.78789352278E-04 -1.00361147770E-03 -1.02895370470E-03 -1.05506444904E-03 + -1.08173082233E-03 -1.10912216594E-03 -1.13717967277E-03 -1.16601481137E-03 + -1.19547686157E-03 -1.22577932225E-03 -1.25678887508E-03 -1.28860090769E-03 + -1.32123145888E-03 -1.35466410584E-03 -1.38895518670E-03 -1.42411881291E-03 + -1.46015986293E-03 -1.49713755105E-03 -1.53502277005E-03 -1.57388913449E-03 + -1.61369812384E-03 -1.65458581331E-03 -1.69645234194E-03 -1.73938053053E-03 + -1.78342072834E-03 -1.82856687362E-03 -1.87484113862E-03 -1.92231560596E-03 + -1.97095422389E-03 -2.02085790693E-03 -2.07200985017E-03 -2.12444869378E-03 + -2.17821377627E-03 -2.23338024501E-03 -2.28987535329E-03 -2.34787034576E-03 + -2.40727195557E-03 -2.46821147755E-03 -2.53069461282E-03 -2.59473622961E-03 + -2.66042619555E-03 -2.72775666813E-03 -2.79680443076E-03 -2.86758831337E-03 + -2.94017739531E-03 -3.01458729677E-03 -3.09089853243E-03 -3.16911980740E-03 + -3.24934223087E-03 -3.33157864970E-03 -3.41590745707E-03 -3.50235403374E-03 + -3.59100908837E-03 -3.68189689032E-03 -3.77508121072E-03 -3.87062351277E-03 + -3.96859321622E-03 -4.06903428219E-03 -4.17202092964E-03 -4.27760577506E-03 + -4.38586846068E-03 -4.49687433554E-03 -4.61067974019E-03 -4.72736869852E-03 + -4.84701392618E-03 -4.96967594801E-03 -5.09545524031E-03 -5.22440613949E-03 + -5.35662720946E-03 -5.49217967281E-03 -5.63117951747E-03 -5.77368777184E-03 + -5.91979595359E-03 -6.06960870362E-03 -6.22321224606E-03 -6.38068721461E-03 + -6.54216580117E-03 -6.70771588813E-03 -6.87745399811E-03 -7.05149407279E-03 + -7.22993117998E-03 -7.41287925955E-03 -7.60046145273E-03 -7.79277681819E-03 + -7.98997450331E-03 -8.19214053043E-03 -8.39943125046E-03 -8.61196111384E-03 + -8.82986951034E-03 -9.05328238856E-03 -9.28234943646E-03 -9.51720807570E-03 + -9.75800651794E-03 -1.00048942550E-02 -1.02580234008E-02 -1.05175521143E-02 + -1.07836488161E-02 -1.10564674796E-02 -1.13361850287E-02 -1.16229777458E-02 + -1.19170160267E-02 -1.22184950074E-02 -1.25275865918E-02 -1.28445007927E-02 + -1.31694184141E-02 -1.35025523544E-02 -1.38441085016E-02 -1.41942941903E-02 + -1.45533326391E-02 -1.49214446504E-02 -1.52988597166E-02 -1.56858135514E-02 + -1.60825434874E-02 -1.64893008908E-02 -1.69063335239E-02 -1.73339052029E-02 + -1.77722798377E-02 -1.82217266911E-02 -1.86825323517E-02 -1.91549748597E-02 + -1.96393518983E-02 -2.01359659006E-02 -2.06451209527E-02 -2.11671348678E-02 + -2.17023343226E-02 -2.22510463074E-02 -2.28136158701E-02 -2.33903875219E-02 + -2.39817253560E-02 -2.45879878962E-02 -2.52095587552E-02 -2.58468172350E-02 + -2.65001618486E-02 -2.71699959007E-02 -2.78567346765E-02 -2.85608025357E-02 + -2.92826370670E-02 -3.00226826229E-02 -3.07814011236E-02 -3.15592569891E-02 + -3.23567341711E-02 -3.31743258239E-02 -3.40125369454E-02 -3.48718837736E-02 + -3.57529008435E-02 -3.66561290324E-02 -3.75821260603E-02 -3.85314667201E-02 + -3.95047326056E-02 -4.05025268782E-02 -4.15254635669E-02 -4.25741726772E-02 + -4.36493025709E-02 -4.47515128413E-02 -4.58814827708E-02 -4.70399097448E-02 + -4.82275039937E-02 -4.94449958221E-02 -5.06931364959E-02 -5.19726895059E-02 + -5.32844424461E-02 -5.46292008180E-02 -5.60077879498E-02 -5.74210519064E-02 + -5.88698565018E-02 -6.03550914628E-02 -6.18776651711E-02 -6.34385091420E-02 + -6.50385797730E-02 -6.66788533351E-02 -6.83603340509E-02 -7.00840467232E-02 + -7.18510454993E-02 -7.36624058531E-02 -7.55192336141E-02 -7.74226590595E-02 + -7.93738412636E-02 -8.13739661388E-02 -8.34242509707E-02 -8.55259399922E-02 + -8.76803097103E-02 -8.98886664218E-02 -9.21523481092E-02 -9.44727261132E-02 + -9.68512041188E-02 -9.92892204813E-02 -1.01788246610E-01 -1.04349792098E-01 + -1.06975400064E-01 -1.09666652710E-01 -1.12425168793E-01 -1.15252607700E-01 + -1.18150666433E-01 -1.21121083675E-01 -1.24165639867E-01 -1.27286156921E-01 + -1.30484500822E-01 -1.33762581391E-01 -1.37122354126E-01 -1.40565820105E-01 + -1.44095028628E-01 -1.47712076202E-01 -1.51419108897E-01 -1.55218324097E-01 + -1.59111968996E-01 -1.63102344528E-01 -1.67191804475E-01 -1.71382758089E-01 + -1.75677669215E-01 -1.80079060508E-01 -1.84589510575E-01 -1.89211659277E-01 + -1.93948206137E-01 -1.98801911920E-01 -2.03775601521E-01 -2.08872162983E-01 + -2.14094550043E-01 -2.19445783827E-01 -2.24928951886E-01 -2.30547212601E-01 + -2.36303793810E-01 -2.42201995356E-01 -2.48245190663E-01 -2.54436826823E-01 + -2.60780427235E-01 -2.67279591885E-01 -2.73937999622E-01 -2.80759408439E-01 + -2.87747657420E-01 -2.94906668579E-01 -3.02240446289E-01 -3.09753081184E-01 + -3.17448748962E-01 -3.25331713714E-01 -3.33406327334E-01 -3.41677032675E-01 + -3.50148362909E-01 -3.58824944047E-01 -3.67711495925E-01 -3.76812832109E-01 + -3.86133863158E-01 -3.95679595822E-01 -4.05455134428E-01 -4.15465683236E-01 + -4.25716545175E-01 -4.36213124023E-01 -4.46960925801E-01 -4.57965557230E-01 + -4.69232728978E-01 -4.80768254350E-01 -4.92578050492E-01 -5.04668138916E-01 + -5.17044644813E-01 -5.29713798657E-01 -5.42681934567E-01 -5.55955491202E-01 + -5.69541011424E-01 -5.83445141037E-01 -5.97674629172E-01 -6.12236326661E-01 + -6.27137185128E-01 -6.42384256558E-01 -6.57984690142E-01 -6.73945732442E-01 + -6.90274723920E-01 -7.06979097298E-01 -7.24066375111E-01 -7.41544165927E-01 + -7.59420162524E-01 -7.77702136626E-01 -7.96397935968E-01 -8.15515479574E-01 + -8.35062752533E-01 -8.55047801217E-01 -8.75478726678E-01 -8.96363678685E-01 + -9.17710848925E-01 -9.39528462474E-01 -9.61824770880E-01 -9.84608042002E-01 + -1.00788655098E+00 -1.03166856986E+00 -1.05596235592E+00 -1.08077614015E+00 + -1.10611811358E+00 -1.13199641384E+00 -1.15841911009E+00 -1.18539418640E+00 + -1.21292952555E+00 -1.24103288957E+00 -1.26971190068E+00 -1.29897402042E+00 + -1.32882652637E+00 -1.35927648942E+00 -1.39033074751E+00 -1.42199587854E+00 + -1.45427817224E+00 -1.48718359854E+00 -1.52071777607E+00 -1.55488593673E+00 + -1.58969288955E+00 -1.62514298208E+00 -1.66124005850E+00 -1.69798741706E+00 + -1.73538776343E+00 -1.77344316213E+00 -1.81215498573E+00 -1.85152385984E+00 + -1.89154960675E+00 -1.93223118469E+00 -1.97356662456E+00 -2.01555296378E+00 + -2.05818617518E+00 -2.10146109463E+00 -2.14537134274E+00 -2.18990924455E+00 + -2.23506574488E+00 -2.28083031887E+00 -2.32719088047E+00 -2.37413368471E+00 + -2.42164322734E+00 -2.46970214012E+00 -2.51829108070E+00 -2.56738862053E+00 + -2.61697112617E+00 -2.66701263817E+00 -2.71748474555E+00 -2.76835645533E+00 + -2.81959406002E+00 -2.87116099962E+00 -2.92301772156E+00 -2.97512153725E+00 + -3.02742647510E+00 -3.07988313241E+00 -3.13243852455E+00 -3.18503593271E+00 + -3.23761475213E+00 -3.29011033859E+00 -3.34245385785E+00 -3.39457213498E+00 + -3.44638750810E+00 -3.49781768572E+00 -3.54877560892E+00 -3.59916932187E+00 + -3.64890184931E+00 -3.69787108539E+00 -3.74596969508E+00 -3.79308502855E+00 + -3.83909905464E+00 -3.88388831133E+00 -3.92732388014E+00 -3.96927138489E+00 + -4.00959101815E+00 -4.04813760060E+00 -4.08476067408E+00 -4.11930463455E+00 + -4.15160890812E+00 -4.18150817284E+00 -4.20883263391E+00 -4.23340835295E+00 + -4.25505763862E+00 -4.27359950279E+00 -4.28885018524E+00 -4.30062375472E+00 + -4.30873278736E+00 -4.31298913062E+00 -4.31320475377E+00 -4.30919269157E+00 + -4.30076808337E+00 -4.28774931048E+00 -4.26995923628E+00 -4.24722654828E+00 + -4.21938720522E+00 -4.18628598816E+00 -4.14777815392E+00 -4.10373118969E+00 + -4.05402666268E+00 -3.99856216085E+00 -3.93725331596E+00 -3.87003589887E+00 + -3.79686797659E+00 -3.71773211425E+00 -3.63263760741E+00 -3.54162272331E+00 + -3.44475692853E+00 -3.34214307876E+00 -3.23391954014E+00 -3.12026221227E+00 + -3.00138641693E+00 -2.87754861524E+00 -2.74904791287E+00 -2.61622730926E+00 + -2.47947464574E+00 -2.33922320444E+00 -2.19595190733E+00 -2.05018506587E+00 + -1.90249162740E+00 -1.75348386765E+00 -1.60381547680E+00 -1.45417898809E+00 + -1.30530250196E+00 -1.15794565799E+00 -1.01289481457E+00 -8.70957398579E-01 + -7.32955394142E-01 -5.99717947638E-01 -4.72073072791E-01 -3.50838451968E-01 + -2.36811339121E-01 -1.30757585020E-01 -3.33998193917E-02 5.45951572876E-02 + 1.32629699295E-01 2.00189262725E-01 2.56856851183E-01 3.02327806575E-01 + 3.36424755936E-01 3.59112483610E-01 3.70512450868E-01 3.70916629459E-01 + 3.60800252110E-01 3.40833009035E-01 3.11888135456E-01 2.75048737614E-01 + 2.31610593685E-01 1.83080540195E-01 1.31169409498E-01 7.77783221394E-02 + 2.49769526494E-02 -2.50278205732E-02 -6.99347049127E-02 -1.07404309679E-01 + -1.35131391414E-01 -1.50935584259E-01 -1.52875307357E-01 -1.39372862231E-01 + -1.09505266660E-01 -6.20024348014E-02 -7.16936639063E-03 6.97680833833E-04 + -8.25448946923E-05 -5.37992539377E-06 -1.31597718267E-05 -1.24621739733E-05 + -1.25539038267E-05 -1.25204667245E-05 -1.24564694229E-05 -1.23566441808E-05 + -1.22248097822E-05 + 2.40 2.40 + 3P + + + 3 Number of nonzero Dij + 1 1 6.34407926354E-01 + 2 2 2.41313598459E-01 + 3 3 2.40024713855E-01 + + + + + +3S 0 2.00 Wavefunction + 1.13153964440E-05 1.14577266129E-05 1.16018470750E-05 1.17477803495E-05 + 1.18955492388E-05 1.20451768320E-05 1.21966865087E-05 1.23501019427E-05 + 1.25054471055E-05 1.26627462701E-05 1.28220240147E-05 1.29833052268E-05 + 1.31466151071E-05 1.33119791729E-05 1.34794232628E-05 1.36489735403E-05 + 1.38206564979E-05 1.39944989614E-05 1.41705280942E-05 1.43487714012E-05 + 1.45292567331E-05 1.47120122913E-05 1.48970666317E-05 1.50844486694E-05 + 1.52741876832E-05 1.54663133203E-05 1.56608556007E-05 1.58578449221E-05 + 1.60573120643E-05 1.62592881947E-05 1.64638048724E-05 1.66708940536E-05 + 1.68805880963E-05 1.70929197658E-05 1.73079222393E-05 1.75256291114E-05 + 1.77460743992E-05 1.79692925478E-05 1.81953184356E-05 1.84241873795E-05 + 1.86559351408E-05 1.88905979306E-05 1.91282124154E-05 1.93688157231E-05 + 1.96124454483E-05 1.98591396589E-05 2.01089369012E-05 2.03618762067E-05 + 2.06179970976E-05 2.08773395934E-05 2.11399442169E-05 2.14058520007E-05 + 2.16751044935E-05 2.19477437664E-05 2.22238124201E-05 2.25033535908E-05 + 2.27864109574E-05 2.30730287483E-05 2.33632517482E-05 2.36571253050E-05 + 2.39546953371E-05 2.42560083405E-05 2.45611113961E-05 2.48700521767E-05 + 2.51828789552E-05 2.54996406115E-05 2.58203866401E-05 2.61451671585E-05 + 2.64740329142E-05 2.68070352934E-05 2.71442263283E-05 2.74856587059E-05 + 2.78313857758E-05 2.81814615584E-05 2.85359407541E-05 2.88948787510E-05 + 2.92583316339E-05 2.96263561933E-05 2.99990099337E-05 3.03763510833E-05 + 3.07584386024E-05 3.11453321931E-05 3.15370923084E-05 3.19337801618E-05 + 3.23354577367E-05 3.27421877960E-05 3.31540338925E-05 3.35710603779E-05 + 3.39933324137E-05 3.44209159809E-05 3.48538778904E-05 3.52922857936E-05 + 3.57362081928E-05 3.61857144519E-05 3.66408748073E-05 3.71017603791E-05 + 3.75684431816E-05 3.80409961353E-05 3.85194930777E-05 3.90040087751E-05 + 3.94946189343E-05 3.99914002144E-05 4.04944302387E-05 4.10037876069E-05 + 4.15195519075E-05 4.20418037298E-05 4.25706246772E-05 4.31060973792E-05 + 4.36483055049E-05 4.41973337756E-05 4.47532679785E-05 4.53161949798E-05 + 4.58862027383E-05 4.64633803193E-05 4.70478179082E-05 4.76396068252E-05 + 4.82388395387E-05 4.88456096806E-05 4.94600120603E-05 5.00821426800E-05 + 5.07120987492E-05 5.13499787005E-05 5.19958822043E-05 5.26499101849E-05 + 5.33121648361E-05 5.39827496371E-05 5.46617693686E-05 5.53493301297E-05 + 5.60455393536E-05 5.67505058251E-05 5.74643396973E-05 5.81871525091E-05 + 5.89190572021E-05 5.96601681386E-05 6.04106011195E-05 6.11704734025E-05 + 6.19399037198E-05 6.27190122976E-05 6.35079208740E-05 6.43067527185E-05 + 6.51156326512E-05 6.59346870624E-05 6.67640439320E-05 6.76038328499E-05 + 6.84541850360E-05 6.93152333606E-05 7.01871123657E-05 7.10699582854E-05 + 7.19639090676E-05 7.28691043952E-05 7.37856857084E-05 7.47137962263E-05 + 7.56535809698E-05 7.66051867836E-05 7.75687623599E-05 7.85444582611E-05 + 7.95324269434E-05 8.05328227809E-05 8.15458020895E-05 8.25715231512E-05 + 8.36101462392E-05 8.46618336427E-05 8.57267496923E-05 8.68050607856E-05 + 8.78969354134E-05 8.90025441860E-05 9.01220598596E-05 9.12556573635E-05 + 9.24035138277E-05 9.35658086098E-05 9.47427233241E-05 9.59344418689E-05 + 9.71411504562E-05 9.83630376399E-05 9.96002943462E-05 1.00853113903E-04 + 1.02121692068E-04 1.03406227066E-04 1.04706919610E-04 1.06023972942E-04 + 1.07357592857E-04 1.08707987742E-04 1.10075368603E-04 1.11459949101E-04 + 1.12861945585E-04 1.14281577125E-04 1.15719065548E-04 1.17174635469E-04 + 1.18648514331E-04 1.20140932436E-04 1.21652122984E-04 1.23182322108E-04 + 1.24731768913E-04 1.26300705511E-04 1.27889377057E-04 1.29498031793E-04 + 1.31126921083E-04 1.32776299453E-04 1.34446424630E-04 1.36137557584E-04 + 1.37849962568E-04 1.39583907158E-04 1.41339662296E-04 1.43117502335E-04 + 1.44917705075E-04 1.46740551814E-04 1.48586327387E-04 1.50455320213E-04 + 1.52347822339E-04 1.54264129485E-04 1.56204541092E-04 1.58169360368E-04 + 1.60158894335E-04 1.62173453876E-04 1.64213353788E-04 1.66278912825E-04 + 1.68370453753E-04 1.70488303396E-04 1.72632792693E-04 1.74804256743E-04 + 1.77003034863E-04 1.79229470636E-04 1.81483911970E-04 1.83766711149E-04 + 1.86078224887E-04 1.88418814388E-04 1.90788845399E-04 1.93188688268E-04 + 1.95618718004E-04 1.98079314331E-04 2.00570861751E-04 2.03093749606E-04 + 2.05648372132E-04 2.08235128529E-04 2.10854423014E-04 2.13506664896E-04 + 2.16192268627E-04 2.18911653878E-04 2.21665245597E-04 2.24453474081E-04 + 2.27276775038E-04 2.30135589658E-04 2.33030364685E-04 2.35961552480E-04 + 2.38929611096E-04 2.41935004351E-04 2.44978201897E-04 2.48059679295E-04 + 2.51179918090E-04 2.54339405886E-04 2.57538636421E-04 2.60778109646E-04 + 2.64058331803E-04 2.67379815501E-04 2.70743079803E-04 2.74148650300E-04 + 2.77597059197E-04 2.81088845397E-04 2.84624554580E-04 2.88204739298E-04 + 2.91829959050E-04 2.95500780380E-04 2.99217776957E-04 3.02981529672E-04 + 3.06792626724E-04 3.10651663713E-04 3.14559243735E-04 3.18515977475E-04 + 3.22522483303E-04 3.26579387370E-04 3.30687323708E-04 3.34846934326E-04 + 3.39058869314E-04 3.43323786944E-04 3.47642353769E-04 3.52015244734E-04 + 3.56443143276E-04 3.60926741435E-04 3.65466739959E-04 3.70063848419E-04 + 3.74718785311E-04 3.79432278179E-04 3.84205063723E-04 3.89037887912E-04 + 3.93931506110E-04 3.98886683185E-04 4.03904193633E-04 4.08984821699E-04 + 4.14129361500E-04 4.19338617151E-04 4.24613402885E-04 4.29954543189E-04 + 4.35362872927E-04 4.40839237473E-04 4.46384492844E-04 4.51999505834E-04 + 4.57685154149E-04 4.63442326546E-04 4.69271922971E-04 4.75174854699E-04 + 4.81152044483E-04 4.87204426691E-04 4.93332947457E-04 4.99538564830E-04 + 5.05822248919E-04 5.12184982053E-04 5.18627758930E-04 5.25151586774E-04 + 5.31757485493E-04 5.38446487841E-04 5.45219639579E-04 5.52077999637E-04 + 5.59022640284E-04 5.66054647294E-04 5.73175120119E-04 5.80385172058E-04 + 5.87685930436E-04 5.95078536778E-04 6.02564146991E-04 6.10143931542E-04 + 6.17819075647E-04 6.25590779454E-04 6.33460258233E-04 6.41428742567E-04 + 6.49497478545E-04 6.57667727958E-04 6.65940768501E-04 6.74317893967E-04 + 6.82800414460E-04 6.91389656592E-04 7.00086963701E-04 7.08893696053E-04 + 7.17811231066E-04 7.26840963520E-04 7.35984305780E-04 7.45242688019E-04 + 7.54617558441E-04 7.64110383514E-04 7.73722648196E-04 7.83455856174E-04 + 7.93311530098E-04 8.03291211825E-04 8.13396462658E-04 8.23628863597E-04 + 8.33990015588E-04 8.44481539772E-04 8.55105077748E-04 8.65862291828E-04 + 8.76754865301E-04 8.87784502702E-04 8.98952930077E-04 9.10261895260E-04 + 9.21713168151E-04 9.33308540993E-04 9.45049828659E-04 9.56938868938E-04 + 9.68977522828E-04 9.81167674830E-04 9.93511233251E-04 1.00601013050E-03 + 1.01866632340E-03 1.03148179351E-03 1.04445854741E-03 1.05759861706E-03 + 1.07090406008E-03 1.08437696012E-03 1.09801942716E-03 1.11183359787E-03 + 1.12582163593E-03 1.13998573240E-03 1.15432810604E-03 1.16885100369E-03 + 1.18355670060E-03 1.19844750085E-03 1.21352573765E-03 1.22879377376E-03 + 1.24425400184E-03 1.25990884487E-03 1.27576075651E-03 1.29181222149E-03 + 1.30806575602E-03 1.32452390822E-03 1.34118925848E-03 1.35806441991E-03 + 1.37515203874E-03 1.39245479477E-03 1.40997540180E-03 1.42771660805E-03 + 1.44568119659E-03 1.46387198586E-03 1.48229183004E-03 1.50094361958E-03 + 1.51983028162E-03 1.53895478051E-03 1.55832011825E-03 1.57792933501E-03 + 1.59778550960E-03 1.61789176000E-03 1.63825124384E-03 1.65886715893E-03 + 1.67974274380E-03 1.70088127820E-03 1.72228608363E-03 1.74396052395E-03 + 1.76590800584E-03 1.78813197945E-03 1.81063593890E-03 1.83342342289E-03 + 1.85649801528E-03 1.87986334568E-03 1.90352309005E-03 1.92748097131E-03 + 1.95174075997E-03 1.97630627472E-03 2.00118138312E-03 2.02637000221E-03 + 2.05187609916E-03 2.07770369197E-03 2.10385685009E-03 2.13033969516E-03 + 2.15715640167E-03 2.18431119765E-03 2.21180836544E-03 2.23965224235E-03 + 2.26784722144E-03 2.29639775223E-03 2.32530834150E-03 2.35458355403E-03 + 2.38422801338E-03 2.41424640268E-03 2.44464346545E-03 2.47542400641E-03 + 2.50659289230E-03 2.53815505271E-03 2.57011548099E-03 2.60247923502E-03 + 2.63525143819E-03 2.66843728024E-03 2.70204201817E-03 2.73607097716E-03 + 2.77052955155E-03 2.80542320572E-03 2.84075747513E-03 2.87653796723E-03 + 2.91277036253E-03 2.94946041555E-03 2.98661395589E-03 3.02423688925E-03 + 3.06233519854E-03 3.10091494489E-03 3.13998226882E-03 3.17954339131E-03 + 3.21960461494E-03 3.26017232508E-03 3.30125299103E-03 3.34285316723E-03 + 3.38497949445E-03 3.42763870106E-03 3.47083760427E-03 3.51458311140E-03 + 3.55888222121E-03 3.60374202517E-03 3.64916970886E-03 3.69517255331E-03 + 3.74175793640E-03 3.78893333430E-03 3.83670632286E-03 3.88508457916E-03 + 3.93407588293E-03 3.98368811812E-03 4.03392927446E-03 4.08480744900E-03 + 4.13633084777E-03 4.18850778737E-03 4.24134669670E-03 4.29485611861E-03 + 4.34904471167E-03 4.40392125195E-03 4.45949463479E-03 4.51577387665E-03 + 4.57276811700E-03 4.63048662023E-03 4.68893877759E-03 4.74813410918E-03 + 4.80808226601E-03 4.86879303202E-03 4.93027632623E-03 4.99254220488E-03 + 5.05560086364E-03 5.11946263986E-03 5.18413801486E-03 5.24963761624E-03 + 5.31597222034E-03 5.38315275461E-03 5.45119030018E-03 5.52009609432E-03 + 5.58988153312E-03 5.66055817414E-03 5.73213773908E-03 5.80463211661E-03 + 5.87805336522E-03 5.95241371607E-03 6.02772557603E-03 6.10400153069E-03 + 6.18125434744E-03 6.25949697871E-03 6.33874256521E-03 6.41900443922E-03 + 6.50029612806E-03 6.58263135754E-03 6.66602405557E-03 6.75048835579E-03 + 6.83603860134E-03 6.92268934867E-03 7.01045537154E-03 7.09935166498E-03 + 7.18939344946E-03 7.28059617513E-03 7.37297552613E-03 7.46654742508E-03 + 7.56132803760E-03 7.65733377704E-03 7.75458130923E-03 7.85308755745E-03 + 7.95286970745E-03 8.05394521265E-03 8.15633179948E-03 8.26004747277E-03 + 8.36511052147E-03 8.47153952431E-03 8.57935335574E-03 8.68857119205E-03 + 8.79921251753E-03 8.91129713094E-03 9.02484515205E-03 9.13987702845E-03 + 9.25641354247E-03 9.37447581831E-03 9.49408532947E-03 9.61526390620E-03 + 9.73803374336E-03 9.86241740833E-03 9.98843784930E-03 1.01161184037E-02 + 1.02454828068E-02 1.03765552009E-02 1.05093601444E-02 1.06439226210E-02 + 1.07802680501E-02 1.09184222963E-02 1.10584116798E-02 1.12002629874E-02 + 1.13440034832E-02 1.14896609199E-02 1.16372635505E-02 1.17868401401E-02 + 1.19384199788E-02 1.20920328938E-02 1.22477092627E-02 1.24054800273E-02 + 1.25653767072E-02 1.27274314144E-02 1.28916768677E-02 1.30581464087E-02 + 1.32268740168E-02 1.33978943258E-02 1.35712426405E-02 1.37469549544E-02 + 1.39250679667E-02 1.41056191014E-02 1.42886465259E-02 1.44741891707E-02 + 1.46622867494E-02 1.48529797799E-02 1.50463096054E-02 1.52423184167E-02 + 1.54410492755E-02 1.56425461375E-02 1.58468538770E-02 1.60540183121E-02 + 1.62640862307E-02 1.64771054171E-02 1.66931246800E-02 1.69121938809E-02 + 1.71343639636E-02 1.73596869850E-02 1.75882161462E-02 1.78200058250E-02 + 1.80551116099E-02 1.82935903343E-02 1.85355001127E-02 1.87809003774E-02 + 1.90298519167E-02 1.92824169146E-02 1.95386589914E-02 1.97986432456E-02 + 2.00624362980E-02 2.03301063356E-02 2.06017231591E-02 2.08773582300E-02 + 2.11570847205E-02 2.14409775643E-02 2.17291135100E-02 2.20215711751E-02 + 2.23184311023E-02 2.26197758184E-02 2.29256898936E-02 2.32362600042E-02 + 2.35515749963E-02 2.38717259523E-02 2.41968062595E-02 2.45269116804E-02 + 2.48621404258E-02 2.52025932303E-02 2.55483734300E-02 2.58995870430E-02 + 2.62563428525E-02 2.66187524921E-02 2.69869305347E-02 2.73609945837E-02 + 2.77410653672E-02 2.81272668357E-02 2.85197262624E-02 2.89185743466E-02 + 2.93239453215E-02 2.97359770642E-02 3.01548112095E-02 3.05805932683E-02 + 3.10134727480E-02 3.14536032786E-02 3.19011427413E-02 3.23562534017E-02 + 3.28191020476E-02 3.32898601300E-02 3.37687039096E-02 3.42558146071E-02 + 3.47513785585E-02 3.52555873749E-02 3.57686381069E-02 3.62907334151E-02 + 3.68220817442E-02 3.73628975033E-02 3.79134012515E-02 3.84738198881E-02 + 3.90443868499E-02 3.96253423128E-02 4.02169333996E-02 4.08194143945E-02 + 4.14330469626E-02 4.20581003764E-02 4.26948517478E-02 4.33435862675E-02 + 4.40045974500E-02 4.46781873858E-02 4.53646669998E-02 4.60643563174E-02 + 4.67775847363E-02 4.75046913063E-02 4.82460250153E-02 4.90019450837E-02 + 4.97728212641E-02 5.05590341500E-02 5.13609754909E-02 5.21790485146E-02 + 5.30136682570E-02 5.38652618996E-02 5.47342691131E-02 5.56211424096E-02 + 5.65263475011E-02 5.74503636652E-02 5.83936841181E-02 5.93568163938E-02 + 6.03402827309E-02 6.13446204652E-02 6.23703824287E-02 6.34181373549E-02 + 6.44884702897E-02 6.55819830077E-02 6.66992944337E-02 6.78410410686E-02 + 6.90078774198E-02 7.02004764350E-02 7.14195299393E-02 7.26657490749E-02 + 7.39398647423E-02 7.52426280427E-02 7.65748107207E-02 7.79372056062E-02 + 7.93306270548E-02 8.07559113850E-02 8.22139173126E-02 8.37055263785E-02 + 8.52316433713E-02 8.67931967411E-02 8.83911390042E-02 9.00264471365E-02 + 9.17001229536E-02 9.34131934763E-02 9.51667112787E-02 9.69617548169E-02 + 9.87994287362E-02 1.00680864154E-01 1.02607218913E-01 1.04579677814E-01 + 1.06599452797E-01 1.08667783109E-01 1.10785935411E-01 1.12955203859E-01 + 1.15176910119E-01 1.17452403350E-01 1.19783060114E-01 1.22170284236E-01 + 1.24615506592E-01 1.27120184829E-01 1.29685803009E-01 1.32313871167E-01 + 1.35005924785E-01 1.37763524168E-01 1.40588253722E-01 1.43481721119E-01 + 1.46445556353E-01 1.49481410664E-01 1.52590955341E-01 1.55775880375E-01 + 1.59037892971E-01 1.62378715905E-01 1.65800085704E-01 1.69303750660E-01 + 1.72891468657E-01 1.76565004797E-01 1.80326128824E-01 1.84176612329E-01 + 1.88118225725E-01 1.92152734990E-01 1.96281898144E-01 2.00507461483E-01 + 2.04831155518E-01 2.09254690642E-01 2.13779752494E-01 2.18407997009E-01 + 2.23141045151E-01 2.27980477306E-01 2.32927827335E-01 2.37984576264E-01 + 2.43152145610E-01 2.48431890325E-01 2.53825091350E-01 2.59332947778E-01 + 2.64956568602E-01 2.70696964053E-01 2.76555036515E-01 2.82531571022E-01 + 2.88627225315E-01 2.94842519478E-01 3.01177825136E-01 3.07633354231E-01 + 3.14209147368E-01 3.20905061749E-01 3.27720758697E-01 3.34655690788E-01 + 3.41709088607E-01 3.48879947141E-01 3.56167011855E-01 3.63568764446E-01 + 3.71083408345E-01 3.78708853978E-01 3.86442703848E-01 3.94282237481E-01 + 4.02224396294E-01 4.10265768448E-01 4.18402573757E-01 4.26630648738E-01 + 4.34945431874E-01 4.43341949193E-01 4.51814800271E-01 4.60358144755E-01 + 4.68965689539E-01 4.77630676720E-01 4.86345872472E-01 4.95103556978E-01 + 5.03895515596E-01 5.12713031408E-01 5.21546879340E-01 5.30387322028E-01 + 5.39224107635E-01 5.48046469810E-01 5.56843129996E-01 5.65602302308E-01 + 5.74311701199E-01 5.82958552117E-01 5.91529605406E-01 6.00011153646E-01 + 6.08389052660E-01 6.16648746412E-01 6.24775295982E-01 6.32753412826E-01 + 6.40567496495E-01 6.48201676968E-01 6.55639861733E-01 6.62865787732E-01 + 6.69863078225E-01 6.76615304615E-01 6.83106053217E-01 6.89318996906E-01 + 6.95237971504E-01 7.00847056730E-01 7.06130661439E-01 7.11073612795E-01 + 7.15661248949E-01 7.19879514681E-01 7.23715059373E-01 7.27155336561E-01 + 7.30188704192E-01 7.32804524608E-01 7.34993263120E-01 7.36746583939E-01 + 7.38057442052E-01 7.38920169537E-01 7.39330554656E-01 7.39285911927E-01 + 7.38785141278E-01 7.37828774242E-01 7.36419005089E-01 7.34559704669E-01 + 7.32256414723E-01 7.29516320362E-01 7.26348198423E-01 7.22762339472E-01 + 7.18770441289E-01 7.14385471838E-01 7.09621499900E-01 7.04493491850E-01 + 6.99017073374E-01 6.93208255351E-01 6.87083123643E-01 6.80657493130E-01 + 6.73946527020E-01 6.66964323258E-01 6.59723470757E-01 6.52234579170E-01 + 6.44505786998E-01 6.36542254007E-01 6.28345645210E-01 6.19916465464E-01 + 6.11263773981E-01 6.02399273734E-01 5.93334832941E-01 5.84082462883E-01 + 5.74654295657E-01 5.65062561886E-01 5.55319568448E-01 5.45437676239E-01 + 5.35429278024E-01 5.25299801157E-01 5.15068518551E-01 5.04747785185E-01 + 4.94349900331E-01 4.83887086235E-01 4.73371467066E-01 4.62815048155E-01 + 4.52229695553E-01 4.41627115942E-01 4.31018836934E-01 4.20416187793E-01 + 4.09830280633E-01 3.99271992120E-01 3.88751945747E-01 3.78280494728E-01 + 3.67867705556E-01 3.57523342301E-01 3.47256851719E-01 3.37077349229E-01 + 3.26993605806E-01 3.17014035877E-01 3.07146686272E-01 2.97399226299E-01 + 2.87778938982E-01 2.78292713524E-01 2.68947039027E-01 2.59747999500E-01 + 2.50701270181E-01 2.41812115181E-01 2.33085386451E-01 2.24525524065E-01 + 2.16136557785E-01 2.07922109898E-01 1.99885399263E-01 1.92029246530E-01 + 1.84356080464E-01 1.76867945323E-01 1.69566509192E-01 1.62453073229E-01 + 1.55528581722E-01 1.48793632875E-01 1.42248490253E-01 1.35893094793E-01 + 1.29727077297E-01 1.23749771331E-01 1.17960226449E-01 1.12357221667E-01 + 1.06939279108E-01 1.01704677759E-01 9.66514672715E-02 9.17774817444E-02 + 8.70803534322E-02 8.25575263363E-02 7.82062696263E-02 7.40236908552E-02 + 7.00067489324E-02 6.61522668250E-02 6.24569439609E-02 5.89173683150E-02 + 5.55300281608E-02 5.22913234773E-02 4.91975770015E-02 4.62450449239E-02 + 4.34299272250E-02 4.07483776536E-02 3.81965133526E-02 3.57704241348E-02 + 3.34661814172E-02 3.12798468196E-02 2.92074804346E-02 2.72451487753E-02 + 2.53889324070E-02 2.36349332663E-02 2.19792816722E-02 2.04181430289E-02 + 1.89477242216E-02 1.75642797030E-02 1.62641172672E-02 1.50436035065E-02 + 1.38991689449E-02 1.28273128435E-02 1.18246076684E-02 1.08877032162E-02 + 1.00133303894E-02 9.19830461615E-03 8.43952890823E-03 7.73399655469E-03 + 7.07879344780E-03 6.47110004096E-03 5.90819293978E-03 5.38744612935E-03 + 4.90633184307E-03 4.46242108006E-03 4.05338378052E-03 3.67698867013E-03 + 3.33110278637E-03 3.01369070159E-03 2.72281345857E-03 2.45662723644E-03 + 2.21338176506E-03 1.99141850762E-03 1.78916863132E-03 1.60515078701E-03 + 1.43796871833E-03 1.28630872159E-03 1.14893697708E-03 1.02469677236E-03 + 9.12505637628E-04 8.11352412753E-04 7.20294264548E-04 6.38453672388E-04 + 5.65015399054E-04 4.99223462788E-04 4.40378125441E-04 3.87832910437E-04 + 3.40991663160E-04 2.99305665125E-04 2.62270812143E-04 2.29424865510E-04 + 2.00344784037E-04 1.74644143653E-04 1.51970650180E-04 1.32003749809E-04 + 1.14452340827E-04 9.90525891656E-05 8.55658494578E-05 7.37766924553E-05 + 6.34910388976E-05 5.45343992200E-05 4.67502178635E-05 3.99983203776E-05 + 3.41534610181E-05 2.91039681051E-05 2.47504840403E-05 2.10047965705E-05 + 1.77887576351E-05 1.50332859391E-05 1.26774492423E-05 1.06676222601E-05 + 8.95671601186E-06 7.50347443485E-06 6.27183409947E-06 5.23034290177E-06 + 4.35163372393E-06 3.61197096378E-06 2.99099522784E-06 2.47090918528E-06 + 2.03635995215E-06 1.67415625652E-06 1.37299192245E-06 1.12320056535E-06 + 9.16538558033E-07 7.45993529123E-07 6.05615852138E-07 4.90370774816E-07 + 3.96009023090E-07 3.18953892085E-07 2.56203006139E-07 2.05243091566E-07 + 1.63976258826E-07 1.30656434929E-07 1.03832006172E-07 8.22774851648E-08 + 6.50059248827E-08 5.12072026375E-08 4.02160255275E-08 3.14876927683E-08 + 2.45776036324E-08 1.91239875647E-08 1.48333968492E-08 1.14685597138E-08 + 8.83824338413E-09 6.78882272375E-09 5.19729114161E-09 3.96548681554E-09 + 3.01533936134E-09 2.28497026238E-09 1.72550503258E-09 1.29847656482E-09 + 9.73717754042E-10 7.27657587789E-10 5.41948758470E-10 4.02366740095E-10 + 2.97930436986E-10 2.20203183479E-10 1.62740266330E-10 1.19805178290E-10 + 8.78504695197E-11 6.41621691447E-11 4.66722454246E-11 3.38112353584E-11 + 2.43929187334E-11 1.75244463271E-11 1.25366004306E-11 8.92990937297E-12 + 6.33319211344E-12 4.47180519580E-12 3.14342898428E-12 2.19968579660E-12 + 1.53224854714E-12 1.06239103142E-12 7.33163622072E-13 5.03562245602E-13 + 3.44203466635E-13 2.34132067707E-13 1.58476025133E-13 1.06732415766E-13 + 7.15207338131E-14 4.76807245627E-14 3.16228534133E-14 2.08630739278E-14 + 1.36913390654E-14 8.93665380024E-15 5.80144191405E-15 3.74540879325E-15 + 2.40455463149E-15 1.53501180598E-15 9.74315381132E-16 6.14846767851E-16 + 3.85728797406E-16 2.40554232476E-16 1.49117030224E-16 9.18738503235E-17 + 5.62566320372E-17 3.42325278102E-17 2.06991975008E-17 1.24360592246E-17 + 7.42321076186E-18 4.40194993380E-18 2.59302568618E-18 1.51719224756E-18 + 8.81677367386E-19 5.08834786785E-19 2.91611195815E-19 1.65940994739E-19 + 9.37533074904E-20 5.25852267395E-20 2.92782749729E-20 1.61804888770E-20 + 8.87486070804E-21 4.83074401652E-21 2.60920005482E-21 1.39829687153E-21 + 7.43442340921E-22 3.92109896585E-22 2.05133733881E-22 1.06436539747E-22 + 5.47676166778E-23 2.79441469721E-23 1.41366239377E-23 7.08992630106E-24 + 3.52477703676E-24 1.73687132815E-24 8.48205837427E-25 4.10471892149E-25 + 1.96817842807E-25 9.34962272713E-26 4.39968258339E-26 2.05066475127E-26 + 9.46589808473E-27 4.32683103243E-27 1.95823790379E-27 8.77392973346E-28 + 3.89135748334E-28 1.70816881702E-28 7.42039179684E-29 3.18957095185E-29 + 1.35640493443E-29 5.70610383244E-30 2.37423669075E-30 9.76972771010E-31 + 3.97515741765E-31 1.59910942358E-31 6.35904348490E-32 2.49937929228E-32 + 9.70812828231E-33 3.72595165783E-33 1.41277137414E-33 5.29143281699E-34 + 1.95737641085E-34 7.15001854870E-35 0.00000000000E+00 0.00000000000E+00 + 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 0.00000000000E+00 + 0.00000000000E+00 +3P 1 2.00 Wavefunction + 1.32508292500E-09 1.35862755896E-09 1.39302137937E-09 1.42828588349E-09 + 1.46444311278E-09 1.50151566669E-09 1.53952671677E-09 1.57850002117E-09 + 1.61845993947E-09 1.65943144791E-09 1.70144015503E-09 1.74451231764E-09 + 1.78867485723E-09 1.83395537684E-09 1.88038217826E-09 1.92798427975E-09 + 1.97679143418E-09 2.02683414761E-09 2.07814369837E-09 2.13075215658E-09 + 2.18469240426E-09 2.23999815581E-09 2.29670397912E-09 2.35484531719E-09 + 2.41445851025E-09 2.47558081847E-09 2.53825044529E-09 2.60250656127E-09 + 2.66838932857E-09 2.73593992607E-09 2.80520057509E-09 2.87621456578E-09 + 2.94902628422E-09 3.02368124008E-09 3.10022609515E-09 3.17870869245E-09 + 3.25917808617E-09 3.34168457229E-09 3.42627972005E-09 3.51301640418E-09 + 3.60194883793E-09 3.69313260695E-09 3.78662470408E-09 3.88248356492E-09 + 3.98076910439E-09 4.08154275413E-09 4.18486750096E-09 4.29080792622E-09 + 4.39943024612E-09 4.51080235314E-09 4.62499385848E-09 4.74207613555E-09 + 4.86212236457E-09 4.98520757836E-09 5.11140870917E-09 5.24080463683E-09 + 5.37347623800E-09 5.50950643675E-09 5.64898025638E-09 5.79198487258E-09 + 5.93860966788E-09 6.08894628755E-09 6.24308869687E-09 6.40113323987E-09 + 6.56317869954E-09 6.72932635956E-09 6.89968006763E-09 7.07434630036E-09 + 7.25343422984E-09 7.43705579184E-09 7.62532575584E-09 7.81836179667E-09 + 8.01628456816E-09 8.21921777848E-09 8.42728826749E-09 8.64062608603E-09 + 8.85936457717E-09 9.08364045959E-09 9.31359391303E-09 9.54936866588E-09 + 9.79111208503E-09 1.00389752680E-08 1.02931131373E-08 1.05536845375E-08 + 1.08208523341E-08 1.10947835156E-08 1.13756492981E-08 1.16636252318E-08 + 1.19588913109E-08 1.22616320865E-08 1.25720367813E-08 1.28902994084E-08 + 1.32166188923E-08 1.35511991933E-08 1.38942494350E-08 1.42459840349E-08 + 1.46066228387E-08 1.49763912573E-08 1.53555204081E-08 1.57442472590E-08 + 1.61428147771E-08 1.65514720800E-08 1.69704745919E-08 1.74000842029E-08 + 1.78405694330E-08 1.82922055999E-08 1.87552749909E-08 1.92300670394E-08 + 1.97168785059E-08 2.02160136634E-08 2.07277844877E-08 2.12525108522E-08 + 2.17905207279E-08 2.23421503886E-08 2.29077446208E-08 2.34876569392E-08 + 2.40822498080E-08 2.46918948670E-08 2.53169731643E-08 2.59578753942E-08 + 2.66150021414E-08 2.72887641316E-08 2.79795824879E-08 2.86878889944E-08 + 2.94141263656E-08 3.01587485236E-08 3.09222208815E-08 3.17050206343E-08 + 3.25076370574E-08 3.33305718123E-08 3.41743392598E-08 3.50394667823E-08 + 3.59264951126E-08 3.68359786722E-08 3.77684859180E-08 3.87245996974E-08 + 3.97049176128E-08 4.07100523946E-08 4.17406322850E-08 4.27973014298E-08 + 4.38807202819E-08 4.49915660131E-08 4.61305329384E-08 4.72983329491E-08 + 4.84956959583E-08 4.97233703569E-08 5.09821234814E-08 5.22727420935E-08 + 5.35960328719E-08 5.49528229164E-08 5.63439602651E-08 5.77703144242E-08 + 5.92327769113E-08 6.07322618134E-08 6.22697063572E-08 6.38460714958E-08 + 6.54623425087E-08 6.71195296181E-08 6.88186686198E-08 7.05608215311E-08 + 7.23470772544E-08 7.41785522577E-08 7.60563912727E-08 7.79817680098E-08 + 7.99558858924E-08 8.19799788085E-08 8.40553118822E-08 8.61831822642E-08 + 8.83649199430E-08 9.06018885757E-08 9.28954863408E-08 9.52471468115E-08 + 9.76583398524E-08 1.00130572538E-07 1.02665390094E-07 1.05264376864E-07 + 1.07929157300E-07 1.10661396976E-07 1.13462803631E-07 1.16335128236E-07 + 1.19280166088E-07 1.22299757931E-07 1.25395791109E-07 1.28570200743E-07 + 1.31824970942E-07 1.35162136046E-07 1.38583781890E-07 1.42092047115E-07 + 1.45689124502E-07 1.49377262341E-07 1.53158765838E-07 1.57035998557E-07 + 1.61011383895E-07 1.65087406597E-07 1.69266614311E-07 1.73551619179E-07 + 1.77945099467E-07 1.82449801245E-07 1.87068540098E-07 1.91804202890E-07 + 1.96659749564E-07 2.01638214996E-07 2.06742710888E-07 2.11976427718E-07 + 2.17342636731E-07 2.22844691981E-07 2.28486032433E-07 2.34270184110E-07 + 2.40200762296E-07 2.46281473795E-07 2.52516119252E-07 2.58908595524E-07 + 2.65462898117E-07 2.72183123685E-07 2.79073472589E-07 2.86138251523E-07 + 2.93381876204E-07 3.00808874136E-07 3.08423887434E-07 3.16231675733E-07 + 3.24237119154E-07 3.32445221363E-07 3.40861112692E-07 3.49490053349E-07 + 3.58337436704E-07 3.67408792663E-07 3.76709791120E-07 3.86246245505E-07 + 3.96024116413E-07 4.06049515335E-07 4.16328708474E-07 4.26868120663E-07 + 4.37674339381E-07 4.48754118869E-07 4.60114384353E-07 4.71762236372E-07 + 4.83704955215E-07 4.95950005476E-07 5.08505040712E-07 5.21377908233E-07 + 5.34576654005E-07 5.48109527678E-07 5.61984987743E-07 5.76211706819E-07 + 5.90798577073E-07 6.05754715781E-07 6.21089471020E-07 6.36812427519E-07 + 6.52933412643E-07 6.69462502539E-07 6.86410028433E-07 7.03786583088E-07 + 7.21603027423E-07 7.39870497306E-07 7.58600410506E-07 7.77804473839E-07 + 7.97494690479E-07 8.17683367461E-07 8.38383123377E-07 8.59606896258E-07 + 8.81367951665E-07 9.03679890977E-07 9.26556659896E-07 9.50012557161E-07 + 9.74062243483E-07 9.98720750715E-07 1.02400349124E-06 1.04992626762E-06 + 1.07650528243E-06 1.10375714846E-06 1.13169889902E-06 1.16034799863E-06 + 1.18972235394E-06 1.21984032490E-06 1.25072073624E-06 1.28238288925E-06 + 1.31484657382E-06 1.34813208085E-06 1.38226021489E-06 1.41725230717E-06 + 1.45313022890E-06 1.48991640500E-06 1.52763382805E-06 1.56630607271E-06 + 1.60595731042E-06 1.64661232454E-06 1.68829652583E-06 1.73103596830E-06 + 1.77485736554E-06 1.81978810741E-06 1.86585627713E-06 1.91309066886E-06 + 1.96152080568E-06 2.01117695808E-06 2.06209016282E-06 2.11429224238E-06 + 2.16781582482E-06 2.22269436421E-06 2.27896216148E-06 2.33665438594E-06 + 2.39580709716E-06 2.45645726763E-06 2.51864280575E-06 2.58240257962E-06 + 2.64777644126E-06 2.71480525158E-06 2.78353090589E-06 2.85399636006E-06 + 2.92624565743E-06 3.00032395630E-06 3.07627755814E-06 3.15415393659E-06 + 3.23400176706E-06 3.31587095720E-06 3.39981267810E-06 3.48587939624E-06 + 3.57412490631E-06 3.66460436483E-06 3.75737432459E-06 3.85249277008E-06 + 3.95001915363E-06 4.05001443266E-06 4.15254110772E-06 4.25766326158E-06 + 4.36544659930E-06 4.47595848925E-06 4.58926800529E-06 4.70544596986E-06 + 4.82456499831E-06 4.94669954429E-06 5.07192594621E-06 5.20032247507E-06 + 5.33196938330E-06 5.46694895491E-06 5.60534555701E-06 5.74724569246E-06 + 5.89273805397E-06 6.04191357953E-06 6.19486550927E-06 6.35168944371E-06 + 6.51248340354E-06 6.67734789087E-06 6.84638595204E-06 7.01970324209E-06 + 7.19740809071E-06 7.37961157000E-06 7.56642756393E-06 7.75797283943E-06 + 7.95436711949E-06 8.15573315787E-06 8.36219681593E-06 8.57388714126E-06 + 8.79093644833E-06 9.01348040122E-06 9.24165809837E-06 9.47561215961E-06 + 9.71548881520E-06 9.96143799733E-06 1.02136134338E-05 1.04721727439E-05 + 1.07372775376E-05 1.10090935155E-05 1.12877905735E-05 1.15735429082E-05 + 1.18665291262E-05 1.21669323555E-05 1.24749403604E-05 1.27907456580E-05 + 1.31145456397E-05 1.34465426935E-05 1.37869443312E-05 1.41359633179E-05 + 1.44938178047E-05 1.48607314658E-05 1.52369336373E-05 1.56226594615E-05 + 1.60181500334E-05 1.64236525514E-05 1.68394204719E-05 1.72657136677E-05 + 1.77027985905E-05 1.81509484375E-05 1.86104433220E-05 1.90815704485E-05 + 1.95646242925E-05 2.00599067842E-05 2.05677274974E-05 2.10884038432E-05 + 2.16222612679E-05 2.21696334572E-05 2.27308625440E-05 2.33062993226E-05 + 2.38963034682E-05 2.45012437613E-05 2.51214983185E-05 2.57574548287E-05 + 2.64095107957E-05 2.70780737865E-05 2.77635616858E-05 2.84664029579E-05 + 2.91870369138E-05 2.99259139864E-05 3.06834960114E-05 3.14602565170E-05 + 3.22566810189E-05 3.30732673241E-05 3.39105258428E-05 3.47689799062E-05 + 3.56491660947E-05 3.65516345729E-05 3.74769494335E-05 3.84256890498E-05 + 3.93984464378E-05 4.03958296262E-05 4.14184620372E-05 4.24669828756E-05 + 4.35420475287E-05 4.46443279761E-05 4.57745132095E-05 4.69333096637E-05 + 4.81214416580E-05 4.93396518491E-05 5.05887016953E-05 5.18693719328E-05 + 5.31824630634E-05 5.45287958554E-05 5.59092118561E-05 5.73245739184E-05 + 5.87757667402E-05 6.02636974171E-05 6.17892960101E-05 6.33535161264E-05 + 6.49573355162E-05 6.66017566835E-05 6.82878075131E-05 7.00165419133E-05 + 7.17890404744E-05 7.36064111448E-05 7.54697899235E-05 7.73803415701E-05 + 7.93392603335E-05 8.13477706981E-05 8.34071281500E-05 8.55186199609E-05 + 8.76835659943E-05 8.99033195297E-05 9.21792681092E-05 9.45128344051E-05 + 9.69054771090E-05 9.93586918445E-05 1.01874012102E-04 1.04453010197E-04 + 1.07097298255E-04 1.09808529218E-04 1.12588397878E-04 1.15438641937E-04 + 1.18361043095E-04 1.21357428162E-04 1.24429670202E-04 1.27579689704E-04 + 1.30809455780E-04 1.34120987402E-04 1.37516354660E-04 1.40997680059E-04 + 1.44567139844E-04 1.48226965364E-04 1.51979444465E-04 1.55826922922E-04 + 1.59771805904E-04 1.63816559484E-04 1.67963712173E-04 1.72215856508E-04 + 1.76575650671E-04 1.81045820152E-04 1.85629159453E-04 1.90328533836E-04 + 1.95146881116E-04 2.00087213500E-04 2.05152619466E-04 2.10346265701E-04 + 2.15671399078E-04 2.21131348688E-04 2.26729527923E-04 2.32469436611E-04 + 2.38354663207E-04 2.44388887035E-04 2.50575880590E-04 2.56919511903E-04 + 2.63423746955E-04 2.70092652161E-04 2.76930396916E-04 2.83941256198E-04 + 2.91129613252E-04 2.98499962322E-04 3.06056911474E-04 3.13805185470E-04 + 3.21749628731E-04 3.29895208366E-04 3.38247017280E-04 3.46810277365E-04 + 3.55590342762E-04 3.64592703217E-04 3.73822987516E-04 3.83286967007E-04 + 3.92990559212E-04 4.02939831533E-04 4.13141005050E-04 4.23600458414E-04 + 4.34324731840E-04 4.45320531202E-04 4.56594732235E-04 4.68154384832E-04 + 4.80006717467E-04 4.92159141714E-04 5.04619256892E-04 5.17394854822E-04 + 5.30493924709E-04 5.43924658141E-04 5.57695454223E-04 5.71814924838E-04 + 5.86291900037E-04 6.01135433575E-04 6.16354808579E-04 6.31959543364E-04 + 6.47959397398E-04 6.64364377415E-04 6.81184743685E-04 6.98431016443E-04 + 7.16113982482E-04 7.34244701912E-04 7.52834515092E-04 7.71895049738E-04 + 7.91438228209E-04 8.11476274984E-04 8.32021724322E-04 8.53087428120E-04 + 8.74686563974E-04 8.96832643439E-04 9.19539520500E-04 9.42821400263E-04 + 9.66692847862E-04 9.91168797596E-04 1.01626456229E-03 1.04199584292E-03 + 1.06837873843E-03 1.09542975586E-03 1.12316582069E-03 1.15160428749E-03 + 1.18076295076E-03 1.21066005613E-03 1.24131431182E-03 1.27274490035E-03 + 1.30497149065E-03 1.33801425031E-03 1.37189385833E-03 1.40663151808E-03 + 1.44224897060E-03 1.47876850827E-03 1.51621298881E-03 1.55460584965E-03 + 1.59397112266E-03 1.63433344922E-03 1.67571809574E-03 1.71815096953E-03 + 1.76165863510E-03 1.80626833083E-03 1.85200798611E-03 1.89890623894E-03 + 1.94699245389E-03 1.99629674058E-03 2.04684997267E-03 2.09868380722E-03 + 2.15183070465E-03 2.20632394917E-03 2.26219766972E-03 2.31948686144E-03 + 2.37822740775E-03 2.43845610289E-03 2.50021067515E-03 2.56352981058E-03 + 2.62845317741E-03 2.69502145101E-03 2.76327633953E-03 2.83326061022E-03 + 2.90501811635E-03 2.97859382485E-03 3.05403384473E-03 3.13138545607E-03 + 3.21069713992E-03 3.29201860884E-03 3.37540083828E-03 3.46089609874E-03 + 3.54855798877E-03 3.63844146882E-03 3.73060289588E-03 3.82510005915E-03 + 3.92199221646E-03 4.02134013174E-03 4.12320611339E-03 4.22765405366E-03 + 4.33474946901E-03 4.44455954152E-03 4.55715316137E-03 4.67260097035E-03 + 4.79097540656E-03 4.91235075020E-03 5.03680317054E-03 5.16441077409E-03 + 5.29525365403E-03 5.42941394085E-03 5.56697585431E-03 5.70802575673E-03 + 5.85265220767E-03 6.00094601989E-03 6.15300031691E-03 6.30891059187E-03 + 6.46877476801E-03 6.63269326062E-03 6.80076904061E-03 6.97310769965E-03 + 7.14981751703E-03 7.33100952815E-03 7.51679759480E-03 7.70729847721E-03 + 7.90263190790E-03 8.10292066745E-03 8.30829066212E-03 8.51887100351E-03 + 8.73479409017E-03 8.95619569128E-03 9.18321503249E-03 9.41599488381E-03 + 9.65468164983E-03 9.89942546211E-03 1.01503802739E-02 1.04077039574E-02 + 1.06715584030E-02 1.09421096216E-02 1.12195278487E-02 1.15039876522E-02 + 1.17956680416E-02 1.20947525805E-02 1.24014295023E-02 1.27158918278E-02 + 1.30383374863E-02 1.33689694397E-02 1.37079958090E-02 1.40556300046E-02 + 1.44120908592E-02 1.47776027643E-02 1.51523958092E-02 1.55367059246E-02 + 1.59307750283E-02 1.63348511748E-02 1.67491887088E-02 1.71740484214E-02 + 1.76096977107E-02 1.80564107458E-02 1.85144686343E-02 1.89841595934E-02 + 1.94657791259E-02 1.99596301986E-02 2.04660234257E-02 2.09852772556E-02 + 2.15177181619E-02 2.20636808384E-02 2.26235083983E-02 2.31975525768E-02 + 2.37861739390E-02 2.43897420905E-02 2.50086358934E-02 2.56432436858E-02 + 2.62939635048E-02 2.69612033153E-02 2.76453812406E-02 2.83469257991E-02 + 2.90662761438E-02 2.98038823054E-02 3.05602054406E-02 3.13357180826E-02 + 3.21309043961E-02 3.29462604355E-02 3.37822944063E-02 3.46395269299E-02 + 3.55184913112E-02 3.64197338088E-02 3.73438139079E-02 3.82913045953E-02 + 3.92627926361E-02 4.02588788520E-02 4.12801784013E-02 4.23273210586E-02 + 4.34009514957E-02 4.45017295615E-02 4.56303305619E-02 4.67874455374E-02 + 4.79737815392E-02 4.91900619024E-02 5.04370265153E-02 5.17154320846E-02 + 5.30260523950E-02 5.43696785621E-02 5.57471192786E-02 5.71592010507E-02 + 5.86067684256E-02 6.00906842068E-02 6.16118296570E-02 6.31711046864E-02 + 6.47694280251E-02 6.64077373770E-02 6.80869895544E-02 6.98081605896E-02 + 7.15722458231E-02 7.33802599647E-02 7.52332371246E-02 7.71322308133E-02 + 7.90783139058E-02 8.10725785680E-02 8.31161361412E-02 8.52101169813E-02 + 8.73556702501E-02 8.95539636524E-02 9.18061831172E-02 9.41135324163E-02 + 9.64772327172E-02 9.88985220647E-02 1.01378654785E-01 1.03918900810E-01 + 1.06520544908E-01 1.09184885828E-01 1.11913235339E-01 1.14706917160E-01 + 1.17567265777E-01 1.20495625143E-01 1.23493347242E-01 1.26561790515E-01 + 1.29702318149E-01 1.32916296198E-01 1.36205091551E-01 1.39570069725E-01 + 1.43012592472E-01 1.46534015195E-01 1.50135684168E-01 1.53818933535E-01 + 1.57585082090E-01 1.61435429827E-01 1.65371254242E-01 1.69393806379E-01 + 1.73504306617E-01 1.77703940178E-01 1.81993852345E-01 1.86375143393E-01 + 1.90848863204E-01 1.95416005575E-01 2.00077502192E-01 2.04834216286E-01 + 2.09686935933E-01 2.14636367021E-01 2.19683125859E-01 2.24827731431E-01 + 2.30070597300E-01 2.35412023145E-01 2.40852185951E-01 2.46391130839E-01 + 2.52028761554E-01 2.57764830622E-01 2.63598929173E-01 2.69530476463E-01 + 2.75558709105E-01 2.81682670036E-01 2.87901197250E-01 2.94212912322E-01 + 3.00616208777E-01 3.07109240332E-01 3.13689909069E-01 3.20355853602E-01 + 3.27104437290E-01 3.33932736575E-01 3.40837529520E-01 3.47815284641E-01 + 3.54862150119E-01 3.61973943504E-01 3.69146142016E-01 3.76373873572E-01 + 3.83651908671E-01 3.90974653263E-01 3.98336142772E-01 4.05730037409E-01 + 4.13149618961E-01 4.20587789206E-01 4.28037070159E-01 4.35489606316E-01 + 4.42937169086E-01 4.50371163624E-01 4.57782638234E-01 4.65162296547E-01 + 4.72500512671E-01 4.79787349478E-01 4.87012580215E-01 4.94165713605E-01 + 5.01236022557E-01 5.08212576631E-01 5.15084278342E-01 5.21839903359E-01 + 5.28468144633E-01 5.34957660428E-01 5.41297126167E-01 5.47475289997E-01 + 5.53481031828E-01 5.59303425613E-01 5.64931804490E-01 5.70355828353E-01 + 5.75565553305E-01 5.80551502346E-01 5.85304736539E-01 5.89816925778E-01 + 5.94080418140E-01 5.98088306721E-01 6.01834492664E-01 6.05313743007E-01 + 6.08521741835E-01 6.11455133070E-01 6.14111553166E-01 6.16489651829E-01 + 6.18589098818E-01 6.20410574807E-01 6.21955744248E-01 6.23227208178E-01 + 6.24228434913E-01 6.24963666691E-01 6.25437800405E-01 6.25656240786E-01 + 6.25624724624E-01 6.25349114950E-01 6.24835164496E-01 6.24088248222E-01 + 6.23113065304E-01 6.21913311599E-01 6.20491324393E-01 6.18847702069E-01 + 6.16980902289E-01 6.14886823277E-01 6.12558373921E-01 6.09987797289E-01 + 6.07175964997E-01 6.04126410326E-01 6.00842907473E-01 5.97329466024E-01 + 5.93590325164E-01 5.89629947618E-01 5.85453013335E-01 5.81064412894E-01 + 5.76469240656E-01 5.71672787615E-01 5.66680533949E-01 5.61498141313E-01 + 5.56131444795E-01 5.50586444539E-01 5.44869297010E-01 5.38986305906E-01 + 5.32943912691E-01 5.26748686739E-01 5.20407315074E-01 5.13926591713E-01 + 5.07313406601E-01 5.00574734157E-01 4.93717621432E-01 4.86749175912E-01 + 4.79669651633E-01 4.72493053879E-01 4.65226593840E-01 4.57877491231E-01 + 4.50452960908E-01 4.42960199433E-01 4.35406371681E-01 4.27798597550E-01 + 4.20143938868E-01 4.12449386594E-01 4.04721848382E-01 3.96968136605E-01 + 3.89194956912E-01 3.81408897406E-01 3.73616418491E-01 3.65823843466E-01 + 3.58037349907E-01 3.50262961881E-01 3.42506543021E-01 3.34773790478E-01 + 3.27070229769E-01 3.19401210505E-01 3.11771903001E-01 3.04187295738E-01 + 2.96652193646E-01 2.89171217185E-01 2.81748802156E-01 2.74389200220E-01 + 2.67096480037E-01 2.59874529000E-01 2.52727055472E-01 2.45657591471E-01 + 2.38669495751E-01 2.31765957174E-01 2.24949998347E-01 2.18224479424E-01 + 2.11592102017E-01 2.05055413158E-01 1.98616809236E-01 1.92278539857E-01 + 1.86042711575E-01 1.79911291435E-01 1.73886110286E-01 1.67968865833E-01 + 1.62161125380E-01 1.56464328258E-01 1.50879787911E-01 1.45408693629E-01 + 1.40052111945E-01 1.34810987692E-01 1.29686144738E-01 1.24678286443E-01 + 1.19787995854E-01 1.15015735691E-01 1.10361848169E-01 1.05826554712E-01 + 1.01409955607E-01 9.71120296679E-02 9.29326339619E-02 8.88715036554E-02 + 8.49282520384E-02 8.11023707793E-02 7.73932304570E-02 7.38000814119E-02 + 7.03220549530E-02 6.69581649482E-02 6.37073098193E-02 6.05682749559E-02 + 5.75397355544E-02 5.46202598803E-02 5.18083129471E-02 4.91022605974E-02 + 4.65003739655E-02 4.40008342975E-02 4.16017380999E-02 3.93011025824E-02 + 3.70968713607E-02 3.49869203808E-02 3.29690640249E-02 3.10410613610E-02 + 2.92006224927E-02 2.74454149726E-02 2.57730702380E-02 2.41811900323E-02 + 2.26673527759E-02 2.12291198520E-02 1.98640417750E-02 1.85696642136E-02 + 1.73435338391E-02 1.61832039757E-02 1.50862400310E-02 1.40502246870E-02 + 1.30727628341E-02 1.21514862367E-02 1.12840579159E-02 1.04681762420E-02 + 9.70157873035E-03 8.98204553486E-03 8.30740263801E-03 7.67552473655E-03 + 7.08433782452E-03 6.53182147685E-03 6.01601083836E-03 5.53499832446E-03 + 5.08693504095E-03 4.67003193177E-03 4.28256066425E-03 3.92285426253E-03 + 3.58930750035E-03 3.28037706527E-03 2.99458150664E-03 2.73050098022E-03 + 2.48677680261E-03 2.26211082865E-03 2.05526466540E-03 1.86505873584E-03 + 1.69037120586E-03 1.53013678744E-03 1.38334543127E-03 1.24904092117E-03 + 1.12631938275E-03 1.01432771824E-03 9.12261978923E-04 8.19365686056E-04 + 7.34928110935E-04 6.58282523849E-04 5.88804421313E-04 5.25909739645E-04 + 4.69053066072E-04 4.17728378133E-04 3.71487312349E-04 3.29888530375E-04 + 2.92520370171E-04 2.59002034239E-04 2.28981815715E-04 2.02135381136E-04 + 1.78164111689E-04 1.56793504564E-04 1.37771635761E-04 1.20867685367E-04 + 1.05870526037E-04 9.25873751735E-05 8.08425110167E-05 7.04760526576E-05 + 6.13428037802E-05 5.33111597849E-05 4.62608710193E-05 4.00724655475E-05 + 3.46492495486E-05 2.99052367029E-05 2.57629924892E-05 2.21529161654E-05 + 1.90125684921E-05 1.62860437614E-05 1.39233845870E-05 1.18800378269E-05 + 1.01163499432E-05 8.59710004802E-06 7.29106885156E-06 6.17064170128E-06 + 5.21144389593E-06 4.39200645873E-06 3.69346057077E-06 3.09925888987E-06 + 2.59492201460E-06 2.16780839645E-06 1.80690605255E-06 1.50264448754E-06 + 1.24672529426E-06 1.03196996817E-06 8.52183538898E-07 7.02032693153E-07 + 5.76937135696E-07 4.72973008227E-07 3.86787259533E-07 3.15521933240E-07 + 2.56747411563E-07 2.08403724216E-07 1.68749100720E-07 1.36315011442E-07 + 1.09867007821E-07 8.83707351997E-08 7.09625526981E-08 5.69242538362E-08 + 4.56614396445E-08 3.65228187790E-08 2.91290172810E-08 2.31642615750E-08 + 1.83664913138E-08 1.45188718530E-08 1.14425312449E-08 8.99036492125E-09 + 7.04176813767E-09 5.49817182260E-09 4.27927173200E-09 3.31985381376E-09 + 2.56713048116E-09 1.97851314875E-09 1.51975595966E-09 1.16341420234E-09 + 8.87568546363E-10 6.74772994155E-10 5.11190418247E-10 3.85884802534E-10 + 2.90243897148E-10 2.17509995156E-10 1.62400005952E-10 1.20798992353E-10 + 8.95139094619E-11 6.60764827264E-11 4.85860355175E-11 3.55846643601E-11 + 2.59584999145E-11 1.88599175358E-11 1.36465026547E-11 9.83335991299E-12 + 7.05600436959E-12 5.04160869666E-12 3.58681999068E-12 2.54071910564E-12 + 1.79178760150E-12 1.25798389104E-12 8.79220661494E-13 6.11688351615E-13 + 4.23591279110E-13 2.91959711593E-13 2.00277554212E-13 1.36725357854E-13 + 9.28852954010E-14 6.27912767309E-14 4.22356434918E-14 2.82656539682E-14 + 1.88196439965E-14 1.24654564908E-14 8.21336286009E-15 5.38295981067E-15 + 3.50896852623E-15 2.27492222780E-15 1.46673801612E-15 9.40388366996E-16 + 5.99515015482E-16 3.80014376194E-16 2.39483596134E-16 1.50036022273E-16 + 9.34387850674E-17 5.78413118696E-17 3.55873317155E-17 2.17603398970E-17 + 1.32225456503E-17 7.98379538651E-18 4.78976254860E-18 2.85491864458E-18 + 1.69049199973E-18 9.94342835104E-19 5.80933454250E-19 3.37090830943E-19 + 1.94249740768E-19 1.11155020468E-19 6.31559889927E-20 3.56268999209E-20 + 1.99517176046E-20 1.10912766622E-20 6.11986037189E-21 3.35134732806E-21 + 1.82126872318E-21 9.82117559768E-22 5.25466999998E-22 2.78918343435E-22 + 1.46863868121E-22 7.67034950017E-23 3.97313339103E-23 2.04091011806E-23 + 1.03954123772E-23 +3P 1 0.00 Wavefunction + 1.30664920902E-09 1.33972719124E-09 1.37364254656E-09 1.40841647320E-09 + 1.44407070597E-09 1.48062752995E-09 1.51810979434E-09 1.55654092677E-09 + 1.59594494794E-09 1.63634648667E-09 1.67777079521E-09 1.72024376512E-09 + 1.76379194339E-09 1.80844254903E-09 1.85422349014E-09 1.90116338130E-09 + 1.94929156145E-09 1.99863811229E-09 2.04923387702E-09 2.10111047962E-09 + 2.15430034468E-09 2.20883671758E-09 2.26475368533E-09 2.32208619787E-09 + 2.38087008987E-09 2.44114210319E-09 2.50293990978E-09 2.56630213531E-09 + 2.63126838321E-09 2.69787925950E-09 2.76617639816E-09 2.83620248713E-09 + 2.90800129497E-09 2.98161769829E-09 3.05709770974E-09 3.13448850677E-09 + 3.21383846117E-09 3.29519716923E-09 3.37861548278E-09 3.46414554101E-09 + 3.55184080297E-09 3.64175608106E-09 3.73394757526E-09 3.82847290824E-09 + 3.92539116143E-09 4.02476291188E-09 4.12665027018E-09 4.23111691924E-09 + 4.33822815411E-09 4.44805092281E-09 4.56065386814E-09 4.67610737061E-09 + 4.79448359242E-09 4.91585652255E-09 5.04030202305E-09 5.16789787640E-09 + 5.29872383416E-09 5.43286166682E-09 5.57039521488E-09 5.71141044130E-09 + 5.85599548518E-09 6.00424071688E-09 6.15623879450E-09 6.31208472179E-09 + 6.47187590752E-09 6.63571222638E-09 6.80369608142E-09 6.97593246800E-09 + 7.15252903949E-09 7.33359617448E-09 7.51924704582E-09 7.70959769137E-09 + 7.90476708647E-09 8.10487721834E-09 8.31005316234E-09 8.52042316011E-09 + 8.73611869974E-09 8.95727459798E-09 9.18402908446E-09 9.41652388812E-09 + 9.65490432577E-09 9.89931939296E-09 1.01499218571E-08 1.04068683528E-08 + 1.06703194800E-08 1.09404399043E-08 1.12173984598E-08 1.15013682545E-08 + 1.17925267788E-08 1.20910560162E-08 1.23971425574E-08 1.27109777162E-08 + 1.30327576500E-08 1.33626834816E-08 1.37009614255E-08 1.40478029163E-08 + 1.44034247414E-08 1.47680491758E-08 1.51419041218E-08 1.55252232509E-08 + 1.59182461500E-08 1.63212184712E-08 1.67343920854E-08 1.71580252395E-08 + 1.75923827180E-08 1.80377360085E-08 1.84943634713E-08 1.89625505135E-08 + 1.94425897671E-08 1.99347812725E-08 2.04394326652E-08 2.09568593688E-08 + 2.14873847920E-08 2.20313405302E-08 2.25890665737E-08 2.31609115193E-08 + 2.37472327888E-08 2.43483968520E-08 2.49647794561E-08 2.55967658603E-08 + 2.62447510766E-08 2.69091401170E-08 2.75903482462E-08 2.82888012414E-08 + 2.90049356587E-08 2.97391991052E-08 3.04920505196E-08 3.12639604585E-08 + 3.20554113908E-08 3.28668979992E-08 3.36989274891E-08 3.45520199061E-08 + 3.54267084608E-08 3.63235398620E-08 3.72430746585E-08 3.81858875896E-08 + 3.91525679440E-08 4.01437199286E-08 4.11599630455E-08 4.22019324798E-08 + 4.32702794963E-08 4.43656718469E-08 4.54887941873E-08 4.66403485057E-08 + 4.78210545610E-08 4.90316503330E-08 5.02728924834E-08 5.15455568291E-08 + 5.28504388269E-08 5.41883540703E-08 5.55601388001E-08 5.69666504265E-08 + 5.84087680651E-08 5.98873930863E-08 6.14034496791E-08 6.29578854282E-08 + 6.45516719067E-08 6.61858052829E-08 6.78613069437E-08 6.95792241322E-08 + 7.13406306025E-08 7.31466272912E-08 7.49983430051E-08 7.68969351269E-08 + 7.88435903386E-08 8.08395253632E-08 8.28859877252E-08 8.49842565302E-08 + 8.71356432648E-08 8.93414926157E-08 9.16031833109E-08 9.39221289808E-08 + 9.62997790420E-08 9.87376196034E-08 1.01237174395E-07 1.03800005720E-07 + 1.06427715431E-07 1.09121945934E-07 1.11884381209E-07 1.14716747870E-07 + 1.17620816237E-07 1.20598401449E-07 1.23651364592E-07 1.26781613870E-07 + 1.29991105789E-07 1.33281846387E-07 1.36655892485E-07 1.40115352971E-07 + 1.43662390122E-07 1.47299220950E-07 1.51028118595E-07 1.54851413739E-07 + 1.58771496066E-07 1.62790815756E-07 1.66911885016E-07 1.71137279647E-07 + 1.75469640660E-07 1.79911675923E-07 1.84466161851E-07 1.89135945149E-07 + 1.93923944582E-07 1.98833152808E-07 2.03866638242E-07 2.09027546976E-07 + 2.14319104749E-07 2.19744618956E-07 2.25307480721E-07 2.31011167015E-07 + 2.36859242829E-07 2.42855363401E-07 2.49003276503E-07 2.55306824782E-07 + 2.61769948162E-07 2.68396686307E-07 2.75191181145E-07 2.82157679457E-07 + 2.89300535535E-07 2.96624213896E-07 3.04133292080E-07 3.11832463507E-07 + 3.19726540411E-07 3.27820456849E-07 3.36119271785E-07 3.44628172249E-07 + 3.53352476585E-07 3.62297637768E-07 3.71469246818E-07 3.80873036292E-07 + 3.90514883867E-07 4.00400816013E-07 4.10537011764E-07 4.20929806576E-07 + 4.31585696285E-07 4.42511341174E-07 4.53713570130E-07 4.65199384914E-07 + 4.76975964540E-07 4.89050669755E-07 5.01431047649E-07 5.14124836366E-07 + 5.27139969941E-07 5.40484583261E-07 5.54167017151E-07 5.68195823582E-07 + 5.82579771020E-07 5.97327849908E-07 6.12449278280E-07 6.27953507530E-07 + 6.43850228313E-07 6.60149376603E-07 6.76861139907E-07 6.93995963630E-07 + 7.11564557604E-07 7.29577902779E-07 7.48047258095E-07 7.66984167508E-07 + 7.86400467215E-07 8.06308293047E-07 8.26720088054E-07 8.47648610285E-07 + 8.69106940762E-07 8.91108491653E-07 9.13667014659E-07 9.36796609606E-07 + 9.60511733259E-07 9.84827208360E-07 1.00975823289E-06 1.03532038957E-06 + 1.06152965560E-06 1.08840241265E-06 1.11595545708E-06 1.14420601046E-06 + 1.17317173035E-06 1.20287072127E-06 1.23332154610E-06 1.26454323761E-06 + 1.29655531041E-06 1.32937777313E-06 1.36303114089E-06 1.39753644818E-06 + 1.43291526198E-06 1.46918969524E-06 1.50638242070E-06 1.54451668507E-06 + 1.58361632354E-06 1.62370577470E-06 1.66481009583E-06 1.70695497850E-06 + 1.75016676470E-06 1.79447246325E-06 1.83989976672E-06 1.88647706871E-06 + 1.93423348162E-06 1.98319885483E-06 2.03340379336E-06 2.08487967702E-06 + 2.13765867998E-06 2.19177379092E-06 2.24725883364E-06 2.30414848818E-06 + 2.36247831254E-06 2.42228476485E-06 2.48360522619E-06 2.54647802398E-06 + 2.61094245587E-06 2.67703881435E-06 2.74480841194E-06 2.81429360697E-06 + 2.88553783011E-06 2.95858561145E-06 3.03348260841E-06 3.11027563421E-06 + 3.18901268718E-06 3.26974298072E-06 3.35251697408E-06 3.43738640392E-06 + 3.52440431661E-06 3.61362510140E-06 3.70510452443E-06 3.79889976358E-06 + 3.89506944417E-06 3.99367367567E-06 4.09477408924E-06 4.19843387622E-06 + 4.30471782768E-06 4.41369237489E-06 4.52542563086E-06 4.63998743286E-06 + 4.75744938617E-06 4.87788490874E-06 5.00136927711E-06 5.12797967352E-06 + 5.25779523406E-06 5.39089709818E-06 5.52736845942E-06 5.66729461739E-06 + 5.81076303107E-06 5.95786337352E-06 6.10868758789E-06 6.26332994491E-06 + 6.42188710181E-06 6.58445816272E-06 6.75114474066E-06 6.92205102099E-06 + 7.09728382659E-06 7.27695268458E-06 7.46116989482E-06 7.65005060009E-06 + 7.84371285806E-06 8.04227771506E-06 8.24586928179E-06 8.45461481085E-06 + 8.66864477631E-06 8.88809295523E-06 9.11309651133E-06 9.34379608068E-06 + 9.58033585963E-06 9.82286369491E-06 1.00715311761E-05 1.03264937303E-05 + 1.05879107194E-05 1.08559455396E-05 1.11307657235E-05 1.14125430450E-05 + 1.17014536264E-05 1.19976780489E-05 1.23014014648E-05 1.26128137141E-05 + 1.29321094425E-05 1.32594882232E-05 1.35951546819E-05 1.39393186244E-05 + 1.42921951679E-05 1.46540048756E-05 1.50249738942E-05 1.54053340956E-05 + 1.57953232217E-05 1.61951850329E-05 1.66051694606E-05 1.70255327637E-05 + 1.74565376881E-05 1.78984536315E-05 1.83515568117E-05 1.88161304391E-05 + 1.92924648938E-05 1.97808579072E-05 2.02816147480E-05 2.07950484132E-05 + 2.13214798233E-05 2.18612380235E-05 2.24146603891E-05 2.29820928361E-05 + 2.35638900381E-05 2.41604156475E-05 2.47720425229E-05 2.53991529623E-05 + 2.60421389419E-05 2.67014023615E-05 2.73773552950E-05 2.80704202489E-05 + 2.87810304258E-05 2.95096299954E-05 3.02566743722E-05 3.10226304999E-05 + 3.18079771438E-05 3.26132051896E-05 3.34388179507E-05 3.42853314822E-05 + 3.51532749045E-05 3.60431907330E-05 3.69556352178E-05 3.78911786916E-05 + 3.88504059259E-05 3.98339164965E-05 4.08423251587E-05 4.18762622314E-05 + 4.29363739910E-05 4.40233230758E-05 4.51377888998E-05 4.62804680777E-05 + 4.74520748606E-05 4.86533415822E-05 4.98850191167E-05 5.11478773482E-05 + 5.24427056523E-05 5.37703133891E-05 5.51315304099E-05 5.65272075752E-05 + 5.79582172873E-05 5.94254540354E-05 6.09298349551E-05 6.24723004014E-05 + 6.40538145370E-05 6.56753659348E-05 6.73379681965E-05 6.90426605856E-05 + 7.07905086777E-05 7.25826050265E-05 7.44200698473E-05 7.63040517167E-05 + 7.82357282917E-05 8.02163070449E-05 8.22470260204E-05 8.43291546077E-05 + 8.64639943351E-05 8.86528796840E-05 9.08971789228E-05 9.31982949631E-05 + 9.55576662361E-05 9.79767675932E-05 1.00457111227E-04 1.03000247618E-04 + 1.05607766503E-04 1.08281297871E-04 1.11022512980E-04 1.13833125405E-04 + 1.16714892107E-04 1.19669614534E-04 1.22699139744E-04 1.25805361566E-04 + 1.28990221778E-04 1.32255711327E-04 1.35603871570E-04 1.39036795551E-04 + 1.42556629314E-04 1.46165573241E-04 1.49865883430E-04 1.53659873105E-04 + 1.57549914066E-04 1.61538438169E-04 1.65627938846E-04 1.69820972672E-04 + 1.74120160954E-04 1.78528191380E-04 1.83047819694E-04 1.87681871423E-04 + 1.92433243643E-04 1.97304906791E-04 2.02299906528E-04 2.07421365637E-04 + 2.12672485981E-04 2.18056550507E-04 2.23576925298E-04 2.29237061679E-04 + 2.35040498377E-04 2.40990863738E-04 2.47091877990E-04 2.53347355579E-04 + 2.59761207552E-04 2.66337444004E-04 2.73080176588E-04 2.79993621089E-04 + 2.87082100062E-04 2.94350045538E-04 3.01802001794E-04 3.09442628203E-04 + 3.17276702147E-04 3.25309122006E-04 3.33544910228E-04 3.41989216470E-04 + 3.50647320823E-04 3.59524637116E-04 3.68626716308E-04 3.77959249962E-04 + 3.87528073805E-04 3.97339171389E-04 4.07398677831E-04 4.17712883659E-04 + 4.28288238749E-04 4.39131356365E-04 4.50249017300E-04 4.61648174123E-04 + 4.73335955534E-04 4.85319670830E-04 4.97606814482E-04 5.10205070828E-04 + 5.23122318893E-04 5.36366637317E-04 5.49946309424E-04 5.63869828407E-04 + 5.78145902652E-04 5.92783461196E-04 6.07791659319E-04 6.23179884286E-04 + 6.38957761229E-04 6.55135159177E-04 6.71722197248E-04 6.88729250989E-04 + 7.06166958880E-04 7.24046229007E-04 7.42378245900E-04 7.61174477546E-04 + 7.80446682582E-04 8.00206917670E-04 8.20467545057E-04 8.41241240332E-04 + 8.62541000375E-04 8.84380151515E-04 9.06772357887E-04 9.29731630011E-04 + 9.53272333577E-04 9.77409198471E-04 1.00215732801E-03 1.02753220844E-03 + 1.05354971862E-03 1.08022614005E-03 1.10757816704E-03 1.13562291722E-03 + 1.16437794230E-03 1.19386123907E-03 1.22409126072E-03 1.25508692844E-03 + 1.28686764328E-03 1.31945329838E-03 1.35286429146E-03 1.38712153762E-03 + 1.42224648251E-03 1.45826111583E-03 1.49518798510E-03 1.53305020991E-03 + 1.57187149641E-03 1.61167615226E-03 1.65248910189E-03 1.69433590222E-03 + 1.73724275869E-03 1.78123654183E-03 1.82634480411E-03 1.87259579732E-03 + 1.92001849037E-03 1.96864258751E-03 2.01849854705E-03 2.06961760056E-03 + 2.12203177254E-03 2.17577390063E-03 2.23087765626E-03 2.28737756592E-03 + 2.34530903293E-03 2.40470835975E-03 2.46561277088E-03 2.52806043639E-03 + 2.59209049593E-03 2.65774308351E-03 2.72505935279E-03 2.79408150309E-03 + 2.86485280602E-03 2.93741763283E-03 3.01182148244E-03 3.08811101018E-03 + 3.16633405728E-03 3.24653968115E-03 3.32877818633E-03 3.41310115638E-03 + 3.49956148645E-03 3.58821341677E-03 3.67911256699E-03 3.77231597135E-03 + 3.86788211483E-03 3.96587097012E-03 4.06634403568E-03 4.16936437465E-03 + 4.27499665480E-03 4.38330718955E-03 4.49436397997E-03 4.60823675791E-03 + 4.72499703020E-03 4.84471812403E-03 4.96747523343E-03 5.09334546701E-03 + 5.22240789685E-03 5.35474360873E-03 5.49043575360E-03 5.62956960033E-03 + 5.77223258988E-03 5.91851439086E-03 6.06850695644E-03 6.22230458278E-03 + 6.38000396896E-03 6.54170427839E-03 6.70750720184E-03 6.87751702206E-03 + 7.05184068007E-03 7.23058784312E-03 7.41387097437E-03 7.60180540444E-03 + 7.79450940464E-03 7.99210426219E-03 8.19471435729E-03 8.40246724216E-03 + 8.61549372211E-03 8.83392793865E-03 9.05790745468E-03 9.28757334190E-03 + 9.52307027039E-03 9.76454660042E-03 1.00121544767E-02 1.02660499247E-02 + 1.05263929499E-02 1.07933476391E-02 1.10670822642E-02 1.13477693891E-02 + 1.16355859787E-02 1.19307135111E-02 1.22333380918E-02 1.25436505718E-02 + 1.28618466678E-02 1.31881270857E-02 1.35226976468E-02 1.38657694176E-02 + 1.42175588422E-02 1.45782878785E-02 1.49481841369E-02 1.53274810232E-02 + 1.57164178842E-02 1.61152401570E-02 1.65241995221E-02 1.69435540596E-02 + 1.73735684096E-02 1.78145139354E-02 1.82666688916E-02 1.87303185953E-02 + 1.92057556012E-02 1.96932798807E-02 2.01931990055E-02 2.07058283340E-02 + 2.12314912031E-02 2.17705191230E-02 2.23232519769E-02 2.28900382248E-02 + 2.34712351105E-02 2.40672088744E-02 2.46783349689E-02 2.53049982793E-02 + 2.59475933483E-02 2.66065246045E-02 2.72822065956E-02 2.79750642252E-02 + 2.86855329945E-02 2.94140592468E-02 3.01611004171E-02 3.09271252851E-02 + 3.17126142317E-02 3.25180594998E-02 3.33439654579E-02 3.41908488673E-02 + 3.50592391529E-02 3.59496786759E-02 3.68627230103E-02 3.77989412211E-02 + 3.87589161448E-02 3.97432446716E-02 4.07525380293E-02 4.17874220680E-02 + 4.28485375452E-02 4.39365404113E-02 4.50521020942E-02 4.61959097830E-02 + 4.73686667102E-02 4.85710924308E-02 4.98039230989E-02 5.10679117394E-02 + 5.23638285156E-02 5.36924609898E-02 5.50546143777E-02 5.64511117937E-02 + 5.78827944877E-02 5.93505220698E-02 6.08551727235E-02 6.23976434048E-02 + 6.39788500254E-02 6.55997276185E-02 6.72612304855E-02 6.89643323207E-02 + 7.07100263124E-02 7.24993252180E-02 7.43332614098E-02 7.62128868898E-02 + 7.81392732699E-02 8.01135117141E-02 8.21367128405E-02 8.42100065781E-02 + 8.63345419759E-02 8.85114869597E-02 9.07420280319E-02 9.30273699113E-02 + 9.53687351065E-02 9.77673634188E-02 1.00224511369E-01 1.02741451544E-01 + 1.05319471853E-01 1.07959874694E-01 1.10663976015E-01 1.13433104276E-01 + 1.16268599289E-01 1.19171810943E-01 1.22144097795E-01 1.25186825528E-01 + 1.28301365258E-01 1.31489091698E-01 1.34751381141E-01 1.38089609289E-01 + 1.41505148886E-01 1.44999367167E-01 1.48573623105E-01 1.52229264438E-01 + 1.55967624479E-01 1.59790018698E-01 1.63697741047E-01 1.67692060041E-01 + 1.71774214565E-01 1.75945409414E-01 1.80206810538E-01 1.84559539991E-01 + 1.89004670578E-01 1.93543220179E-01 1.98176145748E-01 2.02904336983E-01 + 2.07728609650E-01 2.12649698557E-01 2.17668250178E-01 2.22784814922E-01 + 2.27999839034E-01 2.33313656141E-01 2.38726478441E-01 2.44238387526E-01 + 2.49849324867E-01 2.55559081955E-01 2.61367290103E-01 2.67273409954E-01 + 2.73276720677E-01 2.79376308906E-01 2.85571057427E-01 2.91859633665E-01 + 2.98240477992E-01 3.04711791917E-01 3.11271526187E-01 3.17917368887E-01 + 3.24646733562E-01 3.31456747476E-01 3.38344240046E-01 3.45305731571E-01 + 3.52337422330E-01 3.59435182159E-01 3.66594540627E-01 3.73810677921E-01 + 3.81078416582E-01 3.88392214216E-01 3.95746157355E-01 4.03133956597E-01 + 4.10548943210E-01 4.17984067366E-01 4.25431898190E-01 4.32884625797E-01 + 4.40334065531E-01 4.47771664577E-01 4.55188511153E-01 4.62575346474E-01 + 4.69922579676E-01 4.77220305895E-01 4.84458327653E-01 4.91626179742E-01 + 4.98713157729E-01 5.05708350213E-01 5.12600674930E-01 5.19378918762E-01 + 5.26031781693E-01 5.32547924663E-01 5.38916021281E-01 5.45124813243E-01 + 5.51163169264E-01 5.57020147265E-01 5.62685059444E-01 5.68147539799E-01 + 5.73397613567E-01 5.78425767918E-01 5.83223023159E-01 5.87781003571E-01 + 5.92092006861E-01 5.96149071130E-01 5.99946038063E-01 6.03477610978E-01 + 6.06739406196E-01 6.09727996101E-01 6.12440942119E-01 6.14876815754E-01 + 6.17035205734E-01 6.18916709241E-01 6.20522905166E-01 6.21856307318E-01 + 6.22920295552E-01 6.23719022841E-01 6.24257296465E-01 6.24540431642E-01 + 6.24574076213E-01 6.24364005288E-01 6.23915885165E-01 6.23235006327E-01 + 6.22325985897E-01 6.21192440569E-01 6.19836631841E-01 6.18259086167E-01 + 6.16458193651E-01 6.14429789869E-01 6.12166726542E-01 6.09661193769E-01 + 6.06914006607E-01 6.03928640875E-01 6.00708813875E-01 5.97258478955E-01 + 5.93581819813E-01 5.89683244519E-01 5.85567379288E-01 5.81239061975E-01 + 5.76703335306E-01 5.71965439814E-01 5.67030806472E-01 5.61905049061E-01 + 5.56593956208E-01 5.51103483079E-01 5.45439742717E-01 5.39608997029E-01 + 5.33617647378E-01 5.27472224793E-01 5.21179379768E-01 5.14745871662E-01 + 5.08178557684E-01 5.01484381484E-01 4.94670361357E-01 4.87743578081E-01 + 4.80704098727E-01 4.73566062897E-01 4.66336661487E-01 4.59023096049E-01 + 4.51632565418E-01 4.44172252278E-01 4.36649309766E-01 4.29070848169E-01 + 4.21443921820E-01 4.13775516274E-01 4.06072535847E-01 3.98341791607E-01 + 3.90589989902E-01 3.82823721488E-01 3.75049451342E-01 3.67273509207E-01 + 3.59502080921E-01 3.51741200588E-01 3.43996743596E-01 3.36274420516E-01 + 3.28579771900E-01 3.20918163954E-01 3.13294785095E-01 3.05714643358E-01 + 2.98182564637E-01 2.90703191707E-01 2.83280983994E-01 2.75920218045E-01 + 2.68624988627E-01 2.61399210415E-01 2.54246620193E-01 2.47170779502E-01 + 2.40175077682E-01 2.33262735214E-01 2.26436807326E-01 2.19700187754E-01 + 2.13055612639E-01 2.06505664445E-01 2.00052775872E-01 1.93699233688E-01 + 1.87447182424E-01 1.81298627887E-01 1.75255440439E-01 1.69319358010E-01 + 1.63491988801E-01 1.57774813672E-01 1.52169188174E-01 1.46676344236E-01 + 1.41297391503E-01 1.36033318330E-01 1.30884992457E-01 1.25853161385E-01 + 1.20938452505E-01 1.16141372992E-01 1.11462309553E-01 1.06901528038E-01 + 1.02459173013E-01 9.81352673175E-02 9.39297116969E-02 8.98422845432E-02 + 8.58726418199E-02 8.20203172125E-02 7.82847225590E-02 7.46651486004E-02 + 7.11607660889E-02 6.77706272825E-02 6.44936678490E-02 6.13287091921E-02 + 5.82744612084E-02 5.53295254736E-02 5.24923988515E-02 4.97614775109E-02 + 4.71350613328E-02 4.46113586817E-02 4.21884915120E-02 3.98645007781E-02 + 3.76373521109E-02 3.55049417237E-02 3.34651025087E-02 3.15156102821E-02 + 2.96541901399E-02 2.78785228815E-02 2.61862514644E-02 2.45749874502E-02 + 2.30423174060E-02 2.15858092271E-02 2.02030183472E-02 1.88914938083E-02 + 1.76487841600E-02 1.64724431655E-02 1.53600352907E-02 1.43091409568E-02 + 1.33173615398E-02 1.23823241022E-02 1.15016858448E-02 1.06731382693E-02 + 9.89441104532E-03 9.16327557547E-03 8.47754825755E-03 7.83509344202E-03 + 7.23382608649E-03 6.67171410994E-03 6.14678045135E-03 5.65710483866E-03 + 5.20082527525E-03 4.77613925251E-03 4.38130469801E-03 4.01464066943E-03 + 3.67452780564E-03 3.35940854660E-03 3.06778713440E-03 2.79822940816E-03 + 2.54936240592E-03 2.31987378656E-03 2.10851108542E-03 1.91408081658E-03 + 1.73544743547E-03 1.57153217475E-03 1.42131176650E-03 1.28381706343E-03 + 1.15813157136E-03 1.04338990510E-03 9.38776179061E-04 8.43522343826E-04 + 7.56906479139E-04 6.78251053368E-04 6.06921158816E-04 5.42322731097E-04 + 4.83900763926E-04 4.31140131239E-04 3.83584499676E-04 3.40784129660E-04 + 3.02319293962E-04 2.67801553305E-04 2.36871973370E-04 2.09199397610E-04 + 1.84478777736E-04 1.62429563630E-04 1.42794154118E-04 1.25336409722E-04 + 1.09840228203E-04 9.61081835166E-05 8.39602284560E-05 7.32324610943E-05 + 6.37759549206E-05 5.54556524024E-05 4.81480655695E-05 4.17302932693E-05 + 3.61029394988E-05 3.11775794174E-05 2.68745360627E-05 2.31221508606E-05 + 1.98561001149E-05 1.70187560798E-05 1.45585911063E-05 1.24296232665E-05 + 1.05909017844E-05 9.00603054627E-06 7.64272792030E-06 6.47242109021E-06 + 5.46987309355E-06 4.61284075442E-06 3.88176171348E-06 3.25946877815E-06 + 2.73092984888E-06 2.28301171681E-06 1.90426607606E-06 1.58473614774E-06 + 1.31578237231E-06 1.08992569066E-06 9.00707001544E-07 7.42561453161E-07 + 6.10706298197E-07 5.01041114634E-07 4.10059267714E-07 3.34769561493E-07 + 2.72627100603E-07 2.21472453909E-07 1.79478281279E-07 1.45102652347E-07 + 1.17048352010E-07 9.42275311318E-08 7.57311229081E-08 6.08025056439E-08 + 4.88149518745E-08 3.90797216350E-08 3.11962036461E-08 2.48306453803E-08 + 1.97058119161E-08 1.55921000586E-08 1.22999269913E-08 9.67323138812E-09 + 7.58394221898E-09 5.92728643012E-09 4.61782131949E-09 3.58609078857E-09 + 2.77581679537E-09 2.14154831503E-09 1.64669999994E-09 1.26192158934E-09 + 9.63747019011E-10 7.33479197030E-10 5.56272612125E-10 4.20381397422E-10 + 3.16545252021E-10 2.37489790993E-10 1.77521513184E-10 1.32200704012E-10 + 9.80782816966E-11 7.24849008323E-11 5.33625931121E-11 3.91308940669E-11 + 2.85808151284E-11 2.07912069597E-11 1.50630537442E-11 1.08680665472E-11 + 7.80863129764E-12 5.58673474159E-12 3.97995852640E-12 2.82301356584E-12 + 1.99359793866E-12 1.40161374867E-12 9.80981804324E-13 6.83456293521E-13 + 4.73972108841E-13 3.27161211450E-13 2.24756485473E-13 1.53666131908E-13 + 1.04552244799E-13 7.07866375656E-14 4.76875525287E-14 3.19644608913E-14 + 2.13162479647E-14 1.41418834782E-14 9.33315735874E-15 6.12697544988E-15 + 4.00065338842E-15 2.59808644922E-15 1.67797094618E-15 1.07768875633E-15 + 6.88255788765E-16 4.37041971524E-16 2.75919206280E-16 1.73178747761E-16 + 1.08051077849E-16 6.70120683540E-17 4.13079374072E-17 2.53068045035E-17 + 1.54074493414E-17 9.32136958597E-18 5.60337543459E-18 3.34661512918E-18 + 1.98569468013E-18 1.17039911068E-18 6.85226272933E-19 3.98451796418E-19 + 2.30102913036E-19 1.31957872816E-19 7.51410397259E-20 4.24824115765E-20 + 2.38447113446E-20 1.32857570684E-20 7.34770585299E-21 4.03318196918E-21 + 2.19701662494E-21 1.18759044665E-21 6.36950530602E-22 3.38928171491E-22 + 1.78907832058E-22 9.36757063596E-23 4.86470161993E-23 2.50537164254E-23 + 1.27946783536E-23 + + + + + 2.56076396881E-10 2.62559001963E-10 2.69205714985E-10 2.76020690361E-10 + 2.83008187673E-10 2.90172574336E-10 2.97518328324E-10 3.05050040976E-10 + 3.12772419857E-10 3.20690291707E-10 3.28808605455E-10 3.37132435312E-10 + 3.45666983945E-10 3.54417585726E-10 3.63389710067E-10 3.72588964839E-10 + 3.82021099879E-10 3.91692010580E-10 4.01607741576E-10 4.11774490526E-10 + 4.22198611980E-10 4.32886621355E-10 4.43845199008E-10 4.55081194409E-10 + 4.66601630423E-10 4.78413707701E-10 4.90524809178E-10 5.02942504690E-10 + 5.15674555704E-10 5.28728920170E-10 5.42113757494E-10 5.55837433638E-10 + 5.69908526350E-10 5.84335830527E-10 5.99128363706E-10 6.14295371707E-10 + 6.29846334408E-10 6.45790971673E-10 6.62139249423E-10 6.78901385871E-10 + 6.96087857902E-10 7.13709407627E-10 7.31777049094E-10 7.50302075175E-10 + 7.69296064621E-10 7.88770889300E-10 8.08738721620E-10 8.29212042134E-10 + 8.50203647343E-10 8.71726657692E-10 8.93794525772E-10 9.16421044730E-10 + 9.39620356886E-10 9.63406962578E-10 9.87795729219E-10 1.01280190059E-09 + 1.03844110639E-09 1.06472937195E-09 1.09168312832E-09 1.11931922249E-09 + 1.14765492792E-09 1.17670795538E-09 1.20649646397E-09 1.23703907250E-09 + 1.26835487110E-09 1.30046343320E-09 1.33338482770E-09 1.36713963158E-09 + 1.40174894271E-09 1.43723439306E-09 1.47361816222E-09 1.51092299125E-09 + 1.54917219692E-09 1.58838968625E-09 1.62859997148E-09 1.66982818539E-09 + 1.71210009698E-09 1.75544212761E-09 1.79988136750E-09 1.84544559265E-09 + 1.89216328225E-09 1.94006363640E-09 1.98917659444E-09 2.03953285361E-09 + 2.09116388826E-09 2.14410196953E-09 2.19838018550E-09 2.25403246187E-09 + 2.31109358321E-09 2.36959921462E-09 2.42958592411E-09 2.49109120539E-09 + 2.55415350135E-09 2.61881222806E-09 2.68510779939E-09 2.75308165235E-09 + 2.82277627289E-09 2.89423522252E-09 2.96750316550E-09 3.04262589681E-09 + 3.11965037071E-09 3.19862473011E-09 3.27959833670E-09 3.36262180175E-09 + 3.44774701777E-09 3.53502719093E-09 3.62451687434E-09 3.71627200212E-09 + 3.81034992440E-09 3.90680944311E-09 4.00571084879E-09 4.10711595823E-09 + 4.21108815313E-09 4.31769241973E-09 4.42699538938E-09 4.53906538025E-09 + 4.65397243999E-09 4.77178838951E-09 4.89258686791E-09 5.01644337846E-09 + 5.14343533582E-09 5.27364211443E-09 5.40714509812E-09 5.54402773094E-09 + 5.68437556940E-09 5.82827633585E-09 5.97581997339E-09 6.12709870202E-09 + 6.28220707635E-09 6.44124204466E-09 6.60430300948E-09 6.77149188976E-09 + 6.94291318458E-09 7.11867403842E-09 7.29888430816E-09 7.48365663176E-09 + 7.67310649861E-09 7.86735232179E-09 8.06651551202E-09 8.27072055360E-09 + 8.48009508217E-09 8.69476996452E-09 8.91487938037E-09 9.14056090627E-09 + 9.37195560154E-09 9.60920809650E-09 9.85246668283E-09 1.01018834063E-08 + 1.03576141616E-08 1.06198187903E-08 1.08886611802E-08 1.11643093679E-08 + 1.14469356441E-08 1.17367166611E-08 1.20338335431E-08 1.23384719997E-08 + 1.26508224417E-08 1.29710801002E-08 1.32994451488E-08 1.36361228287E-08 + 1.39813235765E-08 1.43352631564E-08 1.46981627948E-08 1.50702493183E-08 + 1.54517552960E-08 1.58429191846E-08 1.62439854773E-08 1.66552048568E-08 + 1.70768343521E-08 1.75091374990E-08 1.79523845049E-08 1.84068524174E-08 + 1.88728252982E-08 1.93505943998E-08 1.98404583481E-08 2.03427233289E-08 + 2.08577032793E-08 2.13857200839E-08 2.19271037762E-08 2.24821927444E-08 + 2.30513339437E-08 2.36348831122E-08 2.42332049943E-08 2.48466735677E-08 + 2.54756722781E-08 2.61205942782E-08 2.67818426736E-08 2.74598307750E-08 + 2.81549823565E-08 2.88677319202E-08 2.95985249681E-08 3.03478182807E-08 + 3.11160802019E-08 3.19037909326E-08 3.27114428302E-08 3.35395407168E-08 + 3.43886021944E-08 3.52591579687E-08 3.61517521810E-08 3.70669427478E-08 + 3.80053017102E-08 3.89674155909E-08 3.99538857612E-08 4.09653288171E-08 + 4.20023769640E-08 4.30656784128E-08 4.41558977846E-08 4.52737165260E-08 + 4.64198333357E-08 4.75949646007E-08 4.87998448445E-08 5.00352271859E-08 + 5.13018838102E-08 5.26006064516E-08 5.39322068886E-08 5.52975174507E-08 + 5.66973915396E-08 5.81327041619E-08 5.96043524767E-08 6.11132563562E-08 + 6.26603589609E-08 6.42466273288E-08 6.58730529808E-08 6.75406525394E-08 + 6.92504683655E-08 7.10035692091E-08 7.28010508778E-08 7.46440369220E-08 + 7.65336793371E-08 7.84711592838E-08 8.04576878266E-08 8.24945066909E-08 + 8.45828890391E-08 8.67241402671E-08 8.89195988200E-08 9.11706370289E-08 + 9.34786619691E-08 9.58451163398E-08 9.82714793661E-08 1.00759267724E-07 + 1.03310036487E-07 1.05925380103E-07 1.08606933385E-07 1.11356372537E-07 + 1.14175416203E-07 1.17065826538E-07 1.20029410314E-07 1.23068020044E-07 + 1.26183555148E-07 1.29377963133E-07 1.32653240817E-07 1.36011435573E-07 + 1.39454646611E-07 1.42985026292E-07 1.46604781472E-07 1.50316174882E-07 + 1.54121526546E-07 1.58023215225E-07 1.62023679913E-07 1.66125421355E-07 + 1.70331003618E-07 1.74643055685E-07 1.79064273109E-07 1.83597419693E-07 + 1.88245329219E-07 1.93010907221E-07 1.97897132804E-07 2.02907060504E-07 + 2.08043822199E-07 2.13310629070E-07 2.18710773607E-07 2.24247631670E-07 + 2.29924664600E-07 2.35745421384E-07 2.41713540873E-07 2.47832754061E-07 + 2.54106886420E-07 2.60539860286E-07 2.67135697320E-07 2.73898521021E-07 + 2.80832559305E-07 2.87942147151E-07 2.95231729310E-07 3.02705863092E-07 + 3.10369221210E-07 3.18226594709E-07 3.26282895958E-07 3.34543161731E-07 + 3.43012556351E-07 3.51696374925E-07 3.60600046658E-07 3.69729138249E-07 + 3.79089357373E-07 3.88686556256E-07 3.98526735335E-07 4.08616047012E-07 + 4.18960799508E-07 4.29567460810E-07 4.40442662714E-07 4.51593204985E-07 + 4.63026059604E-07 4.74748375140E-07 4.86767481217E-07 4.99090893110E-07 + 5.11726316443E-07 5.24681652017E-07 5.37965000754E-07 5.51584668772E-07 + 5.65549172583E-07 5.79867244425E-07 5.94547837732E-07 6.09600132739E-07 + 6.25033542234E-07 6.40857717447E-07 6.57082554099E-07 6.73718198601E-07 + 6.90775054404E-07 7.08263788519E-07 7.26195338201E-07 7.44580917796E-07 + 7.63432025769E-07 7.82760451910E-07 8.02578284718E-07 8.22897918976E-07 + 8.43732063521E-07 8.65093749205E-07 8.86996337064E-07 9.09453526692E-07 + 9.32479364828E-07 9.56088254159E-07 9.80294962353E-07 1.00511463132E-06 + 1.03056278668E-06 1.05665534756E-06 1.08340863651E-06 1.11083938976E-06 + 1.13896476774E-06 1.16780236583E-06 1.19737022538E-06 1.22768684506E-06 + 1.25877119245E-06 1.29064271594E-06 1.32332135693E-06 1.35682756237E-06 + 1.39118229757E-06 1.42640705936E-06 1.46252388963E-06 1.49955538910E-06 + 1.53752473157E-06 1.57645567844E-06 1.61637259366E-06 1.65730045901E-06 + 1.69926488981E-06 1.74229215104E-06 1.78640917379E-06 1.83164357222E-06 + 1.87802366094E-06 1.92557847276E-06 1.97433777699E-06 2.02433209814E-06 + 2.07559273513E-06 2.12815178097E-06 2.18204214296E-06 2.23729756340E-06 + 2.29395264081E-06 2.35204285175E-06 2.41160457311E-06 2.47267510505E-06 + 2.53529269449E-06 2.59949655918E-06 2.66532691246E-06 2.73282498856E-06 + 2.80203306860E-06 2.87299450727E-06 2.94575376017E-06 3.02035641182E-06 + 3.09684920445E-06 3.17528006750E-06 3.25569814786E-06 3.33815384090E-06 + 3.42269882232E-06 3.50938608077E-06 3.59826995133E-06 3.68940614989E-06 + 3.78285180834E-06 3.87866551070E-06 3.97690733022E-06 4.07763886734E-06 + 4.18092328874E-06 4.28682536727E-06 4.39541152305E-06 4.50674986549E-06 + 4.62091023652E-06 4.73796425481E-06 4.85798536125E-06 4.98104886552E-06 + 5.10723199390E-06 5.23661393830E-06 5.36927590658E-06 5.50530117417E-06 + 5.64477513697E-06 5.78778536570E-06 5.93442166160E-06 6.08477611365E-06 + 6.23894315713E-06 6.39701963388E-06 6.55910485397E-06 6.72530065910E-06 + 6.89571148754E-06 7.07044444082E-06 7.24960935217E-06 7.43331885669E-06 + 7.62168846338E-06 7.81483662909E-06 8.01288483430E-06 8.21595766098E-06 + 8.42418287244E-06 8.63769149529E-06 8.85661790348E-06 9.08109990469E-06 + 9.31127882881E-06 9.54729961888E-06 9.78931092435E-06 1.00374651968E-05 + 1.02919187883E-05 1.05528320520E-05 1.08203694461E-05 1.10946996394E-05 + 1.13759956211E-05 1.16644348121E-05 1.19601991805E-05 1.22634753590E-05 + 1.25744547663E-05 1.28933337312E-05 1.32203136205E-05 1.35556009697E-05 + 1.38994076177E-05 1.42519508447E-05 1.46134535142E-05 1.49841442186E-05 + 1.53642574285E-05 1.57540336460E-05 1.61537195630E-05 1.65635682226E-05 + 1.69838391852E-05 1.74147986995E-05 1.78567198779E-05 1.83098828764E-05 + 1.87745750794E-05 1.92510912902E-05 1.97397339257E-05 2.02408132171E-05 + 2.07546474157E-05 2.12815630047E-05 2.18218949163E-05 2.23759867554E-05 + 2.29441910287E-05 2.35268693807E-05 2.41243928361E-05 2.47371420484E-05 + 2.53655075563E-05 2.60098900465E-05 2.66707006237E-05 2.73483610890E-05 + 2.80433042251E-05 2.87559740900E-05 2.94868263189E-05 3.02363284342E-05 + 3.10049601652E-05 3.17932137753E-05 3.26015943999E-05 3.34306203933E-05 + 3.42808236852E-05 3.51527501477E-05 3.60469599728E-05 3.69640280606E-05 + 3.79045444187E-05 3.88691145728E-05 3.98583599900E-05 4.08729185130E-05 + 4.19134448084E-05 4.29806108269E-05 4.40751062776E-05 4.51976391155E-05 + 4.63489360445E-05 4.75297430336E-05 4.87408258498E-05 4.99829706062E-05 + 5.12569843259E-05 5.25636955234E-05 5.39039548036E-05 5.52786354776E-05 + 5.66886341982E-05 5.81348716140E-05 5.96182930436E-05 6.11398691698E-05 + 6.27005967559E-05 6.43014993826E-05 6.59436282089E-05 6.76280627553E-05 + 6.93559117124E-05 7.11283137730E-05 7.29464384919E-05 7.48114871714E-05 + 7.67246937747E-05 7.86873258687E-05 8.07006855960E-05 8.27661106781E-05 + 8.48849754503E-05 8.70586919296E-05 8.92887109180E-05 9.15765231394E-05 + 9.39236604155E-05 9.63316968780E-05 9.88022502216E-05 1.01336982998E-04 + 1.03937603951E-04 1.06605869398E-04 1.09343584657E-04 1.12152605518E-04 + 1.15034839769E-04 1.17992248765E-04 1.21026849063E-04 1.24140714099E-04 + 1.27335975929E-04 1.30614827029E-04 1.33979522156E-04 1.37432380274E-04 + 1.40975786545E-04 1.44612194388E-04 1.48344127620E-04 1.52174182654E-04 + 1.56105030796E-04 1.60139420601E-04 1.64280180337E-04 1.68530220511E-04 + 1.72892536509E-04 1.77370211317E-04 1.81966418346E-04 1.86684424357E-04 + 1.91527592498E-04 1.96499385443E-04 2.01603368660E-04 2.06843213788E-04 + 2.12222702147E-04 2.17745728377E-04 2.23416304210E-04 2.29238562395E-04 + 2.35216760756E-04 2.41355286422E-04 2.47658660200E-04 2.54131541137E-04 + 2.60778731238E-04 2.67605180377E-04 2.74615991402E-04 2.81816425433E-04 + 2.89211907368E-04 2.96808031610E-04 3.04610568022E-04 3.12625468111E-04 + 3.20858871468E-04 3.29317112461E-04 3.38006727197E-04 3.46934460771E-04 + 3.56107274805E-04 3.65532355294E-04 3.75217120778E-04 3.85169230844E-04 + 3.95396594983E-04 4.05907381818E-04 4.16710028704E-04 4.27813251742E-04 + 4.39226056209E-04 4.50957747423E-04 4.63017942075E-04 4.75416580033E-04 + 4.88163936662E-04 5.01270635657E-04 5.14747662437E-04 5.28606378110E-04 + 5.42858534048E-04 5.57516287093E-04 5.72592215419E-04 5.88099335098E-04 + 6.04051117389E-04 6.20461506784E-04 6.37344939859E-04 6.54716364955E-04 + 6.72591262739E-04 6.90985667682E-04 7.09916190495E-04 7.29400041581E-04 + 7.49455055540E-04 7.70099716780E-04 7.91353186295E-04 8.13235329662E-04 + 8.35766746312E-04 8.58968800147E-04 8.82863651557E-04 9.07474290923E-04 + 9.32824573655E-04 9.58939256864E-04 9.85844037736E-04 1.01356559369E-03 + 1.04213162443E-03 1.07157089594E-03 1.10191328656E-03 1.13318983525E-03 + 1.16543279213E-03 1.19867567137E-03 1.23295330665E-03 1.26830190924E-03 + 1.30475912883E-03 1.34236411733E-03 1.38115759563E-03 1.42118192371E-03 + 1.46248117398E-03 1.50510120825E-03 1.54908975846E-03 1.59449651120E-03 + 1.64137319647E-03 1.68977368070E-03 1.73975406432E-03 1.79137278411E-03 + 1.84469072059E-03 1.89977131061E-03 1.95668066562E-03 2.01548769563E-03 + 2.07626423938E-03 2.13908520094E-03 2.20402869307E-03 2.27117618770E-03 + 2.34061267394E-03 2.41242682391E-03 2.48671116688E-03 2.56356227213E-03 + 2.64308094094E-03 2.72537240823E-03 2.81054655435E-03 2.89871812742E-03 + 2.99000697705E-03 3.08453829966E-03 3.18244289631E-03 3.28385744352E-03 + 3.38892477779E-03 3.49779419457E-03 3.61062176233E-03 3.72757065267E-03 + 3.84881148709E-03 3.97452270146E-03 4.10489092905E-03 4.24011140304E-03 + 4.38038837948E-03 4.52593558196E-03 4.67697666881E-03 4.83374572424E-03 + 4.99648777445E-03 5.16545933025E-03 5.34092895718E-03 5.52317787490E-03 + 5.71250058712E-03 5.90920554369E-03 6.11361583648E-03 6.32606993076E-03 + 6.54692243392E-03 6.77654490330E-03 7.01532669518E-03 7.26367585700E-03 + 7.52202006494E-03 7.79080760902E-03 8.07050842827E-03 8.36161519827E-03 + 8.66464447368E-03 8.98013788845E-03 9.30866341647E-03 9.65081669564E-03 + 1.00072224183E-02 1.03785357914E-02 1.07654440691E-02 1.11686681621E-02 + 1.15889643266E-02 1.20271259368E-02 1.24839853442E-02 1.29604158291E-02 + 1.34573336463E-02 1.39757001710E-02 1.45165241482E-02 1.50808640506E-02 + 1.56698305490E-02 1.62845891001E-02 1.69263626574E-02 1.75964345086E-02 + 1.82961512450E-02 1.90269258690E-02 1.97902410433E-02 2.05876524879E-02 + 2.14207925297E-02 2.22913738108E-02 2.32011931586E-02 2.41521356258E-02 + 2.51461787024E-02 2.61853967073E-02 2.72719653620E-02 2.84081665527E-02 + 2.95963932838E-02 3.08391548284E-02 3.21390820774E-02 3.34989330921E-02 + 3.49215988626E-02 3.64101092724E-02 3.79676392738E-02 3.95975152704E-02 + 4.13032217107E-02 4.30884078871E-02 4.49568949409E-02 4.69126830671E-02 + 4.89599589145E-02 5.11031031738E-02 5.33466983432E-02 5.56955366626E-02 + 5.81546282007E-02 6.07292090802E-02 6.34247498209E-02 6.62469637807E-02 + 6.92018156671E-02 7.22955300911E-02 7.55346001307E-02 7.89257958660E-02 + 8.24761728436E-02 8.61930804247E-02 9.00841699616E-02 9.41574027462E-02 + 9.84210576644E-02 1.02883738485E-01 1.07554380704E-01 1.12442257858E-01 + 1.17556987208E-01 1.22908534701E-01 1.28507219082E-01 1.34363715041E-01 + 1.40489055273E-01 1.46894631283E-01 1.53592192815E-01 1.60593845707E-01 + 1.67912048024E-01 1.75559604268E-01 1.83549657457E-01 1.91895678886E-01 + 2.00611455320E-01 2.09711073404E-01 2.19208901027E-01 2.29119565398E-01 + 2.39457927559E-01 2.50239053054E-01 2.61478178475E-01 2.73190673594E-01 + 2.85391998782E-01 2.98097657409E-01 3.11323142936E-01 3.25083880395E-01 + 3.39395161956E-01 3.54272076317E-01 3.69729431623E-01 3.85781671674E-01 + 4.02442785199E-01 4.19726207973E-01 4.37644717637E-01 4.56210321071E-01 + 4.75434134276E-01 4.95326254717E-01 5.15895626209E-01 5.37149896440E-01 + 5.59095267375E-01 5.81736338824E-01 6.05075945592E-01 6.29114988758E-01 + 6.53852261719E-01 6.79284271801E-01 7.05405058400E-01 7.32206008725E-01 + 7.59675672451E-01 7.87799576704E-01 8.16560043029E-01 8.45936008151E-01 + 8.75902850564E-01 9.06432225132E-01 9.37491908124E-01 9.69045655266E-01 + 1.00105307556E+00 1.03346952383E+00 1.06624601501E+00 1.09932916342E+00 + 1.13266115031E+00 1.16617972295E+00 1.19981822867E+00 1.23350568714E+00 + 1.26716690408E+00 1.30072262949E+00 1.33408976316E+00 1.36718161010E+00 + 1.39990818776E+00 1.43217658697E+00 1.46389138747E+00 1.49495512847E+00 + 1.52526883383E+00 1.55473259075E+00 1.58324617964E+00 1.61070975194E+00 + 1.63702455168E+00 1.66209367512E+00 1.68582286178E+00 1.70812130885E+00 + 1.72890249976E+00 1.74808503632E+00 1.76559346290E+00 1.78135906976E+00 + 1.79532066197E+00 1.80742527917E+00 1.81762885121E+00 1.82589677410E+00 + 1.83220439052E+00 1.83653735972E+00 1.83889190158E+00 1.83927490107E+00 + 1.83770386016E+00 1.83420668601E+00 1.82882130631E+00 1.82159510474E+00 + 1.81258417245E+00 1.80185237411E+00 1.78947023059E+00 1.77551362339E+00 + 1.76006232986E+00 1.74319840171E+00 1.72500440317E+00 1.70556152905E+00 + 1.68494762687E+00 1.66323515129E+00 1.64048908303E+00 1.61676484924E+00 + 1.59210628653E+00 1.56654369315E+00 1.54009202263E+00 1.51276307399E+00 + 1.48461210770E+00 1.45570720930E+00 1.42611684688E+00 1.39590962886E+00 + 1.36515406729E+00 1.33391834795E+00 1.30227010785E+00 1.27027622119E+00 + 1.23800259438E+00 1.20549931439E+00 1.17284481272E+00 1.14010097869E+00 + 1.10732801569E+00 1.07458429027E+00 1.04192619331E+00 1.00940801350E+00 + 9.77081823229E-01 9.44997377034E-01 9.13202022749E-01 8.81740625256E-01 + 8.50655502881E-01 8.19986376335E-01 7.89770330069E-01 7.60041785886E-01 + 7.30819246979E-01 7.02145252507E-01 6.74046209363E-01 6.46545872679E-01 + 6.19665376457E-01 5.93423274449E-01 5.67835590777E-01 5.42915879737E-01 + 5.18675294177E-01 4.95122661805E-01 4.72264568719E-01 4.50105449447E-01 + 4.28647682712E-01 4.07891692137E-01 3.87836051086E-01 3.68477590809E-01 + 3.49811511079E-01 3.31831492500E-01 3.14529809701E-01 2.97897444627E-01 + 2.81924199210E-01 2.66598806709E-01 2.51909041081E-01 2.37841823780E-01 + 2.24383327455E-01 2.11519076064E-01 1.99234040992E-01 1.87512732819E-01 + 1.76339288464E-01 1.65697553455E-01 1.55571159183E-01 1.45943595017E-01 + 1.36798275236E-01 1.28118600765E-01 1.19888015764E-01 1.12090059150E-01 + 1.04708411180E-01 9.77269352405E-02 9.11297150396E-02 8.49010873945E-02 + 7.90256708525E-02 7.34883903837E-02 6.82744983990E-02 6.33695923569E-02 + 5.87596292241E-02 5.44309370567E-02 5.03702239657E-02 4.65645847257E-02 + 4.30015052782E-02 3.96688653676E-02 3.65549395384E-02 3.36483967061E-02 + 3.09382984986E-02 2.84140965471E-02 2.60656288894E-02 2.38831156281E-02 + 2.18571539699E-02 1.99787127534E-02 1.82391265559E-02 1.66300894534E-02 + 1.51436484949E-02 1.37721969350E-02 1.25084672621E-02 1.13455240457E-02 + 1.02767566203E-02 9.29587161604E-03 8.39688534185E-03 7.57411602492E-03 + 6.82217590632E-03 6.13596319440E-03 5.51065387724E-03 4.94169339697E-03 + 4.42478819121E-03 3.95589710923E-03 3.53122271349E-03 3.14720247998E-03 + 2.80049991382E-03 2.48799559925E-03 2.20677820551E-03 1.95413547220E-03 + 1.72754519947E-03 1.52466626933E-03 1.34332972524E-03 1.18152993751E-03 + 1.03741588141E-03 9.09282554724E-04 7.95562560062E-04 6.94817876113E-04 + 6.05731840125E-04 5.27101362091E-04 4.57829388903E-04 3.96917634458E-04 + 3.43459589310E-04 2.96633820998E-04 2.55697573753E-04 2.19980673851E-04 + 1.88879744525E-04 1.61852732112E-04 1.38413742967E-04 1.18128188696E-04 + 1.00608235453E-04 8.55085513732E-05 7.25223447724E-05 6.13776844414E-05 + 5.18340922867E-05 4.36793976412E-05 3.67268418430E-05 3.08124211100E-05 + 2.57924553408E-05 2.15413702116E-05 1.79496798290E-05 1.49221572066E-05 + 1.23761799560E-05 1.02402388036E-05 8.45259685540E-06 6.96008790756E-06 + 5.71704254497E-06 4.68433125847E-06 3.82851433738E-06 3.12108884848E-06 + 2.53782358370E-06 2.05817343936E-06 1.66476527182E-06 1.34294785130E-06 + 1.08039910201E-06 8.66784366668E-07 6.93459964921E-07 5.53216821480E-07 + 4.40059431015E-07 3.49020088464E-07 2.76023538577E-07 2.17665095730E-07 + 1.71144627454E-07 1.34169713079E-07 1.04869114070E-07 8.17199477731E-08 + 6.34865814738E-08 4.91695191599E-08 3.79627807816E-08 2.92184756590E-08 + 2.24174502131E-08 1.71450475462E-08 1.30711544549E-08 9.93383224585E-09 + 7.52593292767E-09 5.68419365742E-09 4.28015793711E-09 3.21161852928E-09 + 2.40114944011E-09 1.78865160887E-09 1.32746679866E-09 9.81505372214E-10 + 7.22956729449E-10 5.30471174250E-10 3.87721716773E-10 2.82270860594E-10 + 2.04681228575E-10 1.47820350648E-10 1.06319424020E-10 7.61536694613E-11 + 5.43183131455E-11 3.85794519092E-11 2.72833079304E-11 1.92108147050E-11 + 1.34672424200E-11 9.39878754640E-12 6.52981955289E-12 4.51588123566E-12 + 3.10864809623E-12 2.12992412740E-12 1.45243362091E-12 9.85699833217E-13 + 6.65712932526E-13 4.47406941255E-13 2.99208772630E-13 1.99108182998E-13 + 1.31838467878E-13 8.68642251484E-14 5.69525183021E-14 3.71635648485E-14 + 2.41415188952E-14 1.56187737195E-14 1.00713677906E-14 6.48074135930E-15 + 4.16993414550E-15 2.66783258539E-15 1.69699929659E-15 1.07316602913E-15 + 6.74656006599E-16 4.21595279878E-16 2.61863042632E-16 1.61653322857E-16 + 9.91729970197E-17 6.04597867862E-17 3.66243331146E-17 2.20428586903E-17 + 1.31803178150E-17 7.82902855973E-18 4.61931635392E-18 2.70706521242E-18 + 1.57555584900E-18 9.10637187286E-19 5.22631287416E-19 2.97814161654E-19 + 1.68483039664E-19 9.46211959854E-20 5.27475238667E-20 2.91847931070E-20 + 1.60254799743E-20 8.73220313898E-21 4.72120569461E-21 2.53253667524E-21 + 1.34768743562E-21 7.11392978912E-22 3.72454069408E-22 1.93389934357E-22 + 9.95743953274E-23 5.08356365005E-23 2.57305552911E-23 1.29105071475E-23 + 6.42100561779E-24 3.16504694022E-24 1.54605794320E-24 7.48325279004E-25 + 3.58859143475E-25 1.70480946386E-25 8.02221974424E-26 3.73876469604E-26 + 1.72553562035E-26 7.88548886700E-27 3.56769916233E-27 1.59789438850E-27 + 7.08358000307E-28 3.10775211047E-28 1.34918658943E-28 5.79525126467E-29 + 2.46257202362E-29 1.03505422850E-29 4.30264081587E-30 1.76866056156E-30 + 7.18836507576E-31 2.88821852228E-31 1.14704785635E-31 4.50216159590E-32 + 1.74616131097E-32 6.69123471759E-33 2.53291635726E-33 9.47024784865E-34 + 3.49671426948E-34 1.27481977547E-34 4.58836505440E-35 1.63011209343E-35 + 5.71552640233E-36 1.97743534745E-36 6.74967356534E-37 2.27260456612E-37 + 7.54659235767E-38 2.47108771504E-38 7.97735789129E-39 2.53855199594E-39 + 7.96142070749E-40 2.46032835995E-40 7.49053819428E-41 2.24630578265E-41 + 6.63403952403E-42 1.92910980241E-42 5.52231136175E-43 1.55590884609E-43 + 4.31379915187E-44 1.17668522909E-44 3.15715778858E-45 8.33062821998E-46 + 2.16129196984E-46 + + + + +3S 1 0 0.50 2.00 +3P 2 1 0.50 2.00 +3P 2 1 1.50 0.00 + 0 0.50 + 1 0.50 + 1 1.50 + -7.00000000 100.00000000 14.00000000 0.01250000 + diff --git a/source/module_elecstate/elecstate_print.cpp b/source/module_elecstate/elecstate_print.cpp index fdca966ea6..8fda5ae253 100644 --- a/source/module_elecstate/elecstate_print.cpp +++ b/source/module_elecstate/elecstate_print.cpp @@ -58,7 +58,8 @@ void print_scf_iterinfo(const std::string& ks_solver, {"scalapack_gvx", "GV"}, {"cusolver", "CU"}, {"bpcg", "BP"}, - {"pexsi", "PE"}}; // I change the key of "cg_in_lcao" to "CG" because all the other are only two letters + {"pexsi", "PE"}, + {"cusolvermp", "CM"}}; // I change the key of "cg_in_lcao" to "CG" because all the other are only two letters // ITER column std::vector th_fmt = {" %-" + std::to_string(witer) + "s"}; // table header: th: ITER std::vector td_fmt @@ -477,4 +478,4 @@ void ElecState::print_format(const std::string& name, const double& value) GlobalV::ofs_running << std::resetiosflags(std::ios::showpos); return; } -} // namespace elecstate \ No newline at end of file +} // namespace elecstate diff --git a/source/module_elecstate/module_charge/charge_mixing.cpp b/source/module_elecstate/module_charge/charge_mixing.cpp index 5bc3188190..5a08ee144e 100644 --- a/source/module_elecstate/module_charge/charge_mixing.cpp +++ b/source/module_elecstate/module_charge/charge_mixing.cpp @@ -193,7 +193,6 @@ void Charge_Mixing::mix_reset() bool Charge_Mixing::if_scf_oscillate(const int iteration, const double drho, const int iternum_used, const double threshold) { ModuleBase::TITLE("Charge_Mixing", "if_scf_oscillate"); - ModuleBase::timer::tick("Charge_Mixing", "if_scf_oscillate"); if(this->_drho_history.size() == 0) { @@ -241,7 +240,4 @@ bool Charge_Mixing::if_scf_oscillate(const int iteration, const double drho, con } return false; - - ModuleBase::timer::tick("Charge_Mixing", "if_scf_oscillate"); - } \ No newline at end of file diff --git a/source/module_elecstate/module_dm/density_matrix.cpp b/source/module_elecstate/module_dm/density_matrix.cpp index 56475e6840..4521071d65 100644 --- a/source/module_elecstate/module_dm/density_matrix.cpp +++ b/source/module_elecstate/module_dm/density_matrix.cpp @@ -64,24 +64,27 @@ void DensityMatrix, double>::cal_DMR(const int ik_in) ModuleBase::timer::tick("DensityMatrix", "cal_DMR"); int ld_hk = this->_paraV->nrow; - int ld_hk2 = 2 * ld_hk; for (int is = 1; is <= this->_nspin; ++is) { int ik_begin = this->_nk * (is - 1); // jump this->_nk for spin_down if nspin==2 - hamilt::HContainer* tmp_DMR = this->_DMR[is - 1]; + hamilt::HContainer* target_DMR = this->_DMR[is - 1]; // set zero since this function is called in every scf step - tmp_DMR->set_zero(); + target_DMR->set_zero(); #ifdef _OPENMP -#pragma omp parallel for +#pragma omp parallel for schedule(dynamic) #endif - for (int i = 0; i < tmp_DMR->size_atom_pairs(); ++i) + for (int i = 0; i < target_DMR->size_atom_pairs(); ++i) { - hamilt::AtomPair& tmp_ap = tmp_DMR->get_atom_pair(i); - int iat1 = tmp_ap.get_atom_i(); - int iat2 = tmp_ap.get_atom_j(); + hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); + int iat1 = target_ap.get_atom_i(); + int iat2 = target_ap.get_atom_j(); // get global indexes of whole matrix for each atom in this process int row_ap = this->_paraV->atom_begin_row[iat1]; int col_ap = this->_paraV->atom_begin_col[iat2]; + const int row_size = this->_paraV->get_row_size(iat1); + const int col_size = this->_paraV->get_col_size(iat2); + const int mat_size = row_size * col_size; + const int r_size = target_ap.get_R_size(); if (row_ap == -1 || col_ap == -1) { throw std::string("Atom-pair not belong this process"); @@ -89,131 +92,126 @@ void DensityMatrix, double>::cal_DMR(const int ik_in) std::vector> tmp_DMR; if (PARAM.inp.nspin == 4) { - tmp_DMR.resize(tmp_ap.get_size()); + tmp_DMR.resize(mat_size * r_size, 0); } - for (int ir = 0; ir < tmp_ap.get_R_size(); ++ir) + + // calculate kphase and target_mat_ptr + std::vector> kphase_vec(r_size * this->_nk); + std::vector target_DMR_mat_vec(r_size); + for(int ir = 0; ir < r_size; ++ir) { - const ModuleBase::Vector3 r_index = tmp_ap.get_R_index(ir); - hamilt::BaseMatrix* tmp_matrix = tmp_ap.find_matrix(r_index); + const ModuleBase::Vector3 r_index = target_ap.get_R_index(ir); + hamilt::BaseMatrix* target_mat = target_ap.find_matrix(r_index); #ifdef __DEBUG - if (tmp_matrix == nullptr) + if (target_mat == nullptr) { - std::cout << "tmp_matrix is nullptr" << std::endl; + std::cout << "target_mat is nullptr" << std::endl; continue; } #endif - // loop over k-points - if (PARAM.inp.nspin != 4) + target_DMR_mat_vec[ir] = target_mat->get_pointer(); + for(int ik = 0; ik < this->_nk; ++ik) + { + if(ik_in >= 0 && ik_in != ik) + { + continue; + } + // cal k_phase + // if TK==std::complex, kphase is e^{ikR} + const ModuleBase::Vector3 dR(r_index[0], r_index[1], r_index[2]); + const double arg = (this->_kvec_d[ik] * dR) * ModuleBase::TWO_PI; + double sinp, cosp; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + kphase_vec[ik * r_size + ir] = std::complex(cosp, sinp); + } + } + + std::vector> tmp_DMK_mat(mat_size); + // step_trace = 0 for NSPIN=1,2; ={0, 1, local_col, local_col+1} for NSPIN=4 + // step_trace is used when nspin = 4; + int step_trace[4]{}; + if(PARAM.inp.nspin == 4) + { + const int npol = 2; + for (int is = 0; is < npol; is++) { - for (int ik = 0; ik < this->_nk; ++ik) + for (int is2 = 0; is2 < npol; is2++) { - if(ik_in >= 0 && ik_in != ik) { continue; -} - // cal k_phase - // if TK==std::complex, kphase is e^{ikR} - const ModuleBase::Vector3 dR(r_index[0], r_index[1], r_index[2]); - const double arg = (this->_kvec_d[ik] * dR) * ModuleBase::TWO_PI; - double sinp, cosp; - ModuleBase::libm::sincos(arg, &sinp, &cosp); - std::complex kphase = std::complex(cosp, sinp); - // set DMR element - double* tmp_DMR_pointer = tmp_matrix->get_pointer(); - std::complex* tmp_DMK_pointer = this->_DMK[ik + ik_begin].data(); - double* DMK_real_pointer = nullptr; - double* DMK_imag_pointer = nullptr; - // jump DMK to fill DMR - // DMR is row-major, DMK is column-major - tmp_DMK_pointer += col_ap * this->_paraV->nrow + row_ap; - for (int mu = 0; mu < this->_paraV->get_row_size(iat1); ++mu) - { - DMK_real_pointer = (double*)tmp_DMK_pointer; - DMK_imag_pointer = DMK_real_pointer + 1; - BlasConnector::axpy(this->_paraV->get_col_size(iat2), - kphase.real(), - DMK_real_pointer, - ld_hk2, - tmp_DMR_pointer, - 1); - // "-" since i^2 = -1 - BlasConnector::axpy(this->_paraV->get_col_size(iat2), - -kphase.imag(), - DMK_imag_pointer, - ld_hk2, - tmp_DMR_pointer, - 1); - tmp_DMK_pointer += 1; - tmp_DMR_pointer += this->_paraV->get_col_size(iat2); - } + step_trace[is * npol + is2] = target_ap.get_col_size() * is + is2; } } + } + for(int ik = 0; ik < this->_nk; ++ik) + { + if(ik_in >= 0 && ik_in != ik) + { + continue; + } - // treat DMR as pauli matrix when NSPIN=4 - if (PARAM.inp.nspin == 4) + // copy column-major DMK to row-major tmp_DMK_mat (for the purpose of computational efficiency) + const std::complex* DMK_mat_ptr = this->_DMK[ik + ik_begin].data() + col_ap * this->_paraV->nrow + row_ap; + for(int icol = 0; icol < col_size; ++icol) { - tmp_DMR.assign(tmp_ap.get_size(), std::complex(0.0, 0.0)); - for (int ik = 0; ik < this->_nk; ++ik) + for(int irow = 0; irow < row_size; ++irow) { - if(ik_in >= 0 && ik_in != ik) { continue; -} - // cal k_phase - // if TK==std::complex, kphase is e^{ikR} - const ModuleBase::Vector3 dR(r_index[0], r_index[1], r_index[2]); - const double arg = (this->_kvec_d[ik] * dR) * ModuleBase::TWO_PI; - double sinp, cosp; - ModuleBase::libm::sincos(arg, &sinp, &cosp); - std::complex kphase = std::complex(cosp, sinp); - // set DMR element - std::complex* tmp_DMR_pointer = tmp_DMR.data(); - std::complex* tmp_DMK_pointer = this->_DMK[ik + ik_begin].data(); - double* DMK_real_pointer = nullptr; - double* DMK_imag_pointer = nullptr; - // jump DMK to fill DMR - // DMR is row-major, DMK is column-major - tmp_DMK_pointer += col_ap * this->_paraV->nrow + row_ap; - for (int mu = 0; mu < tmp_ap.get_row_size(); ++mu) - { - BlasConnector::axpy(tmp_ap.get_col_size(), - kphase, - tmp_DMK_pointer, - ld_hk, - tmp_DMR_pointer, - 1); - tmp_DMK_pointer += 1; - tmp_DMR_pointer += tmp_ap.get_col_size(); - } + tmp_DMK_mat[irow * col_size + icol] = DMK_mat_ptr[icol * ld_hk + irow]; } - int npol = 2; - // step_trace = 0 for NSPIN=1,2; ={0, 1, local_col, local_col+1} for NSPIN=4 - int step_trace[4]; - for (int is = 0; is < npol; is++) + } + + // if nspin != 4, fill DMR + // if nspin == 4, fill tmp_DMR + for(int ir = 0; ir < r_size; ++ir) + { + std::complex kphase = kphase_vec[ik * r_size + ir]; + if(PARAM.inp.nspin != 4) { - for (int is2 = 0; is2 < npol; is2++) + double* target_DMR_mat = target_DMR_mat_vec[ir]; + for(int i = 0; i < mat_size; i++) { - step_trace[is * npol + is2] = tmp_ap.get_col_size() * is + is2; + target_DMR_mat[i] += kphase.real() * tmp_DMK_mat[i].real() + - kphase.imag() * tmp_DMK_mat[i].imag(); } + } else if(PARAM.inp.nspin == 4) + { + std::complex* tmp_DMR_mat = &tmp_DMR[ir * mat_size]; + BlasConnector::axpy(mat_size, + kphase, + tmp_DMK_mat.data(), + 1, + tmp_DMR_mat, + 1); } - std::complex tmp[4]; - double* target_DMR = tmp_matrix->get_pointer(); - std::complex* tmp_DMR_pointer = tmp_DMR.data(); - for (int irow = 0; irow < tmp_ap.get_row_size(); irow += 2) + } + } + + // if nspin == 4 + // copy tmp_DMR to fill target_DMR + if(PARAM.inp.nspin == 4) + { + std::complex tmp[4]{}; + for(int ir = 0; ir < r_size; ++ir) + { + std::complex* tmp_DMR_mat = &tmp_DMR[ir * mat_size]; + double* target_DMR_mat = target_DMR_mat_vec[ir]; + for (int irow = 0; irow < row_size; irow += 2) { - for (int icol = 0; icol < tmp_ap.get_col_size(); icol += 2) + for (int icol = 0; icol < col_size; icol += 2) { // catch the 4 spin component value of one orbital pair - tmp[0] = tmp_DMR_pointer[icol + step_trace[0]]; - tmp[1] = tmp_DMR_pointer[icol + step_trace[1]]; - tmp[2] = tmp_DMR_pointer[icol + step_trace[2]]; - tmp[3] = tmp_DMR_pointer[icol + step_trace[3]]; + tmp[0] = tmp_DMR_mat[icol + step_trace[0]]; + tmp[1] = tmp_DMR_mat[icol + step_trace[1]]; + tmp[2] = tmp_DMR_mat[icol + step_trace[2]]; + tmp[3] = tmp_DMR_mat[icol + step_trace[3]]; // transfer to Pauli matrix and save the real part - // save them back to the tmp_matrix - target_DMR[icol + step_trace[0]] = tmp[0].real() + tmp[3].real(); - target_DMR[icol + step_trace[1]] = tmp[1].real() + tmp[2].real(); - target_DMR[icol + step_trace[2]] + // save them back to the target_mat + target_DMR_mat[icol + step_trace[0]] = tmp[0].real() + tmp[3].real(); + target_DMR_mat[icol + step_trace[1]] = tmp[1].real() + tmp[2].real(); + target_DMR_mat[icol + step_trace[2]] = -tmp[1].imag() + tmp[2].imag(); // (i * (rho_updown - rho_downup)).real() - target_DMR[icol + step_trace[3]] = tmp[0].real() - tmp[3].real(); + target_DMR_mat[icol + step_trace[3]] = tmp[0].real() - tmp[3].real(); } - tmp_DMR_pointer += tmp_ap.get_col_size() * 2; - target_DMR += tmp_ap.get_col_size() * 2; + tmp_DMR_mat += col_size * 2; + target_DMR_mat += col_size * 2; } } } @@ -232,35 +230,41 @@ void DensityMatrix, double>::cal_DMR_full(hamilt::HContaine ModuleBase::timer::tick("DensityMatrix", "cal_DMR_full"); int ld_hk = this->_paraV->nrow; - int ld_hk2 = 2 * ld_hk; - hamilt::HContainer>* tmp_DMR = dmR_out; + hamilt::HContainer>* target_DMR = dmR_out; // set zero since this function is called in every scf step - tmp_DMR->set_zero(); + target_DMR->set_zero(); #ifdef _OPENMP -#pragma omp parallel for +#pragma omp parallel for schedule(dynamic) #endif - for (int i = 0; i < tmp_DMR->size_atom_pairs(); ++i) + for (int i = 0; i < target_DMR->size_atom_pairs(); ++i) { - auto& tmp_ap = tmp_DMR->get_atom_pair(i); - int iat1 = tmp_ap.get_atom_i(); - int iat2 = tmp_ap.get_atom_j(); + auto& target_ap = target_DMR->get_atom_pair(i); + int iat1 = target_ap.get_atom_i(); + int iat2 = target_ap.get_atom_j(); // get global indexes of whole matrix for each atom in this process int row_ap = this->_paraV->atom_begin_row[iat1]; int col_ap = this->_paraV->atom_begin_col[iat2]; - for (int ir = 0; ir < tmp_ap.get_R_size(); ++ir) + const int row_size = this->_paraV->get_row_size(iat1); + const int col_size = this->_paraV->get_col_size(iat2); + const int mat_size = row_size * col_size; + const int r_size = target_ap.get_R_size(); + + // calculate kphase and target_mat_ptr + std::vector> kphase_vec(r_size * this->_nk); + std::vector*> target_DMR_mat_vec(r_size); + for(int ir = 0; ir < r_size; ++ir) { - const ModuleBase::Vector3 r_index = tmp_ap.get_R_index(ir); - auto* tmp_matrix = tmp_ap.find_matrix(r_index); + const ModuleBase::Vector3 r_index = target_ap.get_R_index(ir); + hamilt::BaseMatrix>* target_mat = target_ap.find_matrix(r_index); #ifdef __DEBUG - if (tmp_matrix == nullptr) + if (target_mat == nullptr) { - std::cout << "tmp_matrix is nullptr" << std::endl; + std::cout << "target_mat is nullptr" << std::endl; continue; } #endif - // loop over k-points - // calculate full matrix for complex density matrix - for (int ik = 0; ik < this->_nk; ++ik) + target_DMR_mat_vec[ir] = target_mat->get_pointer(); + for(int ik = 0; ik < this->_nk; ++ik) { // cal k_phase // if TK==std::complex, kphase is e^{ikR} @@ -268,27 +272,34 @@ void DensityMatrix, double>::cal_DMR_full(hamilt::HContaine const double arg = (this->_kvec_d[ik] * dR) * ModuleBase::TWO_PI; double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); - std::complex kphase = std::complex(cosp, sinp); - // set DMR element - std::complex* tmp_DMR_pointer = tmp_matrix->get_pointer(); - const std::complex* tmp_DMK_pointer = this->_DMK[ik].data(); - double* DMK_real_pointer = nullptr; - double* DMK_imag_pointer = nullptr; - // jump DMK to fill DMR - // DMR is row-major, DMK is column-major - tmp_DMK_pointer += col_ap * this->_paraV->nrow + row_ap; - for (int mu = 0; mu < this->_paraV->get_row_size(iat1); ++mu) + kphase_vec[ik * r_size + ir] = std::complex(cosp, sinp); + } + } + + std::vector> tmp_DMK_mat(mat_size); + for(int ik = 0; ik < this->_nk; ++ik) + { + // copy column-major DMK to row-major tmp_DMK_mat (for the purpose of computational efficiency) + const std::complex* DMK_mat_ptr = this->_DMK[ik].data() + col_ap * this->_paraV->nrow + row_ap; + for(int icol = 0; icol < col_size; ++icol) + { + for(int irow = 0; irow < row_size; ++irow) { - BlasConnector::axpy(this->_paraV->get_col_size(iat2), - kphase, - tmp_DMK_pointer, - ld_hk, - tmp_DMR_pointer, - 1); - tmp_DMK_pointer += 1; - tmp_DMR_pointer += this->_paraV->get_col_size(iat2); + tmp_DMK_mat[irow * col_size + icol] = DMK_mat_ptr[icol * ld_hk + irow]; } } + + for(int ir = 0; ir < r_size; ++ir) + { + std::complex kphase = kphase_vec[ik * r_size + ir]; + std::complex* target_DMR_mat = target_DMR_mat_vec[ir]; + BlasConnector::axpy(mat_size, + kphase, + tmp_DMK_mat.data(), + 1, + target_DMR_mat, + 1); + } } } ModuleBase::timer::tick("DensityMatrix", "cal_DMR_full"); @@ -312,60 +323,63 @@ void DensityMatrix::cal_DMR(const int ik_in) for (int is = 1; is <= this->_nspin; ++is) { int ik_begin = this->_nk * (is - 1); // jump this->_nk for spin_down if nspin==2 - hamilt::HContainer* tmp_DMR = this->_DMR[is - 1]; + hamilt::HContainer* target_DMR = this->_DMR[is - 1]; // set zero since this function is called in every scf step - tmp_DMR->set_zero(); + target_DMR->set_zero(); #ifdef __DEBUG - // assert(tmp_DMR->is_gamma_only() == true); + // assert(target_DMR->is_gamma_only() == true); assert(this->_nk == 1); #endif #ifdef _OPENMP -#pragma omp parallel for +#pragma omp parallel for schedule(dynamic) #endif - for (int i = 0; i < tmp_DMR->size_atom_pairs(); ++i) + for (int i = 0; i < target_DMR->size_atom_pairs(); ++i) { - hamilt::AtomPair& tmp_ap = tmp_DMR->get_atom_pair(i); - int iat1 = tmp_ap.get_atom_i(); - int iat2 = tmp_ap.get_atom_j(); + hamilt::AtomPair& target_ap = target_DMR->get_atom_pair(i); + int iat1 = target_ap.get_atom_i(); + int iat2 = target_ap.get_atom_j(); // get global indexes of whole matrix for each atom in this process int row_ap = this->_paraV->atom_begin_row[iat1]; int col_ap = this->_paraV->atom_begin_col[iat2]; + const int row_size = this->_paraV->get_row_size(iat1); + const int col_size = this->_paraV->get_col_size(iat2); + const int r_size = target_ap.get_R_size(); if (row_ap == -1 || col_ap == -1) { throw std::string("Atom-pair not belong this process"); } // R index - const ModuleBase::Vector3 r_index = tmp_ap.get_R_index(0); + const ModuleBase::Vector3 r_index = target_ap.get_R_index(0); #ifdef __DEBUG - assert(tmp_ap.get_R_size() == 1); + assert(r_size == 1); assert(r_index.x == 0 && r_index.y == 0 && r_index.z == 0); #endif - hamilt::BaseMatrix* tmp_matrix = tmp_ap.find_matrix(r_index); + hamilt::BaseMatrix* target_mat = target_ap.find_matrix(r_index); #ifdef __DEBUG - if (tmp_matrix == nullptr) + if (target_mat == nullptr) { - std::cout << "tmp_matrix is nullptr" << std::endl; + std::cout << "target_mat is nullptr" << std::endl; continue; } #endif // k index double kphase = 1; // set DMR element - double* tmp_DMR_pointer = tmp_matrix->get_pointer(); - double* tmp_DMK_pointer = this->_DMK[0 + ik_begin].data(); + double* target_DMR_ptr = target_mat->get_pointer(); + double* DMK_ptr = this->_DMK[0 + ik_begin].data(); // transpose DMK col=>row - tmp_DMK_pointer += col_ap * this->_paraV->nrow + row_ap; - for (int mu = 0; mu < this->_paraV->get_row_size(iat1); ++mu) + DMK_ptr += col_ap * this->_paraV->nrow + row_ap; + for (int mu = 0; mu < row_size; ++mu) { - BlasConnector::axpy(this->_paraV->get_col_size(iat2), + BlasConnector::axpy(col_size, kphase, - tmp_DMK_pointer, + DMK_ptr, ld_hk, - tmp_DMR_pointer, + target_DMR_ptr, 1); - tmp_DMK_pointer += 1; - tmp_DMR_pointer += this->_paraV->get_col_size(iat2); + DMK_ptr += 1; + target_DMR_ptr += col_size; } } } diff --git a/source/module_esolver/esolver_ks.cpp b/source/module_esolver/esolver_ks.cpp index 3f97814ca2..5a8ec9a4d8 100644 --- a/source/module_esolver/esolver_ks.cpp +++ b/source/module_esolver/esolver_ks.cpp @@ -94,21 +94,6 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para //! 1) initialize "before_all_runniers" in ESolver_FP ESolver_FP::before_all_runners(ucell, inp); - //! 2) setup the charge mixing parameters - p_chgmix->set_mixing(PARAM.inp.mixing_mode, - PARAM.inp.mixing_beta, - PARAM.inp.mixing_ndim, - PARAM.inp.mixing_gg0, - PARAM.inp.mixing_tau, - PARAM.inp.mixing_beta_mag, - PARAM.inp.mixing_gg0_mag, - PARAM.inp.mixing_gg0_min, - PARAM.inp.mixing_angle, - PARAM.inp.mixing_dmr, - ucell.omega, - ucell.tpiba); - p_chgmix->init_mixing(); - /// PAW Section #ifdef USE_PAW if (PARAM.inp.use_paw) @@ -189,7 +174,7 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para #endif /// End PAW - //! 4) it has been established that + //! 3) it has been established that // xc_func is same for all elements, therefore // only the first one if used if (PARAM.inp.use_paw) @@ -202,6 +187,21 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para } ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SETUP UNITCELL"); + //! 4) setup the charge mixing parameters + p_chgmix->set_mixing(PARAM.inp.mixing_mode, + PARAM.inp.mixing_beta, + PARAM.inp.mixing_ndim, + PARAM.inp.mixing_gg0, + PARAM.inp.mixing_tau, + PARAM.inp.mixing_beta_mag, + PARAM.inp.mixing_gg0_mag, + PARAM.inp.mixing_gg0_min, + PARAM.inp.mixing_angle, + PARAM.inp.mixing_dmr, + ucell.omega, + ucell.tpiba); + p_chgmix->init_mixing(); + //! 5) ESolver depends on the Symmetry module // symmetry analysis should be performed every time the cell is changed if (ModuleSymmetry::Symmetry::symm_flag == 1) diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index 3ee810abc0..2281d799a9 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -175,7 +175,11 @@ void ESolver_KS_LCAO::before_all_runners(UnitCell& ucell, const Input_pa { if (GlobalC::exx_info.info_global.cal_exx) { - XC_Functional::set_xc_first_loop(ucell); + if (PARAM.inp.init_wfc != "file") + { // if init_wfc==file, directly enter the EXX loop + XC_Functional::set_xc_first_loop(ucell); + } + // initialize 2-center radial tables for EXX-LRI if (GlobalC::exx_info.info_ri.real_number) { @@ -581,7 +585,17 @@ void ESolver_KS_LCAO::iter_init(UnitCell& ucell, const int istep, const // electrons number. if (istep == 0 && PARAM.inp.init_wfc == "file") { - if (iter == 1) + int exx_two_level_step = 0; +#ifdef __EXX + if (GlobalC::exx_info.info_global.cal_exx) + { + // the following steps are only needed in the first outer exx loop + exx_two_level_step = GlobalC::exx_info.info_ri.real_number ? + this->exd->two_level_step + : this->exc->two_level_step; + } +#endif + if (iter == 1 && exx_two_level_step == 0) { std::cout << " WAVEFUN -> CHARGE " << std::endl; diff --git a/source/module_hamilt_general/module_vdw/test/vdw_test.cpp b/source/module_hamilt_general/module_vdw/test/vdw_test.cpp index 8b4bf62aae..ed5483b40c 100644 --- a/source/module_hamilt_general/module_vdw/test/vdw_test.cpp +++ b/source/module_hamilt_general/module_vdw/test/vdw_test.cpp @@ -377,7 +377,7 @@ class vdwd3Test: public testing::Test TEST_F(vdwd3Test, D30Default) { vdw::Vdwd3 vdwd3_test(ucell); - vdwd3_test.parameter().initial_parameters(input); + vdwd3_test.parameter().initial_parameters("pbe", input); EXPECT_EQ(vdwd3_test.parameter().s6(), 1.0); EXPECT_EQ(vdwd3_test.parameter().s18(), 0.7875); @@ -396,7 +396,8 @@ TEST_F(vdwd3Test, D30UnitA) input.vdw_cn_thr_unit = "A"; vdw::Vdwd3 vdwd3_test(ucell); - vdwd3_test.parameter().initial_parameters(input); + const std::string xc = "pbe"; + vdwd3_test.parameter().initial_parameters(xc, input); EXPECT_EQ(vdwd3_test.parameter().rthr2(), std::pow(95/ModuleBase::BOHR_TO_A, 2)); EXPECT_EQ(vdwd3_test.parameter().cn_thr2(), std::pow(40/ModuleBase::BOHR_TO_A, 2)); @@ -407,7 +408,8 @@ TEST_F(vdwd3Test, D30Period) input.vdw_cutoff_type = "period"; vdw::Vdwd3 vdwd3_test(ucell); - vdwd3_test.parameter().initial_parameters(input); + const std::string xc = "pbe"; + vdwd3_test.parameter().initial_parameters(xc, input); vdwd3_test.init(); std::vector rep_vdw_ref = {input.vdw_cutoff_period.x, input.vdw_cutoff_period.y, input.vdw_cutoff_period.z}; diff --git a/source/module_hamilt_general/module_vdw/vdw.cpp b/source/module_hamilt_general/module_vdw/vdw.cpp index b070d527ae..4842dbb0f2 100644 --- a/source/module_hamilt_general/module_vdw/vdw.cpp +++ b/source/module_hamilt_general/module_vdw/vdw.cpp @@ -1,7 +1,41 @@ +#include +#include #include "vdw.h" #include "vdwd2.h" #include "vdwd3.h" +#include "module_base/tool_quit.h" + +std::string parse_xcname(const std::string &xc_input, + const std::vector &xc_psp) +{ + if (xc_input != "default") + { + return xc_input; + } + + if (xc_psp.size() <= 0) + { + ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::parse_xcname", + "XC name automatic inference failed: no pseudopotential files are found"); + } + std::vector xc_psp_uniq = xc_psp; + std::sort(xc_psp_uniq.begin(), xc_psp_uniq.end()); + auto last = std::unique(xc_psp_uniq.begin(), xc_psp_uniq.end()); + xc_psp_uniq.erase(last, xc_psp_uniq.end()); + + if (xc_psp_uniq.size() > 1) + { + ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::parse_xcname", + "XC name automatic inference failed: inconsistency in XC names is found" + " in the pseudopotential files"); + } + const std::string xc = xc_psp_uniq[0]; + std::cout << " ***WARNING*** ModuleHamiltGeneral::ModuleVDW::parse_xcname: " + << "XC name is automatically inferred from pseudopotential as `" + << xc << "`" << std::endl; + return xc; +} namespace vdw { @@ -24,8 +58,13 @@ std::unique_ptr make_vdw(const UnitCell &ucell, } else if (input.vdw_method == "d3_0" || input.vdw_method == "d3_bj") { + std::vector xc_psp(ucell.ntype); + for (int it = 0; it < ucell.ntype; it++) + { + xc_psp[it] = ucell.atoms[it].ncpp.xc_func; + } std::unique_ptr vdw_ptr = make_unique(ucell); - vdw_ptr->parameter().initial_parameters(input, plog); + vdw_ptr->parameter().initial_parameters(parse_xcname(input.dft_functional, xc_psp), input, plog); return vdw_ptr; } else if (input.vdw_method != "none") diff --git a/source/module_hamilt_general/module_vdw/vdw.h b/source/module_hamilt_general/module_vdw/vdw.h index 257b80cd98..a4b494c8ad 100644 --- a/source/module_hamilt_general/module_vdw/vdw.h +++ b/source/module_hamilt_general/module_vdw/vdw.h @@ -11,9 +11,10 @@ namespace vdw { -template -std::unique_ptr make_unique(Args &&... args) { - return std::unique_ptr(new T(std::forward(args)...)); + template + std::unique_ptr make_unique(Args &&... args) { + return std::unique_ptr(new T(std::forward(args)...)); + } class Vdw diff --git a/source/module_hamilt_general/module_vdw/vdwd3_autoset_xcparam.cpp b/source/module_hamilt_general/module_vdw/vdwd3_autoset_xcparam.cpp index 4f2f077dac..69124e971b 100644 --- a/source/module_hamilt_general/module_vdw/vdwd3_autoset_xcparam.cpp +++ b/source/module_hamilt_general/module_vdw/vdwd3_autoset_xcparam.cpp @@ -69,7 +69,8 @@ #include "module_hamilt_general/module_vdw/vdwd3_parameters.h" // DFT-D3(BJ) -const std::map> bj = { +const std::pair> bj_data[] = { + {"__default__", {1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 14.0, 0.0}}, {"bp", {1.0, 0.3946, 0.3946, 3.2822, 4.8516, 4.8516, 1.0, 14.0, 0.0}}, {"blyp", {1.0, 0.4298, 0.4298, 2.6996, 4.2359, 4.2359, 1.0, 14.0, 0.0}}, {"revpbe", {1.0, 0.5238, 0.5238, 2.355, 3.5016, 3.5016, 1.0, 14.0, 0.0}}, @@ -229,8 +230,11 @@ const std::map> bj = { {"dodhsep86", {0.69, 0.0, 0.0, 0.0, 5.4, 5.4, 1.0, 14.0, 0.0}}, {"dodpbehb95", {0.67, 0.0, 0.0, 0.0, 6.0, 6.0, 1.0, 14.0, 0.0}}, }; +const std::map> bj = {std::begin(bj_data), std::end(bj_data)}; + // DFT-D3(0) -const std::map> zero = { +const std::pair> zero_data[] = { + {"__default__", {1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"slaterdirac", {1.0, 0.999, 0.999, -1.957, 0.697, 0.697, 1.0, 14.0, 0.0}}, {"bp", {1.0, 1.139, 1.139, 1.683, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"blyp", {1.0, 1.094, 1.094, 1.682, 1.0, 1.0, 1.0, 14.0, 0.0}}, @@ -316,8 +320,11 @@ const std::map> zero = { {"mn15l", {1.0, 3.3388, 3.3388, 0.0, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"pwp", {1.0, 2.104, 2.104, 0.8747, 1.0, 1.0, 1.0, 14.0, 0.0}}, }; +const std::map> zero = {std::begin(zero_data), std::end(zero_data)}; + // DFT-D3M(BJ): not implemented for beta -const std::map> bjm = { +const std::pair> bjm_data[] = { + {"__default__", {1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 14.0, 0.0}}, {"bp", {1.0, 0.82185, 0.82185, 3.140281, 2.728151, 2.728151, 1.0, 14.0, 0.0}}, {"blyp", {1.0, 0.448486, 0.448486, 1.875007, 3.610679, 3.610679, 1.0, 14.0, 0.0}}, {"b97_d", {1.0, 0.240184, 0.240184, 1.206988, 3.864426, 3.864426, 1.0, 14.0, 0.0}}, @@ -327,8 +334,11 @@ const std::map> bjm = { {"b2plyp", {0.64, 0.486434, 0.486434, 0.67282, 3.656466, 3.656466, 1.0, 14.0, 0.0}}, {"lcwpbe", {1.0, 0.563761, 0.563761, 0.906564, 3.59368, 3.59368, 1.0, 14.0, 0.0}}, }; +const std::map> bjm = {std::begin(bjm_data), std::end(bjm_data)}; + // DFT-D3M(0): not implemented for beta -const std::map> zerom = { +const std::pair> zerom_data[] = { + {"__default__", {1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"bp", {1.0, 1.23346, 1.23346, 1.945174, 1.0, 1.0, 1.0, 14.0, 0.0}}, {"blyp", {1.0, 1.279637, 1.279637, 1.841686, 1.0, 1.0, 1.0, 14.0, 0.01437}}, {"b97_d", {1.0, 1.151808, 1.151808, 1.020078, 1.0, 1.0, 1.0, 14.0, 0.035964}}, @@ -338,8 +348,12 @@ const std::map> zerom = { {"b2plyp", {0.64, 1.313134, 1.313134, 0.717543, 1.0, 1.0, 1.0, 14.0, 0.016035}}, {"lcwpbe", {1.0, 1.366361, 1.366361, 1.280619, 1.0, 1.0, 1.0, 14.0, 0.00316}}, }; +const std::map> zerom = {std::begin(zerom_data), std::end(zerom_data)}; + // DFT-D3(OptimizedPower) -const std::map> op = { +const std::pair> op_data[] = { + // {'s6', 'rs6', 'a1', 's8', 'rs8', 'a2', 's9', 'alp', 'bet'} + {"__default__", {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 14.0, 0.0}}, {"blyp", {1.0, 0.425, 0.425, 1.31867, 3.5, 3.5, 1.0, 14.0, 2.0}}, {"revpbe", {1.0, 0.6, 0.6, 1.44765, 2.5, 2.5, 1.0, 14.0, 0.0}}, {"b97_d", {1.0, 0.6, 0.6, 1.46861, 2.5, 2.5, 1.0, 14.0, 0.0}}, @@ -355,8 +369,20 @@ const std::map> op = { {"ms2", {1.0, 0.7, 0.7, 0.90743, 4.0, 4.0, 1.0, 14.0, 2.0}}, {"ms2h", {1.0, 0.65, 0.65, 1.69464, 4.75, 4.75, 1.0, 14.0, 0.0}}, }; +const std::map> op = {std::begin(op_data), std::end(op_data)}; - +std::vector _search_impl(const std::string& xc, + const std::map>& dict) +{ + if (dict.find(xc) != dict.end()) + { + return dict.at(xc); + } + else + { + return std::vector(); + } +} // 's6', 'rs6', 'a1', 's8', 'rs8', 'a2', 's9', 'alp', 'bet' /** * @brief Get the dftd3 params object. @@ -368,76 +394,49 @@ const std::map> op = { * @param param the dftd3 parameters, ALL_KEYS = {'s6', 'rs6', 'a1', 's8', 'rs8', 'a2', 's9', 'alp', 'bet'} */ void _search(const std::string& xc, - const std::string& method, - std::vector& param) + const std::string& method, + std::vector& param) { const std::string xc_lowercase = FmtCore::lower(xc); const std::vector allowed_ = { "bj", "zero", "bjm", "zerom", "op" }; - assert(std::find(allowed_.begin(), allowed_.end(), method) != allowed_.end()); - if (method == "op") + const int i = std::find(allowed_.begin(), allowed_.end(), method) - allowed_.begin(); + std::map> const * pdict = nullptr; + switch (i) { - if (op.find(xc_lowercase) != op.end()) - { - param = op.at(xc_lowercase); - } - else - { - ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::DFTD3::_search", - "XC (`" + xc + "`)'s DFT-D3(OP) parameters not found"); - } + case 0: + pdict = &bj; + break; + case 1: + pdict = &zero; + break; + case 2: + pdict = &bjm; + break; + case 3: + pdict = &zerom; + break; + case 4: + pdict = &op; + break; + default: + pdict = nullptr; + break; } - else if (method == "bjm") + if (pdict == nullptr) { - if (bjm.find(xc_lowercase) != bjm.end()) - { - param = bjm.at(xc_lowercase); - } - else - { - ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::DFTD3::_search", - "XC (`" + xc + "`)'s DFT-D3M(BJ) parameters not found"); - } - } - else if (method == "bj") - { - if (bj.find(xc_lowercase) != bj.end()) - { - param = bj.at(xc_lowercase); - } - else - { - ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::DFTD3::_search", - "XC (`" + xc + "`)'s DFT-D3(BJ) parameters not found"); - } - } - else if (method == "zerom") - { - if (zerom.find(xc_lowercase) != zerom.end()) - { - param = zerom.at(xc_lowercase); - } - else - { - ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::DFTD3::_search", - "XC (`" + xc + "`)'s DFT-D3M(0) parameters not found"); - } - } - else if (method == "zero") - { - if (zero.find(xc_lowercase) != zero.end()) - { - param = zero.at(xc_lowercase); - } - else - { - ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::DFTD3::_search", - "XC (`" + xc + "`)'s DFT-D3(0) parameters not found"); - } + ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::DFTD3::_search", + "Unknown DFT-D3 method: " + method); } - else // should not reach here + param = _search_impl(xc_lowercase, *pdict); + if (param.empty()) { ModuleBase::WARNING_QUIT("ModuleHamiltGeneral::ModuleVDW::DFTD3::_search", - "Unknown DFT-D3 method: " + method); + "XC (`" + xc + "`)'s DFT-D3(" + method + ") parameters not found"); + // is it meaningful to return a so-called default value? + std::cout << " ***WARNING*** " + << "XC (`" << xc << "`)'s DFT-D3(" << method << ") parameters not found, " + << "using default values. Please use at your own risk!" << std::endl; + param = _search_impl("__default__", *pdict); } } diff --git a/source/module_hamilt_general/module_vdw/vdwd3_parameters.cpp b/source/module_hamilt_general/module_vdw/vdwd3_parameters.cpp index d9e18e33b8..fc2736529b 100644 --- a/source/module_hamilt_general/module_vdw/vdwd3_parameters.cpp +++ b/source/module_hamilt_general/module_vdw/vdwd3_parameters.cpp @@ -10,7 +10,9 @@ namespace vdw { -void Vdwd3Parameters::initial_parameters(const Input_para &input, std::ofstream* plog) +void Vdwd3Parameters::initial_parameters(const std::string& xc, + const Input_para& input, + std::ofstream* plog) { // initialize the dftd3 parameters mxc_.resize(max_elem_, 1); @@ -23,7 +25,7 @@ void Vdwd3Parameters::initial_parameters(const Input_para &input, std::ofstream* 5, std::vector>(max_elem_, std::vector(max_elem_, 0.0))))); - _vdwd3_autoset_xcparam(input.dft_functional, input.vdw_method, + _vdwd3_autoset_xcparam(xc, input.vdw_method, input.vdw_s6, input.vdw_s8, input.vdw_a1, input.vdw_a2, s6_, s18_, rs6_, rs18_, /* rs6: a1, rs18: a2 */ plog); diff --git a/source/module_hamilt_general/module_vdw/vdwd3_parameters.h b/source/module_hamilt_general/module_vdw/vdwd3_parameters.h index 75c5801eb3..ceaadd6307 100644 --- a/source/module_hamilt_general/module_vdw/vdwd3_parameters.h +++ b/source/module_hamilt_general/module_vdw/vdwd3_parameters.h @@ -27,7 +27,8 @@ class Vdwd3Parameters : public VdwParameters * @param input Parameter instance * @param plog optional, for logging the parameter setting process */ - void initial_parameters(const Input_para &input, + void initial_parameters(const std::string& xc, + const Input_para& input, std::ofstream* plog = nullptr); // for logging the parameter autoset inline const std::string &version() const { return version_; } diff --git a/source/module_hamilt_general/module_xc/xc_functional.cpp b/source/module_hamilt_general/module_xc/xc_functional.cpp index 4b9b95a2ce..6b3c415473 100644 --- a/source/module_hamilt_general/module_xc/xc_functional.cpp +++ b/source/module_hamilt_general/module_xc/xc_functional.cpp @@ -262,7 +262,11 @@ void XC_Functional::set_xc_type(const std::string xc_func_in) func_id = std::get<1>(type_id); use_libxc = true; #else - ModuleBase::WARNING_QUIT("xc_functional.cpp","functional name not recognized!"); + std::string message = "Unrecognized exchange-correlation functional '"+ xc_func +"'.\n" + " Possible source: Pseudopotential file or dft_functional parameter.\n" + " Please explicitly set dft_functional in INPUT,\n" + " or verify the functional name is supported."; + ModuleBase::WARNING_QUIT("xc_functional.cpp",message); #endif } diff --git a/source/module_hamilt_general/module_xc/xc_functional_libxc.cpp b/source/module_hamilt_general/module_xc/xc_functional_libxc.cpp index ffd44e7989..a864855ac1 100644 --- a/source/module_hamilt_general/module_xc/xc_functional_libxc.cpp +++ b/source/module_hamilt_general/module_xc/xc_functional_libxc.cpp @@ -82,13 +82,27 @@ std::pair> XC_Functional_Libxc::set_xc_type_libxc(std::stri token = xc_func_in.substr(0, pos); int id = xc_functional_get_number(token.c_str()); std::cout << "func,id" << token << " " << id << std::endl; - if (id == -1) { ModuleBase::WARNING_QUIT("XC_Functional::set_xc_type_libxc","functional name not recognized!"); } + if (id == -1) + { + std::string message = "Unrecognized exchange-correlation functional '"+ xc_func_in +"'.\n" + " Possible source: Pseudopotential file or dft_functional parameter.\n" + " Please explicitly set dft_functional in INPUT,\n" + " or verify the functional name is supported."; + ModuleBase::WARNING_QUIT("XC_Functional::set_xc_type_libxc",message); + } func_id.push_back(id); xc_func_in.erase(0, pos + delimiter.length()); } int id = xc_functional_get_number(xc_func_in.c_str()); std::cout << "func,id" << xc_func_in << " " << id << std::endl; - if (id == -1) { ModuleBase::WARNING_QUIT("XC_Functional::set_xc_type_libxc","functional name not recognized!"); } + if (id == -1) + { + std::string message = "Unrecognized exchange-correlation functional '"+ xc_func_in +"'.\n" + " Possible source: Pseudopotential file or dft_functional parameter.\n" + " Please explicitly set dft_functional in INPUT,\n" + " or verify the functional name is supported."; + ModuleBase::WARNING_QUIT("XC_Functional::set_xc_type_libxc",message); + } func_id.push_back(id); return std::make_pair(func_type, func_id); diff --git a/source/module_hamilt_general/module_xc/xc_functional_libxc.h b/source/module_hamilt_general/module_xc/xc_functional_libxc.h index f206261076..12cf1fdd8e 100644 --- a/source/module_hamilt_general/module_xc/xc_functional_libxc.h +++ b/source/module_hamilt_general/module_xc/xc_functional_libxc.h @@ -7,6 +7,7 @@ #include "module_base/vector3.h" #include +#include #include #include diff --git a/source/module_hamilt_general/module_xc/xc_functional_libxc_tools.cpp b/source/module_hamilt_general/module_xc/xc_functional_libxc_tools.cpp index 6975d066b7..567d04e62a 100644 --- a/source/module_hamilt_general/module_xc/xc_functional_libxc_tools.cpp +++ b/source/module_hamilt_general/module_xc/xc_functional_libxc_tools.cpp @@ -188,7 +188,7 @@ std::pair XC_Functional_Libxc::convert_vtxc_v( { const double v_tmp = ModuleBase::e2 * vrho[ir*nspin+is] * sgn[ir*nspin+is]; v(is,ir) += v_tmp; - vtxc += v_tmp * rho[ir*nspin+is]; + vtxc += v_tmp * (rho[ir*nspin+is] - 1.0/nspin*chr->rho_core[ir]); } } @@ -204,7 +204,7 @@ std::pair XC_Functional_Libxc::convert_vtxc_v( { for( std::size_t ir=0; irrho_core[ir]); v(is,ir) -= dh[is][ir]; } } diff --git a/source/module_hamilt_general/module_xc/xc_functional_wrapper_xc.cpp b/source/module_hamilt_general/module_xc/xc_functional_wrapper_xc.cpp index aa6927ea9a..972c324990 100644 --- a/source/module_hamilt_general/module_xc/xc_functional_wrapper_xc.cpp +++ b/source/module_hamilt_general/module_xc/xc_functional_wrapper_xc.cpp @@ -5,6 +5,10 @@ // 2. xc_spin, which is the spin polarized counterpart of xc // 3. xc_spin_libxc, which is the wrapper for LDA functional, spin polarized +#ifdef USE_LIBXC +#include +#endif // ifdef USE_LIBXC + #include "xc_functional.h" #include diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dftu_force_stress.hpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dftu_force_stress.hpp index e83c811a03..55a82dad6b 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dftu_force_stress.hpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dftu_force_stress.hpp @@ -37,9 +37,29 @@ void DFTU>::cal_force_stress(const bool cal_force, { force.zero_out(); } + // calculate atom_index for adjs_all, induced by omp parallel + int atom_index = 0; + std::vector atom_index_all(this->ucell->nat, -1); + for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) + { + int T0=0; + int I0=0; + ucell->iat2iait(iat0, &I0, &T0); + if(this->dftu->orbital_corr[T0] == -1) + { + continue; + } + atom_index_all[iat0] = atom_index; + atom_index++; + } + // 1. calculate for each pair of atoms // loop over all on-site atoms - int atom_index = 0; + #pragma omp parallel + { + std::vector stress_local(6, 0); + ModuleBase::matrix force_local(force.nr, force.nc); + #pragma omp for schedule(dynamic) for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) { // skip the atoms without plus-U @@ -51,7 +71,7 @@ void DFTU>::cal_force_stress(const bool cal_force, continue; } const int tlp1 = 2 * target_L + 1; - AdjacentAtomInfo& adjs = this->adjs_all[atom_index++]; + AdjacentAtomInfo& adjs = this->adjs_all[atom_index_all[iat0]]; std::vector>> nlm_tot; nlm_tot.resize(adjs.adj_num + 1); @@ -156,8 +176,8 @@ void DFTU>::cal_force_stress(const bool cal_force, const int T1 = adjs.ntype[ad1]; const int I1 = adjs.natom[ad1]; const int iat1 = ucell->itia2iat(T1, I1); - double* force_tmp1 = (cal_force) ? &force(iat1, 0) : nullptr; - double* force_tmp2 = (cal_force) ? &force(iat0, 0) : nullptr; + double* force_tmp1 = (cal_force) ? &force_local(iat1, 0) : nullptr; + double* force_tmp2 = (cal_force) ? &force_local(iat0, 0) : nullptr; ModuleBase::Vector3& R_index1 = adjs.box[ad1]; ModuleBase::Vector3 dis1 = adjs.adjacent_tau[ad1] - tau0; for (int ad2 = 0; ad2 < adjs.adj_num + 1; ++ad2) @@ -205,13 +225,27 @@ void DFTU>::cal_force_stress(const bool cal_force, this->nspin, dis1, dis2, - stress_tmp.data()); + stress_local.data()); } } } } } - + #pragma omp critical + { + if(cal_force) + { + force += force_local; + } + if(cal_stress) + { + for(int i = 0; i < 6; i++) + { + stress_tmp[i] += stress_local[i]; + } + } + } + } if (cal_force) { #ifdef __MPI diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dspin_force_stress.hpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dspin_force_stress.hpp index da080ae60f..0646a0b617 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dspin_force_stress.hpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dspin_force_stress.hpp @@ -32,7 +32,11 @@ void DeltaSpin>::cal_force_stress(const bool cal_force, } // 1. calculate for each pair of atoms // loop over all on-site atoms - int atom_index = 0; + #pragma omp parallel + { + std::vector stress_local(6, 0); + ModuleBase::matrix force_local(force.nr, force.nc); + #pragma omp for schedule(dynamic) for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) { if(!this->constraint_atom_list[iat0]) @@ -133,8 +137,8 @@ void DeltaSpin>::cal_force_stress(const bool cal_force, const int T1 = adjs.ntype[ad1]; const int I1 = adjs.natom[ad1]; const int iat1 = ucell->itia2iat(T1, I1); - double* force_tmp1 = (cal_force) ? &force(iat1, 0) : nullptr; - double* force_tmp2 = (cal_force) ? &force(iat0, 0) : nullptr; + double* force_tmp1 = (cal_force) ? &force_local(iat1, 0) : nullptr; + double* force_tmp2 = (cal_force) ? &force_local(iat0, 0) : nullptr; ModuleBase::Vector3& R_index1 = adjs.box[ad1]; ModuleBase::Vector3 dis1 = adjs.adjacent_tau[ad1] - tau0; for (int ad2 = 0; ad2 < adjs.adj_num + 1; ++ad2) @@ -183,12 +187,27 @@ void DeltaSpin>::cal_force_stress(const bool cal_force, this->nspin, dis1, dis2, - stress_tmp.data()); + stress_local.data()); } } } } } + #pragma omp critical + { + if(cal_force) + { + force += force_local; + } + if(cal_stress) + { + for(int i = 0; i < 6; i++) + { + stress_tmp[i] += stress_local[i]; + } + } + } + } if (cal_force) { diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_force_stress.hpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_force_stress.hpp index b6cbe96786..d6999b7ae9 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_force_stress.hpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_force_stress.hpp @@ -27,17 +27,22 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, } // 1. calculate for each pair of atoms // loop over all on-site atoms - int atom_index = 0; + #pragma omp parallel + { + std::vector stress_local(6, 0); + ModuleBase::matrix force_local(force.nr, force.nc); + #pragma omp for schedule(dynamic) for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) { // skip the atoms without plus-U auto tau0 = ucell->get_tau(iat0); int I0 = 0; - ucell->iat2iait(iat0, &I0, &this->current_type); + int T0 = 0; + ucell->iat2iait(iat0, &I0, &T0); // first step: find the adjacent atoms and filter the real adjacent atoms AdjacentAtomInfo adjs; - this->gridD->Find_atom(*ucell, tau0, this->current_type, I0, &adjs); + this->gridD->Find_atom(*ucell, tau0, T0, I0, &adjs); std::vector is_adj(adjs.adj_num + 1, false); for (int ad = 0; ad < adjs.adj_num + 1; ++ad) @@ -51,7 +56,7 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, // When equal, the theoretical value of matrix element is zero, // but the calculated value is not zero due to the numerical error, which would lead to result changes. if (this->ucell->cal_dtau(iat0, iat1, R_index1).norm() * this->ucell->lat0 - < orb_cutoff_[T1] + this->ucell->infoNL.Beta[this->current_type].get_rcut_max()) + < orb_cutoff_[T1] + this->ucell->infoNL.Beta[T0].get_rcut_max()) { is_adj[ad] = true; } @@ -89,7 +94,7 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; ModuleBase::Vector3 dtau = tau0 - tau1; - intor_->snap(T1, L1, N1, M1, this->current_type, dtau * this->ucell->lat0, true /*cal_deri*/, nlm); + intor_->snap(T1, L1, N1, M1, T0, dtau * this->ucell->lat0, true /*cal_deri*/, nlm); // select the elements of nlm with target_L const int length = nlm[0].size(); std::vector nlm_target(length * 4); @@ -111,8 +116,8 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, const int T1 = adjs.ntype[ad1]; const int I1 = adjs.natom[ad1]; const int iat1 = ucell->itia2iat(T1, I1); - double* force_tmp1 = (cal_force) ? &force(iat1, 0) : nullptr; - double* force_tmp2 = (cal_force) ? &force(iat0, 0) : nullptr; + double* force_tmp1 = (cal_force) ? &force_local(iat1, 0) : nullptr; + double* force_tmp2 = (cal_force) ? &force_local(iat0, 0) : nullptr; ModuleBase::Vector3& R_index1 = adjs.box[ad1]; ModuleBase::Vector3 dis1 = adjs.adjacent_tau[ad1] - tau0; for (int ad2 = 0; ad2 < adjs.adj_num + 1; ++ad2) @@ -139,6 +144,7 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, if (cal_force) { this->cal_force_IJR(iat1, iat2, + T0, paraV, nlm_iat0[ad1], nlm_iat0[ad2], @@ -151,18 +157,35 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, if (cal_stress) { this->cal_stress_IJR(iat1, iat2, + T0, paraV, nlm_iat0[ad1], nlm_iat0[ad2], tmp, dis1, dis2, - stress_tmp.data()); + stress_local.data()); } } } } } + #pragma omp critical + { + if(cal_force) + { + force += force_local; + } + if(cal_stress) + { + for(int i = 0; i < 6; i++) + { + stress_tmp[i] += stress_local[i]; + } + } + + } + } if (cal_force) { @@ -202,6 +225,7 @@ void NonlocalNew>::cal_force_stress(const bool cal_force, template <> void NonlocalNew, std::complex>>::cal_force_IJR(const int& iat1, const int& iat2, + const int& T0, const Parallel_Orbitals* paraV, const std::unordered_map>& nlm1_all, const std::unordered_map>& nlm2_all, @@ -241,11 +265,11 @@ void NonlocalNew, std::complex>>::cal_ std::vector> nlm_tmp(12, ModuleBase::ZERO); for (int is = 0; is < 4; ++is) { - for (int no = 0; no < this->ucell->atoms[this->current_type].ncpp.non_zero_count_soc[is]; no++) + for (int no = 0; no < this->ucell->atoms[T0].ncpp.non_zero_count_soc[is]; no++) { - const int p1 = this->ucell->atoms[this->current_type].ncpp.index1_soc[is][no]; - const int p2 = this->ucell->atoms[this->current_type].ncpp.index2_soc[is][no]; - this->ucell->atoms[this->current_type].ncpp.get_d(is, p1, p2, tmp_d); + const int p1 = this->ucell->atoms[T0].ncpp.index1_soc[is][no]; + const int p2 = this->ucell->atoms[T0].ncpp.index2_soc[is][no]; + this->ucell->atoms[T0].ncpp.get_d(is, p1, p2, tmp_d); nlm_tmp[is*3] += nlm1[p1 + length] * nlm2[p2] * (*tmp_d); nlm_tmp[is*3+1] += nlm1[p1 + length * 2] * nlm2[p2] * (*tmp_d); nlm_tmp[is*3+2] += nlm1[p1 + length * 3] * nlm2[p2] * (*tmp_d); @@ -270,6 +294,7 @@ void NonlocalNew, std::complex>>::cal_ template <> void NonlocalNew, std::complex>>::cal_stress_IJR(const int& iat1, const int& iat2, + const int& T0, const Parallel_Orbitals* paraV, const std::unordered_map>& nlm1_all, const std::unordered_map>& nlm2_all, @@ -311,11 +336,11 @@ void NonlocalNew, std::complex>>::cal_ std::vector> nlm_tmp(npol2 * 6, ModuleBase::ZERO); for (int is = 0; is < 4; ++is) { - for (int no = 0; no < this->ucell->atoms[this->current_type].ncpp.non_zero_count_soc[is]; no++) + for (int no = 0; no < this->ucell->atoms[T0].ncpp.non_zero_count_soc[is]; no++) { - const int p1 = this->ucell->atoms[this->current_type].ncpp.index1_soc[is][no]; - const int p2 = this->ucell->atoms[this->current_type].ncpp.index2_soc[is][no]; - this->ucell->atoms[this->current_type].ncpp.get_d(is, p1, p2, tmp_d); + const int p1 = this->ucell->atoms[T0].ncpp.index1_soc[is][no]; + const int p2 = this->ucell->atoms[T0].ncpp.index2_soc[is][no]; + this->ucell->atoms[T0].ncpp.get_d(is, p1, p2, tmp_d); nlm_tmp[is*6] += (nlm1[p1 + length] * dis1.x * nlm2[p2] + nlm1[p1] * nlm2[p2 + length] * dis2.x) * (*tmp_d); nlm_tmp[is*6+1] += (nlm1[p1 + length] * dis1.y * nlm2[p2] + nlm1[p1] * nlm2[p2 + length] * dis2.y) * (*tmp_d); nlm_tmp[is*6+2] += (nlm1[p1 + length] * dis1.z * nlm2[p2] + nlm1[p1] * nlm2[p2 + length] * dis2.z) * (*tmp_d); @@ -341,6 +366,7 @@ void NonlocalNew, std::complex>>::cal_ template void NonlocalNew>::cal_force_IJR(const int& iat1, const int& iat2, + const int& T0, const Parallel_Orbitals* paraV, const std::unordered_map>& nlm1_all, const std::unordered_map>& nlm2_all, @@ -367,11 +393,11 @@ void NonlocalNew>::cal_force_IJR(const int& iat1, assert(nlm1.size() == nlm2.size()); #endif std::vector nlm_tmp(3, 0.0); - for (int no = 0; no < this->ucell->atoms[this->current_type].ncpp.non_zero_count_soc[0]; no++) + for (int no = 0; no < this->ucell->atoms[T0].ncpp.non_zero_count_soc[0]; no++) { - const int p1 = this->ucell->atoms[this->current_type].ncpp.index1_soc[0][no]; - const int p2 = this->ucell->atoms[this->current_type].ncpp.index2_soc[0][no]; - this->ucell->atoms[this->current_type].ncpp.get_d(0, p1, p2, tmp_d); + const int p1 = this->ucell->atoms[T0].ncpp.index1_soc[0][no]; + const int p2 = this->ucell->atoms[T0].ncpp.index2_soc[0][no]; + this->ucell->atoms[T0].ncpp.get_d(0, p1, p2, tmp_d); nlm_tmp[0] += nlm1[p1 + length] * nlm2[p2] * (*tmp_d); nlm_tmp[1] += nlm1[p1 + length * 2] * nlm2[p2] * (*tmp_d); nlm_tmp[2] += nlm1[p1 + length * 3] * nlm2[p2] * (*tmp_d); @@ -390,6 +416,7 @@ void NonlocalNew>::cal_force_IJR(const int& iat1, template void NonlocalNew>::cal_stress_IJR(const int& iat1, const int& iat2, + const int& T0, const Parallel_Orbitals* paraV, const std::unordered_map>& nlm1_all, const std::unordered_map>& nlm2_all, @@ -417,11 +444,11 @@ void NonlocalNew>::cal_stress_IJR(const int& iat1, assert(nlm1.size() == nlm2.size()); #endif std::vector nlm_tmp(6, 0.0); - for (int no = 0; no < this->ucell->atoms[this->current_type].ncpp.non_zero_count_soc[0]; no++) + for (int no = 0; no < this->ucell->atoms[T0].ncpp.non_zero_count_soc[0]; no++) { - const int p1 = this->ucell->atoms[this->current_type].ncpp.index1_soc[0][no]; - const int p2 = this->ucell->atoms[this->current_type].ncpp.index2_soc[0][no]; - this->ucell->atoms[this->current_type].ncpp.get_d(0, p1, p2, tmp_d); + const int p1 = this->ucell->atoms[T0].ncpp.index1_soc[0][no]; + const int p2 = this->ucell->atoms[T0].ncpp.index2_soc[0][no]; + this->ucell->atoms[T0].ncpp.get_d(0, p1, p2, tmp_d); nlm_tmp[0] += (nlm1[p1 + length] * dis1.x * nlm2[p2] + nlm1[p1] * nlm2[p2 + length] * dis2.x) * (*tmp_d); nlm_tmp[1] += (nlm1[p1 + length] * dis1.y * nlm2[p2] + nlm1[p1] * nlm2[p2 + length] * dis2.y) * (*tmp_d); nlm_tmp[2] += (nlm1[p1 + length] * dis1.z * nlm2[p2] + nlm1[p1] * nlm2[p2 + length] * dis2.z) * (*tmp_d); diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_new.h b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_new.h index 414cd9b041..3f41a1f308 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_new.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_new.h @@ -102,12 +102,13 @@ class NonlocalNew> : public OperatorLCAO TR* data_pointer); const Grid_Driver* gridD = nullptr; - int current_type = 0; + /** * @brief calculate the atomic Force of atom pair */ void cal_force_IJR(const int& iat1, const int& iat2, + const int& T0, const Parallel_Orbitals* paraV, const std::unordered_map>& nlm1_all, const std::unordered_map>& nlm2_all, @@ -119,6 +120,7 @@ class NonlocalNew> : public OperatorLCAO */ void cal_stress_IJR(const int& iat1, const int& iat2, + const int& T0, const Parallel_Orbitals* paraV, const std::unordered_map>& nlm1_all, const std::unordered_map>& nlm2_all, diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.hpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.hpp index e20ca09b6e..5c4af43f40 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.hpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/op_exx_lcao.hpp @@ -251,7 +251,14 @@ void OperatorEXX>::contributeHR() { ModuleBase::TITLE("OperatorEXX", "contributeHR"); // Peize Lin add 2016-12-03 - if (this->istep == 0 && PARAM.inp.calculation != "nscf" && this->two_level_step != nullptr && *this->two_level_step == 0 && !this->restart) { return; } //in the non-exx loop, do nothing + if (this->istep == 0 + && PARAM.inp.calculation != "nscf" + && this->two_level_step != nullptr && *this->two_level_step == 0 + && PARAM.inp.init_wfc != "file" + && !this->restart) + { + return; + } //in the non-exx loop, do nothing if (this->add_hexx_type == Add_Hexx_Type::k) { return; } if (XC_Functional::get_func_type() == 4 || XC_Functional::get_func_type() == 5) diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/spar_dh.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/spar_dh.cpp index f82a653158..80af6c8e11 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/spar_dh.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/spar_dh.cpp @@ -26,9 +26,9 @@ void sparse_format::cal_dH(const UnitCell& ucell, fsr_dh.DHloc_fixedR_y = new double[nnr]; fsr_dh.DHloc_fixedR_z = new double[nnr]; - ModuleBase::GlobalFunc::ZEROS(fsr_dh.DHloc_fixedR_x, pv.nloc); - ModuleBase::GlobalFunc::ZEROS(fsr_dh.DHloc_fixedR_y, pv.nloc); - ModuleBase::GlobalFunc::ZEROS(fsr_dh.DHloc_fixedR_z, pv.nloc); + ModuleBase::GlobalFunc::ZEROS(fsr_dh.DHloc_fixedR_x, nnr); + ModuleBase::GlobalFunc::ZEROS(fsr_dh.DHloc_fixedR_y, nnr); + ModuleBase::GlobalFunc::ZEROS(fsr_dh.DHloc_fixedR_z, nnr); // cal dT= in LCAO // cal T + VNL(P1) in LCAO basis const bool cal_deri = true; diff --git a/source/module_hamilt_lcao/module_dftu/dftu_io.cpp b/source/module_hamilt_lcao/module_dftu/dftu_io.cpp index 0a1c79b247..f286a1d575 100644 --- a/source/module_hamilt_lcao/module_dftu/dftu_io.cpp +++ b/source/module_hamilt_lcao/module_dftu/dftu_io.cpp @@ -119,7 +119,7 @@ void DFTU::write_occup_m(const UnitCell& ucell, if (PARAM.inp.nspin == 1 || PARAM.inp.nspin == 2) { double sum0[2]; - for (int is = 0; is < 2; is++) + for (int is = 0; is < PARAM.inp.nspin; is++) { if(diag)// diagonalization for local occupation matrix and print the eigenvalues { @@ -144,19 +144,22 @@ void DFTU::write_occup_m(const UnitCell& ucell, ofs << std::setw(12) << std::setprecision(8) << std::fixed << sum0[is] << std::endl; } - ofs << "spin" - << " " << is << std::endl; - for (int m0 = 0; m0 < 2 * l + 1; m0++) + else { - for (int m1 = 0; m1 < 2 * l + 1; m1++) + ofs << "spin" + << " " << is << std::endl; + for (int m0 = 0; m0 < 2 * l + 1; m0++) { - ofs << std::setw(12) << std::setprecision(8) << std::fixed - << locale[iat][l][n][is](m0, m1); + for (int m1 = 0; m1 < 2 * l + 1; m1++) + { + ofs << std::setw(12) << std::setprecision(8) << std::fixed + << locale[iat][l][n][is](m0, m1); + } + ofs << std::endl; } - ofs << std::endl; } } - if(diag) + if(diag && PARAM.inp.nspin == 2) { ofs << std::setw(12) << std::setprecision(8) << std::fixed<< "atomic mag: "< block_index(max_size+1,0); std::vector block_size(max_size,0); std::vector vldr3(this->bxyz,0.0); -#pragma omp for +#pragma omp for schedule(dynamic) for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { const int na_grid = this->gridt->how_many_atoms[grid_index]; if (na_grid == 0) { @@ -153,7 +153,7 @@ void Gint::gint_kernel_force_meta(Gint_inout* inout) { std::vector block_size(max_size,0); std::vector vldr3(this->bxyz,0.0); std::vector vkdr3(this->bxyz,0.0); -#pragma omp for +#pragma omp for schedule(dynamic) for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { const int na_grid = this->gridt->how_many_atoms[grid_index]; if (na_grid == 0) { diff --git a/source/module_hamilt_lcao/module_gint/gint_force_gpu.cu b/source/module_hamilt_lcao/module_gint/gint_force_gpu.cu index d15dc8416a..9cb3e785c4 100644 --- a/source/module_hamilt_lcao/module_gint/gint_force_gpu.cu +++ b/source/module_hamilt_lcao/module_gint/gint_force_gpu.cu @@ -51,9 +51,11 @@ void gint_fvl_gpu(const hamilt::HContainer* dm, const int num_streams = gridt.nstreams; std::vector streams(num_streams); + std::vector events(num_streams); for (int i = 0; i < num_streams; i++) { checkCuda(cudaStreamCreate(&streams[i])); + checkCuda(cudaEventCreateWithFlags(&events[i], cudaEventDisableTiming)); } Cuda_Mem_Wrapper dr_part(3 * max_atom_per_z, num_streams, true); @@ -89,9 +91,22 @@ void gint_fvl_gpu(const hamilt::HContainer* dm, dm->get_wrapper(), dm->get_nnr() * sizeof(double), cudaMemcpyHostToDevice)); + #ifdef _OPENMP - #pragma omp parallel for num_threads(num_streams) collapse(2) +const int max_thread_num = std::min(omp_get_max_threads(), num_streams); +#endif +#pragma omp parallel num_threads(max_thread_num) +{ +#ifdef _OPENMP + const int tid = omp_get_thread_num(); + const int num_threads = omp_get_num_threads(); + const int sid_start = tid * num_streams / num_threads; + const int thread_num_streams = tid == num_threads - 1 ? num_streams - sid_start : num_streams / num_threads; +#else + const int sid_start = 0; + const int thread_num_streams = num_streams; #endif +#pragma omp for collapse(2) schedule(dynamic) for (int i = 0; i < gridt.nbx; i++) { for (int j = 0; j < gridt.nby; j++) @@ -99,11 +114,9 @@ void gint_fvl_gpu(const hamilt::HContainer* dm, // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. checkCuda(cudaSetDevice(gridt.dev_id)); -#ifdef _OPENMP - const int sid = omp_get_thread_num(); -#else - const int sid = 0; -#endif + + const int sid = (i * gridt.nby + j) % thread_num_streams + sid_start; + checkCuda(cudaEventSynchronize(events[sid])); int max_m = 0; int max_n = 0; @@ -161,6 +174,7 @@ void gint_fvl_gpu(const hamilt::HContainer* dm, gemm_A.copy_host_to_device_async(streams[sid], sid, atom_pair_num); gemm_B.copy_host_to_device_async(streams[sid], sid, atom_pair_num); gemm_C.copy_host_to_device_async(streams[sid], sid, atom_pair_num); + checkCuda(cudaEventRecord(events[sid], streams[sid])); psi.memset_device_async(streams[sid], sid, 0); psi_dm.memset_device_async(streams[sid], sid, 0); @@ -241,9 +255,9 @@ void gint_fvl_gpu(const hamilt::HContainer* dm, stress.get_device_pointer(sid)); checkCudaLastError(); } - checkCuda(cudaStreamSynchronize(streams[sid])); } } +} for(int i = 0; i < num_streams; i++) { @@ -254,6 +268,7 @@ void gint_fvl_gpu(const hamilt::HContainer* dm, for (int i = 0; i < num_streams; i++) { checkCuda(cudaStreamSynchronize(streams[i])); + checkCuda(cudaEventDestroy(events[i])); } if (isstress){ diff --git a/source/module_hamilt_lcao/module_gint/gint_rho_cpu_interface.cpp b/source/module_hamilt_lcao/module_gint/gint_rho_cpu_interface.cpp index dfc4926b0d..e3663145cc 100644 --- a/source/module_hamilt_lcao/module_gint/gint_rho_cpu_interface.cpp +++ b/source/module_hamilt_lcao/module_gint/gint_rho_cpu_interface.cpp @@ -16,7 +16,7 @@ void Gint::gint_kernel_rho(Gint_inout* inout) { std::vector block_index(max_size+1, 0); std::vector block_size(max_size, 0); std::vector vindex(this->bxyz, 0); -#pragma omp for +#pragma omp for schedule(dynamic) for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { const int na_grid = this->gridt->how_many_atoms[grid_index]; @@ -102,7 +102,7 @@ void Gint::gint_kernel_tau(Gint_inout* inout) { std::vector block_index(max_size+1, 0); std::vector block_size(max_size, 0); std::vector vindex(bxyz, 0); -#pragma omp for +#pragma omp for schedule(dynamic) for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { const int na_grid = this->gridt->how_many_atoms[grid_index]; diff --git a/source/module_hamilt_lcao/module_gint/gint_rho_gpu.cu b/source/module_hamilt_lcao/module_gint/gint_rho_gpu.cu index 0fb6accad4..fc5fba03c2 100644 --- a/source/module_hamilt_lcao/module_gint/gint_rho_gpu.cu +++ b/source/module_hamilt_lcao/module_gint/gint_rho_gpu.cu @@ -34,9 +34,11 @@ void gint_rho_gpu(const hamilt::HContainer* dm, const int max_atompair_per_z = max_atom * max_atom * nbzp; std::vector streams(num_streams); + std::vector events(num_streams); for (int i = 0; i < num_streams; i++) { checkCuda(cudaStreamCreate(&streams[i])); + checkCuda(cudaEventCreateWithFlags(&events[i], cudaEventDisableTiming)); } Cuda_Mem_Wrapper dr_part(max_atom_per_z * 3, num_streams, true); @@ -71,8 +73,20 @@ void gint_rho_gpu(const hamilt::HContainer* dm, // calculate the rho for every nbzp bigcells #ifdef _OPENMP -#pragma omp parallel for num_threads(num_streams) collapse(2) +const int max_thread_num = std::min(omp_get_max_threads(), num_streams); #endif +#pragma omp parallel num_threads(max_thread_num) +{ +#ifdef _OPENMP + const int tid = omp_get_thread_num(); + const int num_threads = omp_get_num_threads(); + const int sid_start = tid * num_streams / num_threads; + const int thread_num_streams = tid == num_threads - 1 ? num_streams - sid_start : num_streams / num_threads; +#else + const int sid_start = 0; + const int thread_num_streams = num_streams; +#endif +#pragma omp for collapse(2) schedule(dynamic) for (int i = 0; i < gridt.nbx; i++) { for (int j = 0; j < gridt.nby; j++) @@ -81,12 +95,9 @@ void gint_rho_gpu(const hamilt::HContainer* dm, // cuda's device is not safe in a multi-threaded environment. checkCuda(cudaSetDevice(gridt.dev_id)); - // get stream id -#ifdef _OPENMP - const int sid = omp_get_thread_num(); -#else - const int sid = 0; -#endif + + const int sid = (i * gridt.nby + j) % thread_num_streams + sid_start; + checkCuda(cudaEventSynchronize(events[sid])); int max_m = 0; int max_n = 0; @@ -147,6 +158,7 @@ void gint_rho_gpu(const hamilt::HContainer* dm, gemm_B.copy_host_to_device_async(streams[sid], sid, atom_pair_num); gemm_C.copy_host_to_device_async(streams[sid], sid, atom_pair_num); dot_product.copy_host_to_device_async(streams[sid], sid); + checkCuda(cudaEventRecord(events[sid], streams[sid])); psi.memset_device_async(streams[sid], sid, 0); psi_dm.memset_device_async(streams[sid], sid, 0); @@ -203,9 +215,9 @@ void gint_rho_gpu(const hamilt::HContainer* dm, psi_dm.get_device_pointer(sid), dot_product.get_device_pointer(sid)); checkCudaLastError(); - checkCuda(cudaStreamSynchronize(streams[sid])); } } +} // Copy rho from device to host checkCuda(cudaMemcpy(rho, @@ -216,6 +228,7 @@ void gint_rho_gpu(const hamilt::HContainer* dm, for (int i = 0; i < num_streams; i++) { checkCuda(cudaStreamDestroy(streams[i])); + checkCuda(cudaEventDestroy(events[i])); } } } // namespace GintKernel diff --git a/source/module_hamilt_lcao/module_gint/gint_vl_cpu_interface.cpp b/source/module_hamilt_lcao/module_gint/gint_vl_cpu_interface.cpp index c7629ba387..5bbab01fc0 100644 --- a/source/module_hamilt_lcao/module_gint/gint_vl_cpu_interface.cpp +++ b/source/module_hamilt_lcao/module_gint/gint_vl_cpu_interface.cpp @@ -24,7 +24,7 @@ void Gint::gint_kernel_vlocal(Gint_inout* inout) { std::vector block_index(max_size+1,0); std::vector block_size(max_size,0); std::vector vldr3(this->bxyz,0.0); - #pragma omp for + #pragma omp for schedule(dynamic) for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { const int na_grid = this->gridt->how_many_atoms[grid_index]; if (na_grid == 0) { @@ -119,7 +119,7 @@ void Gint::gint_kernel_dvlocal(Gint_inout* inout) { std::vector block_index(max_size+1,0); std::vector block_size(max_size,0); std::vector vldr3(this->bxyz,0.0); -#pragma omp for +#pragma omp for schedule(dynamic) for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { const int na_grid = this->gridt->how_many_atoms[grid_index]; if (na_grid == 0) { @@ -217,7 +217,7 @@ void Gint::gint_kernel_vlocal_meta(Gint_inout* inout) { std::vector vldr3(this->bxyz,0.0); std::vector vkdr3(this->bxyz,0.0); -#pragma omp for +#pragma omp for schedule(dynamic) for (int grid_index = 0; grid_index < this->nbxx; grid_index++) { const int na_grid = this->gridt->how_many_atoms[grid_index]; if (na_grid == 0) { diff --git a/source/module_hamilt_lcao/module_gint/gint_vl_gpu.cu b/source/module_hamilt_lcao/module_gint/gint_vl_gpu.cu index bf60ac8d7b..c58896f34c 100644 --- a/source/module_hamilt_lcao/module_gint/gint_vl_gpu.cu +++ b/source/module_hamilt_lcao/module_gint/gint_vl_gpu.cu @@ -41,10 +41,12 @@ void gint_vl_gpu(hamilt::HContainer* hRGint, const double vfactor = ucell.omega / gridt.ncxyz; const int nczp = nbzp * gridt.bz; std::vector streams(num_streams); + std::vector events(num_streams); for (int i = 0; i < num_streams; i++) { checkCuda(cudaStreamCreate(&streams[i])); + checkCuda(cudaEventCreateWithFlags(&events[i], cudaEventDisableTiming)); } const int nnrg = hRGint->get_nnr(); @@ -73,8 +75,20 @@ void gint_vl_gpu(hamilt::HContainer* hRGint, Cuda_Mem_Wrapper gemm_C(max_atompair_per_z, num_streams, true); #ifdef _OPENMP -#pragma omp parallel for num_threads(num_streams) collapse(2) +const int max_thread_num = std::min(omp_get_max_threads(), num_streams); #endif +#pragma omp parallel num_threads(max_thread_num) +{ +#ifdef _OPENMP + const int tid = omp_get_thread_num(); + const int num_threads = omp_get_num_threads(); + const int sid_start = tid * num_streams / num_threads; + const int thread_num_streams = tid == num_threads - 1 ? num_streams - sid_start : num_streams / num_threads; +#else + const int sid_start = 0; + const int thread_num_streams = num_streams; +#endif +#pragma omp for collapse(2) schedule(dynamic) for (int i = 0; i < gridt.nbx; i++) { for (int j = 0; j < gridt.nby; j++) @@ -82,12 +96,9 @@ void gint_vl_gpu(hamilt::HContainer* hRGint, // 20240620 Note that it must be set again here because // cuda's device is not safe in a multi-threaded environment. checkCuda(cudaSetDevice(gridt.dev_id)); -#ifdef _OPENMP - const int sid = omp_get_thread_num(); -#else - const int sid = 0; -#endif + const int sid = (i * gridt.nby + j) % thread_num_streams + sid_start; + checkCuda(cudaEventSynchronize(events[sid])); int max_m = 0; int max_n = 0; int atom_pair_num = 0; @@ -141,6 +152,7 @@ void gint_vl_gpu(hamilt::HContainer* hRGint, gemm_A.copy_host_to_device_async(streams[sid], sid, atom_pair_num); gemm_B.copy_host_to_device_async(streams[sid], sid, atom_pair_num); gemm_C.copy_host_to_device_async(streams[sid], sid, atom_pair_num); + checkCuda(cudaEventRecord(events[sid], streams[sid])); psi.memset_device_async(streams[sid], sid, 0); psi_vldr3.memset_device_async(streams[sid], sid, 0); @@ -187,9 +199,9 @@ void gint_vl_gpu(hamilt::HContainer* hRGint, streams[sid], nullptr); checkCudaLastError(); - checkCuda(cudaStreamSynchronize(streams[sid])); } } +} checkCuda(cudaMemcpy( hRGint->get_wrapper(), @@ -200,6 +212,7 @@ void gint_vl_gpu(hamilt::HContainer* hRGint, for (int i = 0; i < num_streams; i++) { checkCuda(cudaStreamDestroy(streams[i])); + checkCuda(cudaEventDestroy(events[i])); } } diff --git a/source/module_hamilt_lcao/module_hcontainer/atom_pair.h b/source/module_hamilt_lcao/module_hcontainer/atom_pair.h index ed6f205fa1..f0593641f9 100644 --- a/source/module_hamilt_lcao/module_hcontainer/atom_pair.h +++ b/source/module_hamilt_lcao/module_hcontainer/atom_pair.h @@ -118,6 +118,12 @@ class AtomPair */ void set_zero(); + /** + * @brief get begin index of this AtomPair + */ + int get_begin_row() const { return this->row_ap; } + int get_begin_col() const { return this->col_ap; } + /** * @brief get col_size for this AtomPair */ diff --git a/source/module_hamilt_lcao/module_hcontainer/func_folding.cpp b/source/module_hamilt_lcao/module_hcontainer/func_folding.cpp index af8f7c76d5..6d235b1d67 100644 --- a/source/module_hamilt_lcao/module_hcontainer/func_folding.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/func_folding.cpp @@ -15,7 +15,7 @@ template void folding_HR(const hamilt::HContainer& hR, std::complex* hk, const ModuleBase::Vector3& kvec_d_in, - const int ncol, + const int hk_ld, const int hk_type) { #ifdef _OPENMP @@ -24,9 +24,18 @@ void folding_HR(const hamilt::HContainer& hR, for (int i = 0; i < hR.size_atom_pairs(); ++i) { hamilt::AtomPair& tmp = hR.get_atom_pair(i); - for(int ir = 0;ir < tmp.get_R_size(); ++ir ) + const int row_size = tmp.get_row_size(); + const int col_size = tmp.get_col_size(); + // copy hk to hk_type + // hk_tmp is row-major and stored contiguously in memory, + // so copy hr to hk_tmp is faster than copy hr to hk + std::vector> hk_mat_tmp(row_size * col_size, 0); + + // copy hr to hk_tmp + for(int ir = 0; ir < tmp.get_R_size(); ++ir) { const ModuleBase::Vector3 r_index = tmp.get_R_index(ir); + TR* hr_mat = tmp.get_pointer(ir); // cal k_phase // if TK==std::complex, kphase is e^{ikR} const ModuleBase::Vector3 dR(r_index.x, r_index.y, r_index.z); @@ -34,9 +43,35 @@ void folding_HR(const hamilt::HContainer& hR, double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); std::complex kphase = std::complex(cosp, sinp); + + for(int i = 0; i < row_size * col_size; ++i) + { + hk_mat_tmp[i] += kphase * hr_mat[i]; + } + } - tmp.find_R(r_index); - tmp.add_to_matrix(hk, ncol, kphase, hk_type); + // copy hk_tmp to hk + if (hk_type == 0) + { + std::complex* hk_mat = hk + tmp.get_begin_row() * hk_ld + tmp.get_begin_col(); + for(int irow = 0; irow < row_size; ++irow) + { + for(int icol = 0; icol < col_size; ++icol) + { + hk_mat[irow * hk_ld + icol] += hk_mat_tmp[irow * col_size + icol]; + } + } + } + else if(hk_type == 1) + { + std::complex* hk_mat = hk + tmp.get_begin_col() * hk_ld + tmp.get_begin_row(); + for(int icol = 0; icol < col_size; ++icol) + { + for(int irow = 0; irow < row_size; ++irow) + { + hk_mat[icol * hk_ld + irow] += hk_mat_tmp[irow * col_size + icol]; + } + } } } /*for (int i = 0; i < hR.size_R_loop(); ++i) @@ -82,7 +117,7 @@ template void folding_HR(const hamilt::HContainer& hR, void folding_HR(const hamilt::HContainer& hR, double* hk, const ModuleBase::Vector3& kvec_d_in, - const int ncol, + const int hk_ld, const int hk_type) { // in ABACUS, this function works with gamma-only case. @@ -97,7 +132,7 @@ void folding_HR(const hamilt::HContainer& hR, double kphase = 1.0; // Hk = HR - hR.get_atom_pair(i).add_to_matrix(hk, ncol, kphase, hk_type); + hR.get_atom_pair(i).add_to_matrix(hk, hk_ld , kphase, hk_type); } } diff --git a/source/module_hamilt_lcao/module_hcontainer/hcontainer_funcs.h b/source/module_hamilt_lcao/module_hcontainer/hcontainer_funcs.h index 31bf65e3da..2243f05ba3 100644 --- a/source/module_hamilt_lcao/module_hcontainer/hcontainer_funcs.h +++ b/source/module_hamilt_lcao/module_hcontainer/hcontainer_funcs.h @@ -16,13 +16,13 @@ template void folding_HR(const hamilt::HContainer& hR, std::complex* hk, const ModuleBase::Vector3& kvec_d_in, - const int ncol, + const int hk_ld, const int hk_type); void folding_HR(const hamilt::HContainer& hR, double* hk, const ModuleBase::Vector3& kvec_d_in, - const int ncol, + const int hk_ld, const int hk_type); #ifdef __MPI diff --git a/source/module_io/get_wf_lcao.cpp b/source/module_io/get_wf_lcao.cpp index a94e61590d..421bbea703 100644 --- a/source/module_io/get_wf_lcao.cpp +++ b/source/module_io/get_wf_lcao.cpp @@ -1,6 +1,5 @@ #include "get_wf_lcao.h" -#include "module_parameter/parameter.h" #include "module_base/global_function.h" #include "module_base/global_variable.h" #include "module_base/memory.h" @@ -9,6 +8,7 @@ #include "module_io/cube_io.h" #include "module_io/write_wfc_pw.h" #include "module_io/write_wfc_r.h" +#include "module_parameter/parameter.h" IState_Envelope::IState_Envelope(const elecstate::ElecState* pes) { pes_ = pes; @@ -124,13 +124,13 @@ void IState_Envelope::begin(const UnitCell& ucell, const double ef_tmp = this->pes_->eferm.get_efval(is); ModuleIO::write_vdata_palgrid(pgrid, - pes_->charge->rho_save[is], - is, - nspin, - 0, - ss.str(), - ef_tmp, - &(ucell)); + pes_->charge->rho_save[is], + is, + nspin, + 0, + ss.str(), + ef_tmp, + &(ucell)); } } } @@ -150,81 +150,84 @@ void IState_Envelope::begin(const UnitCell& ucell, // Set this->bands_picked_ according to the mode select_bands(nbands_istate, out_wfc_re_im, nbands, nelec, mode_re_im, fermi_band); - // Calculate out_wfc_re_im - for (int ib = 0; ib < nbands; ++ib) + if (out_wfc_pw || out_wfc_r) { - if (bands_picked_[ib]) + // Calculate out_wfc_re_im + for (int ib = 0; ib < nbands; ++ib) { - std::cout << " Performing grid integral over real space grid for band " << ib + 1 << "..." << std::endl; - - for (int is = 0; is < nspin; ++is) + if (bands_picked_[ib]) { - ModuleBase::GlobalFunc::ZEROS(pes_->charge->rho[is], pw_wfc->nrxx); + std::cout << " Performing grid integral over real space grid for band " << ib + 1 << "..." << std::endl; - psid->fix_k(is); + for (int is = 0; is < nspin; ++is) + { + ModuleBase::GlobalFunc::ZEROS(pes_->charge->rho[is], pw_wfc->nrxx); + + psid->fix_k(is); #ifdef __MPI - wfc_2d_to_grid(psid->get_pointer(), para_orb, wfc_gamma_grid[is], gg.gridt->trace_lo); + wfc_2d_to_grid(psid->get_pointer(), para_orb, wfc_gamma_grid[is], gg.gridt->trace_lo); #else - // if not MPI enabled, it is the case psid holds a global matrix. use fix_k to switch between different - // spin channels (actually kpoints, because now the same kpoint in different spin channels are treated - // as distinct kpoints) + // if not MPI enabled, it is the case psid holds a global matrix. use fix_k to switch between + // different spin channels (actually kpoints, because now the same kpoint in different spin channels + // are treated as distinct kpoints) - for (int i = 0; i < nbands; ++i) - { - for (int j = 0; j < nlocal; ++j) + for (int i = 0; i < nbands; ++i) { - wfc_gamma_grid[is][i][j] = psid[0](i, j); + for (int j = 0; j < nlocal; ++j) + { + wfc_gamma_grid[is][i][j] = psid[0](i, j); + } } - } #endif - gg.cal_env(wfc_gamma_grid[is][ib], pes_->charge->rho[is], ucell); + gg.cal_env(wfc_gamma_grid[is][ib], pes_->charge->rho[is], ucell); - pes_->charge->save_rho_before_sum_band(); + pes_->charge->save_rho_before_sum_band(); - const double ef_tmp = this->pes_->eferm.get_efval(is); + const double ef_tmp = this->pes_->eferm.get_efval(is); - // only for gamma_only now - psi_g.fix_k(is); - this->set_pw_wfc(pw_wfc, is, ib, nspin, pes_->charge->rho, psi_g); + // only for gamma_only now + psi_g.fix_k(is); + this->set_pw_wfc(pw_wfc, is, ib, nspin, pes_->charge->rho, psi_g); - // Calculate real-space wave functions - psi_g.fix_k(is); - std::vector> wfc_r(pw_wfc->nrxx); - pw_wfc->recip2real(&psi_g(ib, 0), wfc_r.data(), is); + // Calculate real-space wave functions + psi_g.fix_k(is); + std::vector> wfc_r(pw_wfc->nrxx); + pw_wfc->recip2real(&psi_g(ib, 0), wfc_r.data(), is); - // Extract real and imaginary parts - std::vector wfc_real(pw_wfc->nrxx); - std::vector wfc_imag(pw_wfc->nrxx); - for (int ir = 0; ir < pw_wfc->nrxx; ++ir) - { - wfc_real[ir] = wfc_r[ir].real(); - wfc_imag[ir] = wfc_r[ir].imag(); - } + // Extract real and imaginary parts + std::vector wfc_real(pw_wfc->nrxx); + std::vector wfc_imag(pw_wfc->nrxx); + for (int ir = 0; ir < pw_wfc->nrxx; ++ir) + { + wfc_real[ir] = wfc_r[ir].real(); + wfc_imag[ir] = wfc_r[ir].imag(); + } - // Output real part - std::stringstream ss_real; - ss_real << global_out_dir << "BAND" << ib + 1 << "_GAMMA" << "_SPIN" << is + 1 << "_REAL.cube"; - ModuleIO::write_vdata_palgrid(pgrid, - wfc_real.data(), - is, - nspin, - 0, - ss_real.str(), - ef_tmp, - &(ucell)); - - // Output imaginary part - std::stringstream ss_imag; - ss_imag << global_out_dir << "BAND" << ib + 1 << "_GAMMA" << "_SPIN" << is + 1 << "_IMAG.cube"; - ModuleIO::write_vdata_palgrid(pgrid, - wfc_imag.data(), - is, - nspin, - 0, - ss_imag.str(), - ef_tmp, - &(ucell)); + // Output real part + std::stringstream ss_real; + ss_real << global_out_dir << "BAND" << ib + 1 << "_GAMMA" << "_SPIN" << is + 1 << "_REAL.cube"; + ModuleIO::write_vdata_palgrid(pgrid, + wfc_real.data(), + is, + nspin, + 0, + ss_real.str(), + ef_tmp, + &(ucell)); + + // Output imaginary part + std::stringstream ss_imag; + ss_imag << global_out_dir << "BAND" << ib + 1 << "_GAMMA" << "_SPIN" << is + 1 << "_IMAG.cube"; + ModuleIO::write_vdata_palgrid(pgrid, + wfc_imag.data(), + is, + nspin, + 0, + ss_imag.str(), + ef_tmp, + &(ucell)); + } } } } @@ -240,7 +243,7 @@ void IState_Envelope::begin(const UnitCell& ucell, if (out_wfc_r) { - ModuleIO::write_psi_r_1(ucell,psi_g, pw_wfc, "wfc_realspace", false, kv); + ModuleIO::write_psi_r_1(ucell, psi_g, pw_wfc, "wfc_realspace", false, kv); } for (int is = 0; is < nspin; ++is) @@ -359,15 +362,15 @@ void IState_Envelope::begin(const UnitCell& ucell, const double ef_tmp = this->pes_->eferm.get_efval(ispin); ModuleIO::write_vdata_palgrid(pgrid, - pes_->charge->rho[ispin], - ispin, - nspin, - 0, - ss.str(), - ef_tmp, - &(ucell), - 3, - 1); + pes_->charge->rho[ispin], + ispin, + nspin, + 0, + ss.str(), + ef_tmp, + &(ucell), + 3, + 1); if (out_wf || out_wf_r) { @@ -390,7 +393,7 @@ void IState_Envelope::begin(const UnitCell& ucell, } if (out_wf_r) { - ModuleIO::write_psi_r_1(ucell,psi_g, pw_wfc, "wfc_realspace", false, kv); + ModuleIO::write_psi_r_1(ucell, psi_g, pw_wfc, "wfc_realspace", false, kv); } std::cout << " Outputting real-space wave functions in cube format..." << std::endl; @@ -427,26 +430,26 @@ void IState_Envelope::begin(const UnitCell& ucell, << "_REAL.cube"; const double ef_tmp = this->pes_->eferm.get_efval(ispin); ModuleIO::write_vdata_palgrid(pgrid, - wfc_real.data(), - ispin, - nspin, - 0, - ss_real.str(), - ef_tmp, - &(ucell)); + wfc_real.data(), + ispin, + nspin, + 0, + ss_real.str(), + ef_tmp, + &(ucell)); // Output imaginary part std::stringstream ss_imag; ss_imag << global_out_dir << "BAND" << ib + 1 << "_k_" << ik + 1 << "_s_" << ispin + 1 << "_IMAG.cube"; ModuleIO::write_vdata_palgrid(pgrid, - wfc_imag.data(), - ispin, - nspin, - 0, - ss_imag.str(), - ef_tmp, - &(ucell)); + wfc_imag.data(), + ispin, + nspin, + 0, + ss_imag.str(), + ef_tmp, + &(ucell)); } } } diff --git a/source/module_io/input_conv.h b/source/module_io/input_conv.h index e14c10dac7..bbb51df101 100644 --- a/source/module_io/input_conv.h +++ b/source/module_io/input_conv.h @@ -47,10 +47,15 @@ void parse_expression(const std::string& fn, std::vector& vec) { ModuleBase::TITLE("Input_Conv", "parse_expression"); int count = 0; - std::string pattern("([-+]?[0-9]+\\*[-+]?[0-9.]+|[-+]?[0-9,.]+)"); + + // Update the regex pattern to handle scientific notation + std::string pattern("([-+]?[0-9]+\\*[-+]?[0-9.eE+-]+|[-+]?[0-9,.eE+-]+)"); + std::vector str; std::stringstream ss(fn); std::string section; + + // Split the input string into substrings by spaces while (ss >> section) { int index = 0; @@ -64,24 +69,14 @@ void parse_expression(const std::string& fn, std::vector& vec) section.erase(0, index); str.push_back(section); } - // std::string::size_type pos1, pos2; - // std::string c = " "; - // pos2 = fn.find(c); - // pos1 = 0; - // while (std::string::npos != pos2) - // { - // str.push_back(fn.substr(pos1, pos2 - pos1)); - // pos1 = pos2 + c.size(); - // pos2 = fn.find(c, pos1); - // } - // if (pos1 != fn.length()) - // { - // str.push_back(fn.substr(pos1)); - // } + + // Compile the regular expression regex_t reg; regcomp(®, pattern.c_str(), REG_EXTENDED); regmatch_t pmatch[1]; const size_t nmatch = 1; + + // Loop over each section and apply regex to extract numbers for (size_t i = 0; i < str.size(); ++i) { if (str[i] == "") @@ -90,25 +85,28 @@ void parse_expression(const std::string& fn, std::vector& vec) } int status = regexec(®, str[i].c_str(), nmatch, pmatch, 0); std::string sub_str = ""; + + // Extract the matched substring for (size_t j = pmatch[0].rm_so; j != pmatch[0].rm_eo; ++j) { sub_str += str[i][j]; } + + // Check if the substring contains multiplication (e.g., "2*3.14") std::string sub_pattern("\\*"); regex_t sub_reg; regcomp(&sub_reg, sub_pattern.c_str(), REG_EXTENDED); regmatch_t sub_pmatch[1]; const size_t sub_nmatch = 1; + if (regexec(&sub_reg, sub_str.c_str(), sub_nmatch, sub_pmatch, 0) == 0) { size_t pos = sub_str.find("*"); int num = stoi(sub_str.substr(0, pos)); - assert(num>=0); + assert(num >= 0); T occ = stof(sub_str.substr(pos + 1, sub_str.size())); - // std::vector ocp_temp(num, occ); - // const std::vector::iterator dest = vec.begin() + count; - // copy(ocp_temp.begin(), ocp_temp.end(), dest); - // count += num; + + // Add the value to the vector `num` times for (size_t k = 0; k != num; k++) { vec.emplace_back(occ); @@ -116,16 +114,17 @@ void parse_expression(const std::string& fn, std::vector& vec) } else { - // vec[count] = stof(sub_str); - // count += 1; + // Handle scientific notation and convert to T std::stringstream convert; convert << sub_str; T occ; convert >> occ; vec.emplace_back(occ); } + regfree(&sub_reg); } + regfree(®); } diff --git a/source/module_io/read_input_item_elec_stru.cpp b/source/module_io/read_input_item_elec_stru.cpp index e5c2a71fd8..73c741bb5f 100644 --- a/source/module_io/read_input_item_elec_stru.cpp +++ b/source/module_io/read_input_item_elec_stru.cpp @@ -122,9 +122,23 @@ void ReadInput::item_elec_stru() } else if (ks_solver == "cusolver" || ks_solver == "cusolvermp") { + std::string warningstr; #ifndef __MPI ModuleBase::WARNING_QUIT("ReadInput", "Cusolver can not be used for series version."); #endif +#ifndef __CUDA + warningstr = "ks_solver is set to " + ks_solver + " but ABACUS is built with CPU only!\n" + + " Please rebuild ABACUS with GPU support or change the ks_solver."; + ModuleBase::WARNING_QUIT("ReadInput", warningstr); +#endif + if( ks_solver == "cusolvermp") + { +#ifndef __CUSOLVERMP + warningstr = "ks_solver is set to cusolvermp, but ABACUS is not built with cusolvermp support\n" + " Please rebuild ABACUS with cusolvermp support or change the ks_solver."; + ModuleBase::WARNING_QUIT("ReadInput", warningstr); +#endif + } } else if (ks_solver == "pexsi") { diff --git a/source/module_io/unk_overlap_pw.cpp b/source/module_io/unk_overlap_pw.cpp index d0d1d7c706..46e35b2aea 100644 --- a/source/module_io/unk_overlap_pw.cpp +++ b/source/module_io/unk_overlap_pw.cpp @@ -81,7 +81,7 @@ std::complex unkOverlap_pw::unkdotp_G0(const ModulePW::PW_Basis* rhopw, std::complex* phase = new std::complex[rhopw->nmaxgr]; // get the phase value in realspace - for (int ig = 0; ig < rhopw->nmaxgr; ig++) + for (int ig = 0; ig < rhopw->npw; ig++) { ModuleBase::Vector3 delta_G = rhopw->gdirect[ig] - G; if (delta_G.norm2() < 1e-10) // rhopw->gdirect[ig] == G @@ -95,7 +95,7 @@ std::complex unkOverlap_pw::unkdotp_G0(const ModulePW::PW_Basis* rhopw, rhopw->recip2real(phase, phase); wfcpw->recip2real(&evc[0](ik_L, iband_L, 0), psi_r, ik_L); - for (int ir = 0; ir < rhopw->nmaxgr; ir++) + for (int ir = 0; ir < rhopw->nrxx; ir++) { psi_r[ir] = psi_r[ir] * phase[ir]; } diff --git a/source/module_io/write_dmr.cpp b/source/module_io/write_dmr.cpp index b7ce1124eb..1b3c96c937 100644 --- a/source/module_io/write_dmr.cpp +++ b/source/module_io/write_dmr.cpp @@ -61,7 +61,6 @@ void write_dmr(const std::vector*> dmr, { if (!out_csr && !out_npz) { - ModuleBase::WARNING("write_dmr", "the output type of DMR should be npz or csr."); return; } diff --git a/source/module_ri/Exx_LRI.hpp b/source/module_ri/Exx_LRI.hpp index 206f88e2c4..26c494a805 100644 --- a/source/module_ri/Exx_LRI.hpp +++ b/source/module_ri/Exx_LRI.hpp @@ -283,6 +283,11 @@ void Exx_LRI::cal_exx_force(const int& nat) ModuleBase::TITLE("Exx_LRI","cal_exx_force"); ModuleBase::timer::tick("Exx_LRI", "cal_exx_force"); + if (!this->exx_lri.flag_finish.D) + { + ModuleBase::WARNING_QUIT("Force_Stress_LCAO", "Cannot calculate EXX force when the first PBE loop is not converged."); + } + this->force_exx.create(nat, Ndim); for(int is=0; is::exx_beforescf(const int istep, #ifdef __MPI if (GlobalC::exx_info.info_global.cal_exx) { - if (GlobalC::restart.info_load.load_H_finish && !GlobalC::restart.info_load.restart_exx) { XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); - } - else if (istep > 0) { XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); - } + if ((GlobalC::restart.info_load.load_H_finish && !GlobalC::restart.info_load.restart_exx) + || (istep > 0) + || (PARAM.inp.init_wfc == "file")) + { + XC_Functional::set_xc_type(ucell.atoms[0].ncpp.xc_func); + } else { if (ucell.atoms[0].ncpp.xc_func == "HF" || ucell.atoms[0].ncpp.xc_func == "PBE0" || ucell.atoms[0].ncpp.xc_func == "HSE") @@ -122,8 +124,10 @@ void Exx_LRI_Interface::exx_eachiterinit(const int istep, { if (GlobalC::exx_info.info_global.cal_exx) { - if (!GlobalC::exx_info.info_global.separate_loop && (this->two_level_step || istep > 0)) + if (!GlobalC::exx_info.info_global.separate_loop && (this->two_level_step || istep > 0 || PARAM.inp.init_wfc == "file") // non separate loop case + || (GlobalC::exx_info.info_global.separate_loop && PARAM.inp.init_wfc == "file" && this->two_level_step == 0 && iter == 1)) // the first iter in separate loop case { + std::cout << "update exx" << std::endl; const bool flag_restart = (iter == 1) ? true : false; auto cal = [this, &ucell,&kv, &flag_restart](const elecstate::DensityMatrix& dm_in) { @@ -313,7 +317,8 @@ bool Exx_LRI_Interface::exx_after_converge( std::cout << " Updating EXX " << std::flush; timeval t_start; gettimeofday(&t_start, nullptr); - const bool flag_restart = (this->two_level_step == 0) ? true : false; + // if init_wfc == "file", DM is calculated in the 1st iter of the 1st two-level step, so we mix it here + const bool flag_restart = (this->two_level_step == 0 && PARAM.inp.init_wfc != "file") ? true : false; if (this->exx_spacegroup_symmetry) {this->mix_DMk_2D.mix(symrot_.restore_dm(kv, dm.get_DMK_vector(), *dm.get_paraV_pointer()), flag_restart);} diff --git a/source/module_ri/RI_2D_Comm.hpp b/source/module_ri/RI_2D_Comm.hpp index 055ea914ef..f40e6f59d4 100644 --- a/source/module_ri/RI_2D_Comm.hpp +++ b/source/module_ri/RI_2D_Comm.hpp @@ -263,12 +263,6 @@ void RI_2D_Comm::add_HexxR( cell_nearest->get_cell_nearest_discrete(iat0, iat1, cell) : cell)); hamilt::BaseMatrix* HlocR = hR.find_matrix(iat0, iat1, R.x, R.y, R.z); - if (HlocR == nullptr) - { // add R to HContainer - hamilt::AtomPair tmp(iat0, iat1, R.x, R.y, R.z, &pv); - hR.insert_pair(tmp); - HlocR = hR.find_matrix(iat0, iat1, R.x, R.y, R.z); - } auto row_indexes = pv.get_indexes_row(iat0); auto col_indexes = pv.get_indexes_col(iat1); const RI::Tensor& HexxR = (Tdata)alpha * Hs_tmpB.second; diff --git a/source/module_ri/module_exx_symmetry/irreducible_sector_bvk.cpp b/source/module_ri/module_exx_symmetry/irreducible_sector_bvk.cpp index 5efd046d73..50df31b360 100644 --- a/source/module_ri/module_exx_symmetry/irreducible_sector_bvk.cpp +++ b/source/module_ri/module_exx_symmetry/irreducible_sector_bvk.cpp @@ -136,7 +136,7 @@ namespace ModuleSymmetry symm.getgroup(bvk_npg, bvk_nsg, GlobalV::ofs_running, bvk_nop, bvk_op.data(), bvk_gmatrix.data(), bvk_gtrans.data(), bvk_dpos.data(), bvk_rot_dpos.data(), order_index.data(), - bvk_itmin_type, bvk_itmin_start, bvk_istart.data(), bvk_na.data()); + symm.ntype, bvk_itmin_type, bvk_itmin_start, bvk_istart.data(), bvk_na.data()); bvk_gmatrix.resize(bvk_nsg); bvk_gtrans.resize(bvk_nsg); this->bvk_nsym_ = bvk_nsg; diff --git a/source/version.h b/source/version.h index 5bed48cdd9..3251f52e52 100644 --- a/source/version.h +++ b/source/version.h @@ -1,3 +1,3 @@ #ifndef VERSION -#define VERSION "v3.9.0" +#define VERSION "v3.10.0" #endif diff --git a/tests/PP_ORB/Ti_gga_8au_100Ry_4s2p2d1f.orb b/tests/PP_ORB/Ti_gga_8au_100Ry_4s2p2d1f.orb index 53c70a7b2a..1d626176a4 100644 --- a/tests/PP_ORB/Ti_gga_8au_100Ry_4s2p2d1f.orb +++ b/tests/PP_ORB/Ti_gga_8au_100Ry_4s2p2d1f.orb @@ -3,7 +3,7 @@ Element Ti Energy Cutoff(Ry) 100 Radius Cutoff(a.u.) 8 Lmax 3 -Number of Sorbital--> 4 +Number of Sorbital--> 3 Number of Porbital--> 2 Number of Dorbital--> 2 Number of Forbital--> 1 diff --git a/tests/integrate/104_PW_NC_magnetic/result.ref b/tests/integrate/104_PW_NC_magnetic/result.ref index 820880db4a..216b7f03ac 100644 --- a/tests/integrate/104_PW_NC_magnetic/result.ref +++ b/tests/integrate/104_PW_NC_magnetic/result.ref @@ -1,5 +1,5 @@ -etotref -6156.9375268152816716 -etotperatomref -3078.4687634076 -totalforceref 2.210980 -totalstressref 76010.262300 -totaltimeref 3.16 +etotref -6156.9375288902656393 +etotperatomref -3078.4687644451 +totalforceref 2.221910 +totalstressref 76009.325784 +totaltimeref 8.15 diff --git a/tests/integrate/110_PW_DOJO_SY/INPUT b/tests/integrate/110_PW_DOJO_SY/INPUT new file mode 100644 index 0000000000..109c4f8495 --- /dev/null +++ b/tests/integrate/110_PW_DOJO_SY/INPUT @@ -0,0 +1,31 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf + +symmetry 1 +pseudo_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +scf_thr 1e-9 +scf_nmax 100 +#Parameters (3.Basis) +basis_type pw +ks_solver dav_subspace +pw_diag_ndim 2 + +#Parameters (4.Smearing) +smearing_method gauss +smearing_sigma 0.002 + +#Parameters (5.Mixing) +mixing_type broyden +mixing_beta 0.7 + +dft_functional XC_GGA_X_PBE+XC_GGA_C_PBE + +cal_force 1 +cal_stress 1 + +pw_seed 1 diff --git a/tests/integrate/110_PW_DOJO_SY/KPT b/tests/integrate/110_PW_DOJO_SY/KPT new file mode 100644 index 0000000000..f5f7f4ec34 --- /dev/null +++ b/tests/integrate/110_PW_DOJO_SY/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +2 2 2 0 0 0 diff --git a/tests/integrate/110_PW_DOJO_SY/STRU b/tests/integrate/110_PW_DOJO_SY/STRU new file mode 100644 index 0000000000..ec33b2be41 --- /dev/null +++ b/tests/integrate/110_PW_DOJO_SY/STRU @@ -0,0 +1,34 @@ +ATOMIC_SPECIES +Si 14.000 Si_dojo_soc.upf + +LATTICE_CONSTANT +1.0 + +LATTICE_VECTORS + 10.20000 10.20000 0.00000 + 10.20000 0.00000 10.20000 + 0.00000 10.20000 10.20000 + +ATOMIC_POSITIONS +Direct + +Si +0.0 +16 + 0.0000000 0.0000000 0.0000000 1 1 1 + 0.1250000 0.1250000 0.1250000 1 1 1 + 0.0000000 0.0000000 0.5000000 1 1 1 + 0.1250000 0.1250000 0.6250000 1 1 1 + 0.0000000 0.5000000 0.0000000 1 1 1 + 0.1250000 0.6250000 0.1250000 1 1 1 + 0.0000000 0.5000000 0.5000000 1 1 1 + 0.1250000 0.6250000 0.6250000 1 1 1 + 0.5000000 0.0000000 0.0000000 1 1 1 + 0.6250000 0.1250000 0.1250000 1 1 1 + 0.5000000 0.0000000 0.5000000 1 1 1 + 0.6250000 0.1250000 0.6250000 1 1 1 + 0.5000000 0.5000000 0.0000000 1 1 1 + 0.6250000 0.6250000 0.1250000 1 1 1 + 0.5000000 0.5000000 0.5000000 1 1 1 + 0.6250000 0.6250000 0.6250000 1 1 1 + diff --git a/tests/integrate/110_PW_DOJO_SY/jd b/tests/integrate/110_PW_DOJO_SY/jd new file mode 100644 index 0000000000..0d97386ac6 --- /dev/null +++ b/tests/integrate/110_PW_DOJO_SY/jd @@ -0,0 +1 @@ +Aim to check stress/force/energy correctness with LIBXC and DOJO pseudopotential diff --git a/tests/integrate/110_PW_DOJO_SY/result.ref b/tests/integrate/110_PW_DOJO_SY/result.ref new file mode 100644 index 0000000000..34140be57b --- /dev/null +++ b/tests/integrate/110_PW_DOJO_SY/result.ref @@ -0,0 +1,8 @@ +etotref -1840.2800817366623960 +etotperatomref -115.0175051085 +totalforceref 0.000450 +totalstressref 124.874001 +pointgroupref T_d +spacegroupref O_h +nksibzref 3 +totaltimeref 3.44 diff --git a/tests/integrate/204_NO_KP_NC/result.ref b/tests/integrate/204_NO_KP_NC/result.ref index c5839f7dba..21090b6527 100644 --- a/tests/integrate/204_NO_KP_NC/result.ref +++ b/tests/integrate/204_NO_KP_NC/result.ref @@ -1,4 +1,4 @@ -etotref -6436.214785907474 -etotperatomref -3218.1073929537 -totalforceref 0.000004 -totaltimeref 9.89 +etotref -6436.214785887475 +etotperatomref -3218.1073929437 +totalforceref 0.000000 +totaltimeref 25.77 diff --git a/tests/integrate/204_NO_NC_magnetic/result.ref b/tests/integrate/204_NO_NC_magnetic/result.ref index f25bf05159..8f88df4886 100644 --- a/tests/integrate/204_NO_NC_magnetic/result.ref +++ b/tests/integrate/204_NO_NC_magnetic/result.ref @@ -1,7 +1,7 @@ -etotref -6445.388690278916 -etotperatomref -3222.6943451395 +etotref -6445.388690281095 +etotperatomref -3222.6943451405 Compare_mulliken_pass 0 pointgroupref O_h spacegroupref O_h nksibzref 1 -totaltimeref 12.798 +totaltimeref 26.12 diff --git a/tests/integrate/218_NO_mixing_tau/INPUT b/tests/integrate/218_NO_mixing_tau/INPUT new file mode 100644 index 0000000000..6ab222c77c --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/INPUT @@ -0,0 +1,37 @@ +INPUT_PARAMETERS RUNNING ABACUS-DFT + +#Parameters (1.General) +suffix autotest # suffix of OUTPUT DIR +nspin 2 # 1/2/4 4 for SOC +symmetry 0 # 0/1 1 for open, default +esolver_type ksdft # ksdft, ofdft, sdft, tddft, lj, dp +dft_functional MGGA_X_R2SCAN+MGGA_C_R2SCAN # same as upf file, can be lda/pbe/scan/hf/pbe0/hse +ks_solver genelpa # default for ksdft-lcao +vdw_method none # d3 , d3_bj, none +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +calculation scf # scf relax cell-relax md +ecutwfc 20 +scf_thr 1e-7 +printe 1 +#Parameters (3.Basis) +basis_type lcao # lcao or pw +gamma_only 1 # 0/1, replace KPT + +#Parameters (4.Smearing) +smearing_method cold # mp/gaussian/cold/fixed +smearing_sigma 0.008 # Rydberg + +nx 3 +ny 3 +nz 3 + +#Parameters (5.Mixing) +mixing_type broyden # pulay/broyden +mixing_ndim 20 +mixing_beta 0.4 # for metal: 0.05-0.4 +mixing_gg0 1.0 # only for metal +mixing_tau true + diff --git a/tests/integrate/218_NO_mixing_tau/KPT b/tests/integrate/218_NO_mixing_tau/KPT new file mode 100644 index 0000000000..c289c0158a --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +1 1 1 0 0 0 diff --git a/tests/integrate/218_NO_mixing_tau/STRU b/tests/integrate/218_NO_mixing_tau/STRU new file mode 100644 index 0000000000..ccb4619857 --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/STRU @@ -0,0 +1,21 @@ +ATOMIC_SPECIES +C 12.011 C.LDA.UPF + +NUMERICAL_ORBITAL +C_gga_8au_100Ry_2s2p1d.orb + +LATTICE_CONSTANT +1.889726 + +LATTICE_VECTORS + 1.5000000000 0.0000000000 0.0000000000 #latvec1 + 0.0000000000 1.5000000000 0.0000000000 #latvec2 + 0.0000000000 0.0000000000 1.5000000000 #latvec3 + +ATOMIC_POSITIONS +Direct + +C #label +0.0000 #magnetism +1 #number of atoms + 0.0000000000 0.0000000000 0.0000000000 m 0 0 0 diff --git a/tests/integrate/218_NO_mixing_tau/jd b/tests/integrate/218_NO_mixing_tau/jd new file mode 100644 index 0000000000..a2fce4bf60 --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/jd @@ -0,0 +1 @@ +r2scan functional with mixing tau test in LCAO base. System: C in a 2*2*2-Angstrom^3 box. diff --git a/tests/integrate/218_NO_mixing_tau/result.ref b/tests/integrate/218_NO_mixing_tau/result.ref new file mode 100644 index 0000000000..c6c8f33142 --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/result.ref @@ -0,0 +1,3 @@ +etotref -122.1473084278620 +etotperatomref -122.1473084279 +totaltimeref 2.60 diff --git a/tests/integrate/284_NO_KP_symmetry/result.ref b/tests/integrate/284_NO_KP_symmetry/result.ref index 2971aacf21..dce80e2293 100644 --- a/tests/integrate/284_NO_KP_symmetry/result.ref +++ b/tests/integrate/284_NO_KP_symmetry/result.ref @@ -1,8 +1,8 @@ -etotref -23542.4694009632003144 -etotperatomref -1569.4979600642 -totalforceref 735.306633 -totalstressref 771.858070 +etotref -23542.3282006428744353 +etotperatomref -1569.4885467095 +totalforceref 685.072329 +totalstressref 829.696556 pointgroupref C_1h spacegroupref D_3h nksibzref 4 -totaltimeref 18.68 +totaltimeref 21.81 diff --git a/tests/integrate/CASES_CPU.txt b/tests/integrate/CASES_CPU.txt index 134be1fbae..18c420fd89 100644 --- a/tests/integrate/CASES_CPU.txt +++ b/tests/integrate/CASES_CPU.txt @@ -72,6 +72,7 @@ 109_PW_CR_fix_c 109_PW_CR_moveatoms 110_PW_SY +110_PW_DOJO_SY 110_PW_SY_symmetry 110_PW_SY_symmetry_6K 110_PW_SY_symmetry_LiRh @@ -183,6 +184,7 @@ 216_NO_scan_Si2 217_NO_out_pot 217_NO_out_pot_nscf +218_NO_mixing_tau 219_NO_out_elf 220_NO_KP_MD_MSST #220_NO_KP_MD_MSST_level2 @@ -228,7 +230,7 @@ 311_NO_GO_elec_minus 311_NO_GO_S2_elec_minus 312_NO_GO_wfc_file -#312_NO_GO_wfc_get_wf +312_NO_GO_wfc_get_wf 312_NO_GO_wfc_get_pchg 312_NO_GO_wfc_out 313_NO_GO_mulliken diff --git a/tests/integrate/tools/catch_properties.sh b/tests/integrate/tools/catch_properties.sh index 7b4e222228..b4447dc163 100755 --- a/tests/integrate/tools/catch_properties.sh +++ b/tests/integrate/tools/catch_properties.sh @@ -401,7 +401,7 @@ if ! test -z "$out_dm" && [ $out_dm == 1 ]; then fi if ! test -z "$out_mul" && [ $out_mul == 1 ]; then - python3 ../tools/CompareFile.py mulliken.txt.ref OUT.autotest/mulliken.txt 6 + python3 ../tools/CompareFile.py mulliken.txt.ref OUT.autotest/mulliken.txt 4 echo "Compare_mulliken_pass $?" >>$1 fi