From e35b4bf65806981091fa6d3424b420eeaee0abda Mon Sep 17 00:00:00 2001 From: Qianrui Liu <76200646+Qianruipku@users.noreply.github.com> Date: Sat, 14 Dec 2024 09:12:09 +0800 Subject: [PATCH 01/44] update version (#5726) --- source/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/version.h b/source/version.h index 7d4625f8b0..98f6deffee 100644 --- a/source/version.h +++ b/source/version.h @@ -1,3 +1,3 @@ #ifndef VERSION -#define VERSION "v3.8.4" +#define VERSION "v3.8.5" #endif From 89df0f2ffc8ed950eba18ab83a1ba71789ce7c51 Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Sat, 14 Dec 2024 09:14:02 +0800 Subject: [PATCH 02/44] Fix: update kinetic energy when all atoms are fixed (#5729) * Fix: update kinetic energy when all atoms are fixed * fix wrong order --- source/module_md/md_func.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/source/module_md/md_func.cpp b/source/module_md/md_func.cpp index 3d40ca3f7e..07bc1f03f2 100644 --- a/source/module_md/md_func.cpp +++ b/source/module_md/md_func.cpp @@ -453,6 +453,7 @@ double current_temp(double& kinetic, { if (3 * natom == frozen_freedom) { + kinetic = 0.0; return 0.0; } else From c099d03a7656f89110d50a727d90353ae1a3c96b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B4=B9=E6=89=AC?= <101172982+19hello@users.noreply.github.com> Date: Sat, 14 Dec 2024 09:19:46 +0800 Subject: [PATCH 03/44] update bfgs_trad method (#5662) * update bfgs method * update bfgs method and modify the parameter force in relax_step to be passed by reference * update bfgs method and modify the parameter force in relax_step to be passed by reference * Introduce the differences between the two BFGS methods * Add & in relax_step input parameters --- docs/advanced/input_files/input-main.md | 1 + docs/advanced/opt.md | 4 +++- source/module_relax/relax_old/bfgs.cpp | 9 +++++---- source/module_relax/relax_old/bfgs.h | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 4b9790fc27..2b5d1009af 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -1375,6 +1375,7 @@ These variables are used to control the geometry relaxation. - **Description**: The methods to do geometry optimization. - cg: using the conjugate gradient (CG) algorithm. Note that there are two implementations of the conjugate gradient (CG) method, see [relax_new](#relax_new). - bfgs: using the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm. + - bfgs_trad: using the traditional Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm. - cg_bfgs: using the CG method for the initial steps, and switching to BFGS method when the force convergence is smaller than [relax_cg_thr](#relax_cg_thr). - sd: using the steepest descent (SD) algorithm. - fire: the Fast Inertial Relaxation Engine method (FIRE), a kind of molecular-dynamics-based relaxation algorithm, is implemented in the molecular dynamics (MD) module. The algorithm can be used by setting [calculation](#calculation) to `md` and [md_type](#md_type) to `fire`. Also ionic velocities should be set in this case. See [fire](../md.md#fire) for more details. diff --git a/docs/advanced/opt.md b/docs/advanced/opt.md index e27800aa4d..9c2023b655 100644 --- a/docs/advanced/opt.md +++ b/docs/advanced/opt.md @@ -22,7 +22,9 @@ In the nested procedure mentioned above, we used CG method to perform cell relax The [BFGS method](https://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm) is a quasi-Newton method for solving nonlinear optimization problem. It belongs to the class of quasi-Newton method where the Hessian matrix is approximated during the optimization process. If the initial point is not far from the extrema, BFGS tends to work better than gradient-based methods. -In ABACUS, we implemented the BFGS method for doing fixed-cell structural relaxation. +There is an alternative traditional BFGS method, which can be called by using the keyword 'bfgs_trad'. The bfgs_trad method is a quasi-Newton method that substitute an approximate matrix B for the Hessian matrix. The main difference between 'bfgs' and 'bfgs_trad' is that 'bfgs' updates the inverse of matrix B while 'bfgs_trad' updates matrix B and obtains the inverse of B by solving the matrix eigenvalues and taking the reciprocal of the eigenvalues. Both methods are mathematically equivalent, but in some cases, 'bfgs_trad' performs better. + +In ABACUS, we implemented the BFGS method for doing fixed-cell structural relaxation. Users can choose which implementation of BFGS to call by adding the 'bfgs_trad' or 'bfgs' parameter. ### SD method diff --git a/source/module_relax/relax_old/bfgs.cpp b/source/module_relax/relax_old/bfgs.cpp index 01f96a7d5c..39bb3c991b 100644 --- a/source/module_relax/relax_old/bfgs.cpp +++ b/source/module_relax/relax_old/bfgs.cpp @@ -7,7 +7,7 @@ //! initialize H0、H、pos0、force0、force void BFGS::allocate(const int _size) { - alpha=70; + alpha=70;//default value in ase is 70 maxstep=PARAM.inp.relax_bfgs_rmax; size=_size; sign =true; @@ -29,8 +29,9 @@ void BFGS::allocate(const int _size) steplength = std::vector(size, 0.0); } -void BFGS::relax_step(ModuleBase::matrix _force, - UnitCell& ucell) + +void BFGS::relax_step(const ModuleBase::matrix& _force,UnitCell& ucell) + { GetPos(ucell,pos); GetPostaud(ucell,pos_taud); @@ -380,7 +381,7 @@ void BFGS::IsRestrain(std::vector>& dpos) * ModuleBase::Ry_to_eV / 0.529177 grad= std::vector(3*size, 0.0); int iat = 0; diff --git a/source/module_relax/relax_old/bfgs.h b/source/module_relax/relax_old/bfgs.h index 5b7ae415c0..fba422c886 100644 --- a/source/module_relax/relax_old/bfgs.h +++ b/source/module_relax/relax_old/bfgs.h @@ -49,14 +49,14 @@ class BFGS * @param _size */ void allocate(const int _size);//initialize parameters - void relax_step(ModuleBase::matrix _force,UnitCell& ucell);// + void relax_step(const ModuleBase::matrix& _force,UnitCell& ucell);// void PrepareStep(std::vector>& force,std::vector>& pos,std::vector>& H,std::vector& pos0,std::vector& force0,std::vector& steplength,std::vector>& dpos,UnitCell& ucell); void IsRestrain(std::vector>& dpos); private: bool sign; - void CalculateLargestGrad(ModuleBase::matrix& _force,UnitCell& ucell); + void CalculateLargestGrad(const ModuleBase::matrix& _force,UnitCell& ucell); void GetPos(UnitCell& ucell,std::vector>& pos); void GetPostaud(UnitCell& ucell,std::vector>& pos_taud); void Update(std::vector& pos, std::vector& force,std::vector>& H,UnitCell& ucell); From 5c815a167418aa00505819dab70df61bc9342c6e Mon Sep 17 00:00:00 2001 From: Erjie Wu <110683255+ErjieWu@users.noreply.github.com> Date: Mon, 16 Dec 2024 12:16:38 +0800 Subject: [PATCH 04/44] Refactor: Change some functions in module_deepks into template. (#5731) * Change cal_o_delta and cal_e_delta_band into templates. * Change cal_projected_DM to template. * Temporarily add the function of cal_f_delta_k into cal_f_delta_gamma. * Update FORCE_gamma.cpp * Update deepks_fgamma.cpp * Update deepks_force.h * Update deepks_force.h * Update deepks_force.h --- .../hamilt_lcaodft/FORCE_gamma.cpp | 15 +- .../operator_lcao/deepks_lcao.cpp | 6 +- .../module_deepks/LCAO_deepks.cpp | 9 +- .../module_deepks/LCAO_deepks.h | 50 +-- .../module_deepks/LCAO_deepks_interface.cpp | 4 +- .../module_deepks/LCAO_deepks_odelta.cpp | 88 ++--- .../module_deepks/LCAO_deepks_pdm.cpp | 367 +++++------------- .../module_deepks/LCAO_deepks_vdelta.cpp | 73 ++-- .../module_deepks/cal_gdmx.cpp | 5 + .../module_deepks/deepks_fgamma.cpp | 125 ++++-- .../module_deepks/deepks_fk.cpp | 3 - .../module_deepks/deepks_force.h | 29 +- .../module_deepks/test/LCAO_deepks_test.cpp | 9 +- 13 files changed, 314 insertions(+), 469 deletions(-) diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp index e71dc14b72..41b26e7e9f 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp @@ -237,18 +237,21 @@ void Force_LCAO::ftable(const bool isforce, GlobalC::ld.cal_gedm(ucell.nat); - DeePKS_domain::cal_f_delta_gamma(dm_gamma, - ucell, - orb, - gd, + const int nks=1; + DeePKS_domain::cal_f_delta_gamma(dm_gamma, + ucell, + orb, + gd, *this->ParaV, GlobalC::ld.lmaxd, + nks, + kv->kvec_d, GlobalC::ld.nlm_save, GlobalC::ld.gedm, GlobalC::ld.inl_index, GlobalC::ld.F_delta, - isstress, - svnl_dalpha); + isstress, + svnl_dalpha); #ifdef __MPI Parallel_Reduce::reduce_all(GlobalC::ld.F_delta.c, GlobalC::ld.F_delta.nr * GlobalC::ld.F_delta.nc); diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp index 18e19d071e..3d8f8260fb 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp @@ -158,7 +158,7 @@ void DeePKS>::contributeHR() { ModuleBase::timer::tick("DeePKS", "contributeHR"); const Parallel_Orbitals* pv = this->hsk->get_pv(); - GlobalC::ld.cal_projected_DM(this->DM, *this->ucell, *ptr_orb_, *(this->gd)); + GlobalC::ld.cal_projected_DM(this->DM, *this->ucell, *ptr_orb_, *(this->gd)); GlobalC::ld.cal_descriptor(this->ucell->nat); GlobalC::ld.cal_gedm(this->ucell->nat); // recalculate the H_V_delta @@ -186,7 +186,7 @@ void DeePKS, double>>::contributeHR() { ModuleBase::timer::tick("DeePKS", "contributeHR"); - GlobalC::ld.cal_projected_DM(this->DM, *this->ucell, *ptr_orb_, *this->gd); + GlobalC::ld.cal_projected_DM>(this->DM, *this->ucell, *ptr_orb_, *this->gd); GlobalC::ld.cal_descriptor(this->ucell->nat); // calculate dE/dD GlobalC::ld.cal_gedm(this->ucell->nat); @@ -219,7 +219,7 @@ void DeePKS, std::complex>>::contribut { ModuleBase::timer::tick("DeePKS", "contributeHR"); - GlobalC::ld.cal_projected_DM(this->DM, *this->ucell, *ptr_orb_, *this->gd); + GlobalC::ld.cal_projected_DM>(this->DM, *this->ucell, *ptr_orb_, *this->gd); GlobalC::ld.cal_descriptor(this->ucell->nat); // calculate dE/dD GlobalC::ld.cal_gedm(this->ucell->nat); diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp index 1676838282..2e34264ab7 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp @@ -512,14 +512,13 @@ void LCAO_Deepks::del_v_delta_pdm_shell(const int nks,const int nlocal) return; } -void LCAO_Deepks::dpks_cal_e_delta_band(const std::vector>& dm, const int nks) +template +void LCAO_Deepks::dpks_cal_e_delta_band(const std::vector>& dm, const int nks) { this->cal_e_delta_band(dm, nks); } -void LCAO_Deepks::dpks_cal_e_delta_band(const std::vector>>& dm, const int nks) -{ - this->cal_e_delta_band(dm, nks); -} +template void LCAO_Deepks::dpks_cal_e_delta_band(const std::vector>& dm, const int nks); +template void LCAO_Deepks::dpks_cal_e_delta_band>(const std::vector>>& dm, const int nks); #endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h index 179938f4ef..89276b7835 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h @@ -284,11 +284,10 @@ class LCAO_Deepks // There are 6 subroutines in this file: // 1. cal_projected_DM, which is used for calculating pdm for gamma point calculation - // 2. cal_projected_DM_k, counterpart of 1, for multi-k - // 3. check_projected_dm, which prints pdm to descriptor.dat + // 2. check_projected_dm, which prints pdm to descriptor.dat - // 4. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) for gamma point - // 5. check_gdmx, which prints gdmx to a series of .dat files + // 3. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) for gamma point + // 4. check_gdmx, which prints gdmx to a series of .dat files public: /** @@ -299,28 +298,14 @@ class LCAO_Deepks * 2. SCF calculation of DeePKS with init_chg = file and pdm has been read for restarting SCF * 3. Relax/Cell-Relax/MD calculation, non-first step will use the convergence pdm from the last step as initial pdm */ - void cal_projected_DM(const elecstate::DensityMatrix* dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - - void cal_projected_DM(const elecstate::DensityMatrix, double>* dm, + template + void cal_projected_DM(const elecstate::DensityMatrix* dm, const UnitCell& ucell, const LCAO_Orbitals& orb, const Grid_Driver& GridD); void check_projected_dm(); - void cal_projected_DM_equiv(const elecstate::DensityMatrix* dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - - void cal_projected_DM_k_equiv(const elecstate::DensityMatrix, double>* dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - // calculate the gradient of pdm with regard to atomic positions // d/dX D_{Inl,mm'} template @@ -358,21 +343,18 @@ class LCAO_Deepks // tr (rho * V_delta) // Four subroutines are contained in the file: - // 5. cal_e_delta_band : calculates e_delta_bands for gamma only - // 6. cal_e_delta_band_k : counterpart of 4, for multi-k + // 5. cal_e_delta_band : calculates e_delta_bands public: /// calculate tr(\rho V_delta) // void cal_e_delta_band(const std::vector& dm/**<[in] density matrix*/); - void cal_e_delta_band(const std::vector>& dm /**<[in] density matrix*/, const int /*nks*/); - // void cal_e_delta_band_k(const std::vector& dm/**<[in] density matrix*/, - // const int nks); - void cal_e_delta_band(const std::vector>>& dm /**<[in] density matrix*/, - const int nks); + template + void cal_e_delta_band(const std::vector>& dm /**<[in] density matrix*/, const int nks); //! a temporary interface for cal_e_delta_band and cal_e_delta_band_k - void dpks_cal_e_delta_band(const std::vector>& dm, const int nks); - void dpks_cal_e_delta_band(const std::vector>>& dm, const int nks); + template + void dpks_cal_e_delta_band(const std::vector>& dm, const int nks); + //------------------- // LCAO_deepks_odelta.cpp @@ -381,17 +363,11 @@ class LCAO_Deepks // This file contains subroutines for calculating O_delta, // which corresponds to the correction of the band gap. - // There are two subroutines in this file: - // 1. cal_o_delta, which is used for gamma point calculation - // 2. cal_o_delta_k, which is used for multi-k calculation - public: - void cal_o_delta(const std::vector>& + template + void cal_o_delta(const std::vector>& dm_hl /**<[in] modified density matrix that contains HOMO and LUMO only*/, const int nks); - void cal_o_delta(const std::vector>& - dm_hl /**<[in] modified density matrix that contains HOMO and LUMO only*/, - const int nks); //------------------- // LCAO_deepks_torch.cpp diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp index edb255de93..7639463f72 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -117,7 +117,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, } ld->cal_orbital_precalc(dm_bandgap, nat, nks, kvec_d, ucell, orb, GridD); - ld->cal_o_delta(dm_bandgap, nks); + ld->cal_o_delta(dm_bandgap, nks); // save obase and orbital_precalc LCAO_deepks_io::save_npy_orbital_precalc(nat, @@ -249,7 +249,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, // when deepks_scf is on, the init pdm should be same as the out pdm, so we should not recalculate the pdm if(!PARAM.inp.deepks_scf) { - ld->cal_projected_DM(dm, ucell, orb, GridD); + ld->cal_projected_DM(dm, ucell, orb, GridD); } ld->check_projected_dm(); // print out the projected dm for NSCF calculaiton diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_odelta.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_odelta.cpp index eae3c12220..016e6317b8 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_odelta.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_odelta.cpp @@ -4,63 +4,29 @@ //which is defind as sum_mu,nu rho^{hl}_mu,nu V(D) //where rho^{hl}_mu,nu = C_{L\mu}C_{L\nu} - C_{H\mu}C_{H\nu}, L for LUMO, H for HOMO -//There are two subroutines in this file: -//1. cal_o_delta, which is used for gamma point calculation -//2. cal_o_delta_k, which is used for multi-k calculation - #ifdef __DEEPKS #include "LCAO_deepks.h" #include "module_base/parallel_reduce.h" -void LCAO_Deepks::cal_o_delta(const std::vector>& dm_hl, const int nks) +template +void LCAO_Deepks::cal_o_delta(const std::vector>& dm_hl, const int nks) { ModuleBase::TITLE("LCAO_Deepks", "cal_o_delta"); - this->o_delta.zero_out(); - for (int hl = 0; hl < 1; ++hl) - { - for (int i = 0; i < PARAM.globalv.nlocal; ++i) - { - for (int j = 0; j < PARAM.globalv.nlocal; ++j) - { - const int mu = pv->global2local_row(j); - const int nu = pv->global2local_col(i); - - if (mu >= 0 && nu >= 0) - { - const int index = nu * pv->nrow + mu; - for (int is = 0; is < PARAM.inp.nspin; ++is) - { - this->o_delta(0,hl) += dm_hl[hl][is](nu, mu) * this->H_V_delta[0][index]; - } - } - } - } - Parallel_Reduce::reduce_all(this->o_delta(0, hl)); - } - return; -} - -//calculating the correction of (LUMO-HOMO) energies, i.e., band gap corrections -//for multi_k calculations -void LCAO_Deepks::cal_o_delta(const std::vector>& dm_hl, - const int nks) -{ - ModuleBase::TITLE("LCAO_Deepks", "cal_o_delta_k"); - - for(int ik=0; iko_delta.zero_out(); + for (int ik = 0; ik < nks; ik++) { - for (int hl=0; hl<1; hl++) + for (int hl = 0; hl < 1; ++hl) { - std::complex o_delta_k=std::complex(0.0,0.0); + TK o_delta_tmp = TK(0.0); for (int i = 0; i < PARAM.globalv.nlocal; ++i) { for (int j = 0; j < PARAM.globalv.nlocal; ++j) { const int mu = pv->global2local_row(j); const int nu = pv->global2local_col(i); - + if (mu >= 0 && nu >= 0) { int iic; @@ -72,16 +38,40 @@ void LCAO_Deepks::cal_o_delta(const std::vectorncol + nu; } - o_delta_k += dm_hl[hl][ik](nu, mu) * this->H_V_delta_k[ik][iic]; + if constexpr (std::is_same::value) + { + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + o_delta_tmp += dm_hl[hl][is](nu, mu) * this->H_V_delta[0][iic]; + } + } + else + { + o_delta_tmp += dm_hl[hl][ik](nu, mu) * this->H_V_delta_k[ik][iic]; + } } - } //end j - } //end i - Parallel_Reduce::reduce_all(o_delta_k); - this->o_delta(ik,hl) = o_delta_k.real(); - }// end hl - }// end nks - + } + } + Parallel_Reduce::reduce_all(o_delta_tmp); + if constexpr (std::is_same::value) + { + this->o_delta(ik,hl) = o_delta_tmp; + } + else + { + this->o_delta(ik,hl) = o_delta_tmp.real(); + } + } + } return; } +template void LCAO_Deepks::cal_o_delta( + const std::vector>& dm_hl, + const int nks); + +template void LCAO_Deepks::cal_o_delta, ModuleBase::ComplexMatrix>( + const std::vector>& dm_hl, + const int nks); + #endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp index 8c098ffa2e..62dfc76aef 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp @@ -8,14 +8,11 @@ //It also contains subroutines for printing pdm and gdmx //for checking purpose -//There are 6 subroutines in this file: -//1. cal_projected_DM, which is used for calculating pdm for gamma point calculation -//2. cal_projected_DM_k, counterpart of 1, for multi-k +//There are 3 subroutines in this file: +//1. read_projected_DM, which reads pdm from file +//2. cal_projected_DM, which is used for calculating pdm //3. check_projected_dm, which prints pdm to descriptor.dat -//4. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) for gamma point -//5. check_gdmx, which prints gdmx to a series of .dat files - #ifdef __DEEPKS #include "LCAO_deepks.h" @@ -49,7 +46,7 @@ void LCAO_Deepks::read_projected_DM(bool read_pdm_file, bool is_equiv, const Num if (!ifs) { - ModuleBase::WARNING_QUIT("LCAO_Deepks::cal_projected_DM", "Cannot find the file deepks_projdm.dat"); + ModuleBase::WARNING_QUIT("LCAO_Deepks::read_projected_DM", "Cannot find the file deepks_projdm.dat"); } for(int inl=0;inlinlmax;inl++) { @@ -66,10 +63,13 @@ void LCAO_Deepks::read_projected_DM(bool read_pdm_file, bool is_equiv, const Num //this subroutine performs the calculation of projected density matrices //pdm_m,m'=\sum_{mu,nu} rho_{mu,nu} -void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD) +template +void LCAO_Deepks::cal_projected_DM( + const elecstate::DensityMatrix* dm, + const UnitCell &ucell, + const LCAO_Orbitals &orb, + const Grid_Driver& GridD) + { ModuleBase::TITLE("LCAO_Deepks", "cal_projected_DM"); @@ -106,7 +106,6 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrixpv->nrow; for (int T0 = 0; T0 < ucell.ntype; T0++) { Atom* atom0 = &ucell.atoms[T0]; @@ -174,18 +173,38 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); + key_tuple key_1(ibt1,dR1.x,dR1.y,dR1.z); + if constexpr (std::is_same>::value) + { + if(this->nlm_save_k[iat].find(key_1) == this->nlm_save_k[iat].end()) + { + continue; + } + } + auto row_indexes = pv->get_indexes_row(ibt1); const int row_size = row_indexes.size(); - if(row_size == 0) { continue; -} + if(row_size == 0) + { + continue; + } // no possible to unexist key std::vector s_1t(trace_alpha_size * row_size); std::vector g_1dmt(trace_alpha_size * row_size, 0.0); for(int irow=0;irownlm_save[iat][ad1][row_indexes[irow]][0].data(); - + const double* row_ptr; + if constexpr (std::is_same::value) + { + row_ptr = this->nlm_save[iat][ad1][row_indexes[irow]][0].data(); + } + else + { + row_ptr = this->nlm_save_k[iat][key_1][row_indexes[irow]][0].data(); + } + for(int i=0;inw*PARAM.globalv.npol; + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); + key_tuple key_2(ibt2,dR2.x,dR2.y,dR2.z); + if constexpr (std::is_same>::value) + { + if (this->nlm_save_k[iat].find(key_2) == this->nlm_save_k[iat].end()) + { + continue; + } + } + const double Rcut_AO2 = orb.Phi[T2].getRcut(); const double dist2 = (tau2-tau0).norm() * ucell.lat0; @@ -211,14 +240,24 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrixget_indexes_col(ibt2); const int col_size = col_indexes.size(); - if(col_size == 0) { continue; -} + if(col_size == 0) + { + continue; + } std::vector s_2t(trace_alpha_size * col_size); // no possible to unexist key for(int icol=0;icolnlm_save[iat][ad2][col_indexes[icol]][0].data(); + const double* col_ptr; + if constexpr (std::is_same::value) + { + col_ptr = this->nlm_save[iat][ad2][col_indexes[icol]][0].data(); + } + else + { + col_ptr = this->nlm_save_k[iat][key_2][col_indexes[icol]][0].data(); + } for(int i=0;iget_DMR_vector().size();is++) { - auto* tmp = dm->get_DMR_vector()[is]->find_matrix(ibt1, ibt2, 0, 0, 0); + int dRx, dRy, dRz; + if constexpr (std::is_same::value) + { + dRx = 0; + dRy = 0; + dRz = 0; + } + else + { + dRx = dR2.x - dR1.x; + dRy = dR2.y - dR1.y; + dRz = dR2.z - dR1.z; + } + auto* tmp = dm->get_DMR_vector()[is]->find_matrix(ibt1, ibt2, dRx, dRy, dRz); if(tmp == nullptr) { // in case of no deepks_scf but out_deepks_label, size of DMR would mismatch with deepks-orbitals @@ -242,263 +294,11 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrixinl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - - for (int m1=0; m1lmaxd + 1; il++) - { - nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); - } - for(int iproj = 0; iproj < nproj; iproj ++) - { - for(int jproj = 0; jproj < nproj; jproj ++) - { - pdm[iat][iproj * nproj + jproj] += - ddot_(&row_size, g_1dmt.data()+index*row_size, &inc, s_1t.data()+index*row_size, &inc); - index ++; - } - } - } - }//ad1 - }//I0 - }//T0 - -#ifdef __MPI - allsum_deepks(this->inlmax,pdm_size,this->pdm); -#endif - ModuleBase::timer::tick("LCAO_Deepks","cal_projected_DM"); - return; -} - -void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix, double>* dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD) -{ - // if pdm has been initialized, skip the calculation - if(this->init_pdm) - { - this->init_pdm = false; - return; - } - - int pdm_size = 0; - if(!PARAM.inp.deepks_equiv) - { - pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); - } - else - { - int nproj = 0; - for(int il = 0; il < this->lmaxd + 1; il++) - { - nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); - } - pdm_size = nproj * nproj; - } - - //check for skipping - //if(dm.size() == 0 || dm[0].size() == 0) - //{ - // return; - //} - ModuleBase::timer::tick("LCAO_Deepks","cal_projected_DM_k"); - - for(int inl=0;inlna; I0++) - { - const int iat = ucell.itia2iat(T0,I0); - const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); - - //trace alpha orbital - std::vector trace_alpha_row; - std::vector trace_alpha_col; - if(!PARAM.inp.deepks_equiv) - { - int ib=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) - { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) - { - const int inl = this->inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - - for (int m1=0; m1lmaxd + 1; il++) - { - nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); - } - for(int iproj = 0; iproj < nproj; iproj ++) - { - for(int jproj = 0; jproj < nproj; jproj ++) - { - trace_alpha_row.push_back(iproj); - trace_alpha_col.push_back(jproj); + if(dm_current == nullptr) + { + continue; //skip the long range DM pair more than nonlocal term } - } - } - const int trace_alpha_size = trace_alpha_row.size(); - for (int ad1=0; ad1 tau1 = GridD.getAdjacentTau(ad1); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw*PARAM.globalv.npol; - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - const double dist1 = (tau1-tau0).norm() * ucell.lat0; - if (dist1 >= Rcut_Alpha + Rcut_AO1) - { - continue; - } - - ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); - - auto row_indexes = pv->get_indexes_row(ibt1); - const int row_size = row_indexes.size(); - if(row_size == 0) { continue; -} - - key_tuple key_1(ibt1,dR1.x,dR1.y,dR1.z); - if(this->nlm_save_k[iat].find(key_1) == this->nlm_save_k[iat].end()) { continue; -} - std::vector s_1t(trace_alpha_size * row_size); - std::vector g_1dmt(trace_alpha_size * row_size, 0.0); - for(int irow=0;irownlm_save_k[iat][key_1][row_indexes[irow]][0].data(); - for(int i=0;i tau2 = GridD.getAdjacentTau(ad2); - const Atom* atom2 = &ucell.atoms[T2]; - const int nw2_tot = atom2->nw*PARAM.globalv.npol; - ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); - - const double Rcut_AO2 = orb.Phi[T2].getRcut(); - const double dist2 = (tau2-tau0).norm() * ucell.lat0; - - if (dist2 >= Rcut_Alpha + Rcut_AO2) - { - continue; - } - - auto col_indexes = pv->get_indexes_col(ibt2); - const int col_size = col_indexes.size(); - if(col_size == 0) { continue; -} - - std::vector s_2t(trace_alpha_size * col_size); - key_tuple key_2(ibt2,dR2.x,dR2.y,dR2.z); - if(this->nlm_save_k[iat].find(key_2) == this->nlm_save_k[iat].end()) { continue; -} - for(int icol=0;icolnlm_save_k[iat][key_2][col_indexes[icol]][0].data(); - for(int i=0;i dm_array(row_size*col_size, 0.0); - const double* dm_current; - for(int is=0;isget_DMR_vector().size();is++) - { - auto tmp_matrix = dm->get_DMR_vector()[is]->find_matrix(ibt1, ibt2, (dR2-dR1).x, (dR2-dR1).y, (dR2-dR1).z); - if(tmp_matrix == nullptr) - { - dm_current = nullptr; - break; - } - dm_current = tmp_matrix->get_pointer(); - for(int idm=0;idminlmax,pdm_size,this->pdm); #endif - ModuleBase::timer::tick("LCAO_Deepks","cal_projected_DM_k"); + ModuleBase::timer::tick("LCAO_Deepks","cal_projected_DM"); return; - } void LCAO_Deepks::check_projected_dm() @@ -589,4 +388,16 @@ void LCAO_Deepks::check_projected_dm() } } +template void LCAO_Deepks::cal_projected_DM( + const elecstate::DensityMatrix* dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD); + +template void LCAO_Deepks::cal_projected_DM>( + const elecstate::DensityMatrix, double>* dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD); + #endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_vdelta.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_vdelta.cpp index 9a1f151f70..9bf6b08c21 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_vdelta.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_vdelta.cpp @@ -6,8 +6,7 @@ //tr (rho * V_delta) //Four subroutines are contained in the file: -//5. cal_e_delta_band : calculates e_delta_bands for gamma only -//6. cal_e_delta_band_k : counterpart of 4, for multi-k +//5. cal_e_delta_band : calculates e_delta_bands #ifdef __DEEPKS @@ -17,43 +16,12 @@ #include "module_base/timer.h" //calculating sum of correction band energies -//for gamma_only calculations -void LCAO_Deepks::cal_e_delta_band(const std::vector>& dm, const int /*nks*/) +template +void LCAO_Deepks::cal_e_delta_band(const std::vector>& dm, const int nks) { ModuleBase::TITLE("LCAO_Deepks", "cal_e_delta_band"); - this->e_delta_band = 0; - for (int i = 0; i < PARAM.globalv.nlocal; ++i) - { - for (int j = 0; j < PARAM.globalv.nlocal; ++j) - { - const int mu = pv->global2local_row(j); - const int nu = pv->global2local_col(i); - - if (mu >= 0 && nu >= 0) - { - const int index = nu * pv->nrow + mu; - for (int is = 0; is < dm.size(); ++is) //dm.size() == PARAM.inp.nspin - { - //this->e_delta_band += dm[is](nu, mu) * this->H_V_delta[index]; - this->e_delta_band += dm[is][nu*this->pv->nrow+mu] * this->H_V_delta[0][index]; - } - } - } - } -#ifdef __MPI - Parallel_Reduce::reduce_all(this->e_delta_band); -#endif - return; -} - -//calculating sum of correction band energies -//for multi_k calculations -void LCAO_Deepks::cal_e_delta_band(const std::vector>>& dm, - const int nks) -{ - ModuleBase::TITLE("LCAO_Deepks", "cal_e_delta_band"); - ModuleBase::timer::tick("LCAO_Deepks","cal_e_delta_band_k"); - std::complex e_delta_band_k=std::complex(0.0,0.0); + ModuleBase::timer::tick("LCAO_Deepks","cal_e_delta_band"); + TK e_delta_band_tmp = TK(0); for (int i = 0; i < PARAM.globalv.nlocal; ++i) { for (int j = 0; j < PARAM.globalv.nlocal; ++j) @@ -72,21 +40,40 @@ void LCAO_Deepks::cal_e_delta_band(const std::vectorncol + nu; } - for(int ik=0;ik::value) + { + for (int is = 0; is < dm.size(); ++is) //dm.size() == PARAM.inp.nspin + { + e_delta_band_tmp += dm[is][nu * this->pv->nrow + mu] * this->H_V_delta[0][iic]; + } + } + else { - //e_delta_band_k += dm[ik](nu, mu) * this->H_V_delta_k[ik][iic]; - e_delta_band_k += dm[ik][nu * this->pv->nrow + mu] * this->H_V_delta_k[ik][iic]; + for(int ik = 0; ik < nks; ik++) + { + e_delta_band_tmp += dm[ik][nu * this->pv->nrow + mu] * this->H_V_delta_k[ik][iic]; + } } + } } } - - this->e_delta_band = e_delta_band_k.real(); + if constexpr (std::is_same::value) + { + this->e_delta_band = e_delta_band_tmp; + } + else + { + this->e_delta_band = e_delta_band_tmp.real(); + } #ifdef __MPI Parallel_Reduce::reduce_all(this->e_delta_band); #endif - ModuleBase::timer::tick("LCAO_Deepks","cal_e_delta_band_k"); + ModuleBase::timer::tick("LCAO_Deepks","cal_e_delta_band"); return; } +template void LCAO_Deepks::cal_e_delta_band(const std::vector>& dm, const int nks); +template void LCAO_Deepks::cal_e_delta_band>(const std::vector>>& dm, const int nks); + #endif diff --git a/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp b/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp index cbbbac3b42..b83e40f2ec 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp +++ b/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp @@ -14,6 +14,11 @@ /// be calculated: /// gdm_epsl = d/d\epsilon_{ab} * /// sum_{mu,nu} rho_{mu,nu} + +//There are 2 subroutines in this file: +//1. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) for gamma point +//2. check_gdmx, which prints gdmx to a series of .dat files + template void LCAO_Deepks::cal_gdmx(const std::vector>& dm, const UnitCell& ucell, diff --git a/source/module_hamilt_lcao/module_deepks/deepks_fgamma.cpp b/source/module_hamilt_lcao/module_deepks/deepks_fgamma.cpp index 8649aeb978..60077ebdac 100644 --- a/source/module_hamilt_lcao/module_deepks/deepks_fgamma.cpp +++ b/source/module_hamilt_lcao/module_deepks/deepks_fgamma.cpp @@ -16,6 +16,7 @@ #include "module_hamilt_lcao/module_hcontainer/atom_pair.h" #include "module_base/libm/libm.h" +typedef std::tuple key_tuple; //force for gamma only calculations //Pulay and HF terms are calculated together @@ -23,9 +24,11 @@ void DeePKS_domain::cal_f_delta_gamma( const std::vector>& dm, const UnitCell& ucell, const LCAO_Orbitals& orb, - const Grid_Driver& gd, + const Grid_Driver& GridD, const Parallel_Orbitals& pv, const int lmaxd, + const int nks, + const std::vector> &kvec_d, std::vector>>>>& nlm_save, double** gedm, ModuleBase::IntArray* inl_index, @@ -34,6 +37,9 @@ void DeePKS_domain::cal_f_delta_gamma( ModuleBase::matrix& svnl_dalpha) { ModuleBase::TITLE("DeePKS_domain", "cal_f_delta_gamma"); + + using TK = double; // temporary used, will be replaced by the template parameter + f_delta.zero_out(); const double Rcut_Alpha = orb.Alpha[0].getRcut(); @@ -47,26 +53,29 @@ void DeePKS_domain::cal_f_delta_gamma( { const int iat = ucell.itia2iat(T0,I0); const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - gd.Find_atom(ucell, atom0->tau[I0] ,T0, I0); + GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); - for (int ad1=0; ad1 tau1 = gd.getAdjacentTau(ad1); + const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad1); const Atom* atom1 = &ucell.atoms[T1]; const int nw1_tot = atom1->nw*PARAM.globalv.npol; const double Rcut_AO1 = orb.Phi[T1].getRcut(); - for (int ad2=0; ad2 < gd.getAdjacentNum()+1 ; ad2++) + ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); + + for (int ad2=0; ad2 < GridD.getAdjacentNum()+1 ; ad2++) { - const int T2 = gd.getType(ad2); - const int I2 = gd.getNatom(ad2); + const int T2 = GridD.getType(ad2); + const int I2 = GridD.getNatom(ad2); const int ibt2 = ucell.itia2iat(T2,I2); - const ModuleBase::Vector3 tau2 = gd.getAdjacentTau(ad2); + const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); const Atom* atom2 = &ucell.atoms[T2]; const int nw2_tot = atom2->nw*PARAM.globalv.npol; + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); const double Rcut_AO2 = orb.Phi[T2].getRcut(); const double dist1 = (tau1-tau0).norm() * ucell.lat0; @@ -98,21 +107,58 @@ void DeePKS_domain::cal_f_delta_gamma( continue; } - hamilt::AtomPair dm_pair(ibt1, ibt2, 0, 0, 0, &pv); + int dRx; + int dRy; + int dRz; + if constexpr (std::is_same::value) + { + dRx = 0; + dRy = 0; + dRz = 0; + } + else + { + dRx = dR2.x - dR1.x; + dRy = dR2.y - dR1.y; + dRz = dR2.z - dR1.z; + } + + hamilt::AtomPair dm_pair(ibt1, ibt2, dRx, dRy, dRz, &pv); dm_pair.allocate(nullptr, 1); - for(int is=0;is::value) { - if(ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) - { - dm_pair.add_from_matrix(dm[is].data(), pv.get_row_size(), 1.0, 1); - } - else + for(int is=0;is kphase = std::complex(cosp, sinp); + // if(ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + // { + // dm_pair.add_from_matrix(dm[ik].data(), pv.get_row_size(), kphase, 1); + // } + // else + // { + // dm_pair.add_from_matrix(dm[ik].data(), pv.get_col_size(), kphase, 0); + // } + // } + } const double* dm_current = dm_pair.get_pointer(); @@ -122,13 +168,27 @@ void DeePKS_domain::cal_f_delta_gamma( { double nlm[3]={0,0,0}; double nlm_t[3] = {0,0,0}; //for stress - std::vector nlm1 = nlm_save[iat][ad1][row_indexes[iw1]][0]; + key_tuple key_1(ibt1,dR1.x,dR1.y,dR1.z); + key_tuple key_2(ibt2,dR2.x,dR2.y,dR2.z); + std::vector nlm1; std::vector> nlm2; nlm2.resize(3); - for(int dim=0;dim<3;++dim) + if constexpr (std::is_same::value) + { + nlm1 = nlm_save[iat][ad1][row_indexes[iw1]][0]; + for(int dim=0;dim<3;dim++) + { + nlm2[dim] = nlm_save[iat][ad2][col_indexes[iw2]][dim+1]; + } + } + else { - nlm2[dim] = nlm_save[iat][ad2][col_indexes[iw2]][dim+1]; + // nlm1 = nlm_save_k[iat][key_1][row_indexes[iw1]][0]; + // for(int dim=0;dim<3;dim++) + // { + // nlm2[dim] = nlm_save_k[iat][key_2][col_indexes[iw2]][dim+1]; + // } } assert(nlm1.size()==nlm2[0].size()); @@ -188,10 +248,21 @@ void DeePKS_domain::cal_f_delta_gamma( if(isstress) { - nlm1 = nlm_save[iat][ad2][col_indexes[iw2]][0]; - for(int i=0;i<3;i++) + if constexpr (std::is_same::value) { - nlm2[i] = nlm_save[iat][ad1][row_indexes[iw1]][i+1]; + nlm1 = nlm_save[iat][ad2][col_indexes[iw2]][0]; + for(int i=0;i<3;i++) + { + nlm2[i] = nlm_save[iat][ad1][row_indexes[iw1]][i+1]; + } + } + else + { + // nlm1 = nlm_save_k[iat][key_2][col_indexes[iw2]][0]; + // for(int i=0;i<3;i++) + // { + // nlm2[i] = nlm_save_k[iat][key_1][row_indexes[iw1]][i+1]; + // } } assert(nlm1.size()==nlm2[0].size()); @@ -265,8 +336,10 @@ void DeePKS_domain::cal_f_delta_gamma( { for(int j=0;j<3;++j) { - if(j>i) { svnl_dalpha(j,i) = svnl_dalpha(i,j); -} + if(j>i) + { + svnl_dalpha(j,i) = svnl_dalpha(i,j); + } svnl_dalpha(i,j) *= weight; } } diff --git a/source/module_hamilt_lcao/module_deepks/deepks_fk.cpp b/source/module_hamilt_lcao/module_deepks/deepks_fk.cpp index 1d26f0adff..8a724bf098 100644 --- a/source/module_hamilt_lcao/module_deepks/deepks_fk.cpp +++ b/source/module_hamilt_lcao/module_deepks/deepks_fk.cpp @@ -47,13 +47,11 @@ void DeePKS_domain::cal_f_delta_k( const ModuleBase::Vector3 tau0 = atom0->tau[I0]; GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); - for (int ad1=0; ad1 tau1 = GridD.getAdjacentTau(ad1); const Atom* atom1 = &ucell.atoms[T1]; const int nw1_tot = atom1->nw*PARAM.globalv.npol; @@ -66,7 +64,6 @@ void DeePKS_domain::cal_f_delta_k( const int T2 = GridD.getType(ad2); const int I2 = GridD.getNatom(ad2); const int ibt2 = ucell.itia2iat(T2,I2); - const int start2 = ucell.itiaiw2iwt(T2, I2, 0); const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); const Atom* atom2 = &ucell.atoms[T2]; const int nw2_tot = atom2->nw*PARAM.globalv.npol; diff --git a/source/module_hamilt_lcao/module_deepks/deepks_force.h b/source/module_hamilt_lcao/module_deepks/deepks_force.h index 5ecf7d0f0e..58474b9d56 100644 --- a/source/module_hamilt_lcao/module_deepks/deepks_force.h +++ b/source/module_hamilt_lcao/module_deepks/deepks_force.h @@ -32,19 +32,22 @@ namespace DeePKS_domain // 2. cal_f_delta_k, which is used for multi-k calculation // 3. check_f_delta, which prints F_delta into F_delta.dat for checking - // for gamma only, pulay and HF terms of force are calculated together -void cal_f_delta_gamma(const std::vector>& dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& gd, - const Parallel_Orbitals& pv, - const int lmaxd, - std::vector>>>>& nlm_save, - double** gedm, - ModuleBase::IntArray* inl_index, - ModuleBase::matrix& f_delta, - const bool isstress, - ModuleBase::matrix& svnl_dalpha); +// for gamma only, pulay and HF terms of force are calculated together +void cal_f_delta_gamma( + const std::vector>& dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const Parallel_Orbitals& pv, + const int lmaxd, + const int nks, + const std::vector>& kvec_d, + std::vector>>>>& nlm_save, + double** gedm, + ModuleBase::IntArray* inl_index, + ModuleBase::matrix& f_delta, + const bool isstress, + ModuleBase::matrix& svnl_dalpha); // for multi-k, pulay and HF terms of force are calculated together diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp index c79536a72a..ae8384057c 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp @@ -115,7 +115,7 @@ void test_deepks::check_pdm() { this->read_dm_k(kv.get_nkstot()); this->set_dm_k_new(); - this->ld.cal_projected_DM_k(dm_k_new, ucell, ORB, Test_Deepks::GridD); + this->ld.cal_projected_DM(dm_k_new, ucell, ORB, Test_Deepks::GridD); } this->ld.check_projected_dm(); this->compare_with_ref("pdm.dat", "pdm_ref.dat"); @@ -221,12 +221,12 @@ void test_deepks::check_e_deltabands() { if (PARAM.sys.gamma_only_local) { - this->ld.cal_e_delta_band(dm_new); + this->ld.cal_e_delta_band(dm_new, 1); // 1 for gamma-only } else { this->folding_nnr(kv); - this->ld.cal_e_delta_band_k(dm_k_new, kv.get_nkstot()); + this->ld.cal_e_delta_band(dm_k_new, kv.get_nkstot()); } std::ofstream ofs("E_delta_bands.dat"); @@ -241,7 +241,8 @@ void test_deepks::check_f_delta() svnl_dalpha.create(3, 3); if (PARAM.sys.gamma_only_local) { - ld.cal_f_delta_gamma(dm_new, ucell, ORB, Test_Deepks::GridD, 1, svnl_dalpha); + const int nks=1; + ld.cal_f_delta_gamma(dm_new, ucell, ORB, Test_Deepks::GridD, nks, kv.kvec_d, 1, svnl_dalpha); } else { From 815bff5101d243c662332a5c1b093bcb195a377d Mon Sep 17 00:00:00 2001 From: liiutao <74701833+A-006@users.noreply.github.com> Date: Mon, 16 Dec 2024 20:05:05 +0800 Subject: [PATCH 05/44] Refactor:remove GlobalC::ucell in module_elesctate (#5730) * change ucell in elecstate_energy * fix bug in elesctate_energy * change ucell in set-rho_core * change ucell in elecstate.cpp * change ucell in charge_mixing * change ucell in prepare in H_TDDFT_pw.cpp * change ucell in set_nonlocal.cpp * change ucell in ucell_getters.cpp * change elecstate_getter * change PARAM.inp.vdw_method in the elecstate_print * change ucell in charge_mixing * change get ucell tpiba in getters * [pre-commit.ci lite] apply automatic fixes * change ucell test file * update value of omega and tpiba in charge_mixing * update get ucell oemga * change ucell in the charge * fix bug in charge * fix bug in set_omega --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/module_cell/setup_nonlocal.cpp | 2 +- source/module_elecstate/elecstate.cpp | 5 +- source/module_elecstate/elecstate.h | 7 +- source/module_elecstate/elecstate_energy.cpp | 4 +- source/module_elecstate/elecstate_getters.cpp | 44 ------ source/module_elecstate/elecstate_getters.h | 19 +-- source/module_elecstate/elecstate_print.cpp | 18 +-- source/module_elecstate/elecstate_pw.cpp | 6 +- .../module_elecstate/elecstate_pw_cal_tau.cpp | 4 +- source/module_elecstate/magnetism.cpp | 14 +- source/module_elecstate/magnetism.h | 7 +- .../module_elecstate/module_charge/charge.cpp | 4 +- .../module_elecstate/module_charge/charge.h | 12 +- .../module_charge/charge_init.cpp | 46 ++++--- .../module_charge/charge_mixing.cpp | 7 +- .../module_charge/charge_mixing.h | 10 +- .../charge_mixing_preconditioner.cpp | 4 +- .../module_charge/charge_mixing_residual.cpp | 16 +-- .../potentials/H_TDDFT_pw.cpp | 22 +-- .../module_elecstate/potentials/H_TDDFT_pw.h | 4 +- .../test/charge_mixing_test.cpp | 130 ++++++++++++++---- source/module_elecstate/test/charge_test.cpp | 12 +- .../test/elecstate_base_test.cpp | 13 +- .../test/elecstate_magnetism_test.cpp | 13 +- .../test/elecstate_print_test.cpp | 71 ++++------ .../test/elecstate_pw_test.cpp | 13 +- source/module_esolver/esolver_ks.cpp | 9 +- source/module_esolver/esolver_ks_lcao.cpp | 4 +- .../module_esolver/esolver_ks_lcao_tddft.cpp | 2 +- source/module_esolver/esolver_ks_lcaopw.cpp | 2 +- source/module_esolver/esolver_ks_pw.cpp | 6 +- source/module_esolver/esolver_of.cpp | 4 +- source/module_esolver/esolver_sdft_pw.cpp | 2 +- source/module_esolver/lcao_before_scf.cpp | 2 +- source/module_esolver/lcao_others.cpp | 2 +- .../test/hsolver_supplementary_mock.h | 1 + source/module_rdmft/rdmft.cpp | 2 +- 37 files changed, 288 insertions(+), 255 deletions(-) diff --git a/source/module_cell/setup_nonlocal.cpp b/source/module_cell/setup_nonlocal.cpp index 9fb7280c1f..f62982db49 100644 --- a/source/module_cell/setup_nonlocal.cpp +++ b/source/module_cell/setup_nonlocal.cpp @@ -34,7 +34,7 @@ void InfoNonlocal::Set_NonLocal(const int& it, ModuleBase::TITLE("InfoNonlocal", "Set_NonLocal"); // set a pointer - // Atom* atom = &GlobalC::ucell.atoms[it]; + // Atom* atom = &ucell.atoms[it]; // get the number of non-local projectors n_projectors = atom->ncpp.nbeta; diff --git a/source/module_elecstate/elecstate.cpp b/source/module_elecstate/elecstate.cpp index c84ce504d2..d80c80cf1b 100644 --- a/source/module_elecstate/elecstate.cpp +++ b/source/module_elecstate/elecstate.cpp @@ -207,6 +207,7 @@ void ElecState::calEBand() void ElecState::init_scf(const int istep, + const UnitCell& ucell, const ModuleBase::ComplexMatrix& strucfac, const bool* numeric, ModuleSymmetry::Symmetry& symm, @@ -215,7 +216,7 @@ void ElecState::init_scf(const int istep, //! core correction potential. if (!PARAM.inp.use_paw) { - this->charge->set_rho_core(strucfac, numeric); + this->charge->set_rho_core(ucell,strucfac, numeric); } else { @@ -226,7 +227,7 @@ void ElecState::init_scf(const int istep, // choose charge density from ionic step 0. if (istep == 0) { - this->charge->init_rho(this->eferm, strucfac, symm, (const void*)this->klist, wfcpw); + this->charge->init_rho(this->eferm,ucell, strucfac, symm, (const void*)this->klist, wfcpw); this->charge->check_rho(); // check the rho } diff --git a/source/module_elecstate/elecstate.h b/source/module_elecstate/elecstate.h index 7640d43d0f..ba85850b3f 100644 --- a/source/module_elecstate/elecstate.h +++ b/source/module_elecstate/elecstate.h @@ -104,11 +104,13 @@ class ElecState * @brief Init rho_core, init rho, renormalize rho, init pot * * @param istep i-th step + * @param ucell unit cell * @param strucfac structure factor * @param symm symmetry * @param wfcpw PW basis for wave function if needed */ void init_scf(const int istep, + const UnitCell& ucell, const ModuleBase::ComplexMatrix& strucfac, const bool* numeric, ModuleSymmetry::Symmetry& symm, @@ -126,7 +128,7 @@ class ElecState void cal_bandgap(); void cal_bandgap_updw(); - double cal_delta_eband() const; + double cal_delta_eband(const UnitCell& ucell) const; double cal_delta_escf() const; ModuleBase::matrix vnew; @@ -171,7 +173,8 @@ class ElecState ModuleBase::matrix wg; ///< occupation weight for each k-point and band public: // print something. See elecstate_print.cpp - void print_etot(const bool converged, + void print_etot(const Magnetism& magnet, + const bool converged, const int& iter, const double& scf_thr, const double& scf_thr_kin, diff --git a/source/module_elecstate/elecstate_energy.cpp b/source/module_elecstate/elecstate_energy.cpp index f016da85a5..fae932bd27 100644 --- a/source/module_elecstate/elecstate_energy.cpp +++ b/source/module_elecstate/elecstate_energy.cpp @@ -90,7 +90,7 @@ void ElecState::cal_bandgap_updw() } /// @brief calculate deband -double ElecState::cal_delta_eband() const +double ElecState::cal_delta_eband(const UnitCell& ucell) const { // out potentials from potential mixing // total energy and band energy corrections @@ -109,7 +109,7 @@ double ElecState::cal_delta_eband() const { ModuleBase::matrix v_xc; const std::tuple etxc_vtxc_v - = XC_Functional::v_xc(this->charge->nrxx, this->charge, &GlobalC::ucell); + = XC_Functional::v_xc(this->charge->nrxx, this->charge, &ucell); v_xc = std::get<2>(etxc_vtxc_v); for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) diff --git a/source/module_elecstate/elecstate_getters.cpp b/source/module_elecstate/elecstate_getters.cpp index 30bf81f94c..bf39413498 100644 --- a/source/module_elecstate/elecstate_getters.cpp +++ b/source/module_elecstate/elecstate_getters.cpp @@ -8,54 +8,10 @@ namespace elecstate { -double get_ucell_omega() -{ - return GlobalC::ucell.omega; -} - -double get_ucell_tpiba() -{ - return GlobalC::ucell.tpiba; -} - int get_xc_func_type() { return XC_Functional::get_func_type(); } -std::string get_input_vdw_method() -{ - return PARAM.inp.vdw_method; -} - -double get_ucell_tot_magnetization() -{ - return GlobalC::ucell.magnet.tot_magnetization; -} - -double get_ucell_abs_magnetization() -{ - return GlobalC::ucell.magnet.abs_magnetization; -} - -double get_ucell_tot_magnetization_nc_x() -{ - return GlobalC::ucell.magnet.tot_magnetization_nc[0]; -} - -double get_ucell_tot_magnetization_nc_y() -{ - return GlobalC::ucell.magnet.tot_magnetization_nc[1]; -} - -double get_ucell_tot_magnetization_nc_z() -{ - return GlobalC::ucell.magnet.tot_magnetization_nc[2]; -} - -std::string get_ks_solver_type() -{ - return PARAM.inp.ks_solver; -} } // namespace elecstate diff --git a/source/module_elecstate/elecstate_getters.h b/source/module_elecstate/elecstate_getters.h index 4ee4ca57c0..e9a7cdf6c1 100644 --- a/source/module_elecstate/elecstate_getters.h +++ b/source/module_elecstate/elecstate_getters.h @@ -7,26 +7,9 @@ namespace elecstate { -/// @brief get the value of GlobalC::ucell.omega -double get_ucell_omega(); -/// @brief get the value of GlobalC::ucell.tpiba -double get_ucell_tpiba(); /// @brief get the value of XC_Functional::func_type int get_xc_func_type(); -/// @brief get the value of INPUT.vdw_method -std::string get_input_vdw_method(); -/// @brief get the value of GlobalC::ucell.magnet.tot_magnetization -double get_ucell_tot_magnetization(); -/// @brief get the value of GlobalC::ucell.magnet.abs_magnetization -double get_ucell_abs_magnetization(); -/// @brief get the value of GlobalC::ucell.magnet.tot_magnetization_nc[0] -double get_ucell_tot_magnetization_nc_x(); -/// @brief get the value of GlobalC::ucell.magnet.tot_magnetization_nc[1] -double get_ucell_tot_magnetization_nc_y(); -/// @brief get the value of GlobalC::ucell.magnet.tot_magnetization_nc[2] -double get_ucell_tot_magnetization_nc_z(); -/// @brief get the type of KS_SOLVER -std::string get_ks_solver_type(); + } // namespace elecstate diff --git a/source/module_elecstate/elecstate_print.cpp b/source/module_elecstate/elecstate_print.cpp index 2d738345b3..fdca966ea6 100644 --- a/source/module_elecstate/elecstate_print.cpp +++ b/source/module_elecstate/elecstate_print.cpp @@ -282,6 +282,7 @@ void ElecState::print_band(const int& ik, const int& printe, const int& iter) } /// @brief print total free energy and other energies +/// @param ucell: unit cell /// @param converged: if converged /// @param iter_in: iter /// @param scf_thr: threshold for scf @@ -289,7 +290,8 @@ void ElecState::print_band(const int& ik, const int& printe, const int& iter) /// @param pw_diag_thr: threshold for diagonalization /// @param avg_iter: averaged diagonalization iteration of each scf iteration /// @param print: if print to screen -void ElecState::print_etot(const bool converged, +void ElecState::print_etot(const Magnetism& magnet, + const bool converged, const int& iter_in, const double& scf_thr, const double& scf_thr_kin, @@ -339,7 +341,7 @@ void ElecState::print_etot(const bool converged, energies_Ry.push_back(this->f_en.demet); titles.push_back("E_descf"); energies_Ry.push_back(this->f_en.descf); - std::string vdw_method = get_input_vdw_method(); + std::string vdw_method = PARAM.inp.vdw_method; if (vdw_method == "d2") // Peize Lin add 2014-04, update 2021-03-09 { titles.push_back("E_vdwD2"); @@ -429,13 +431,13 @@ void ElecState::print_etot(const bool converged, switch (PARAM.inp.nspin) { case 2: - mag = {get_ucell_tot_magnetization(), get_ucell_abs_magnetization()}; + mag = {magnet.tot_magnetization, magnet.abs_magnetization}; break; case 4: - mag = {get_ucell_tot_magnetization_nc_x(), - get_ucell_tot_magnetization_nc_y(), - get_ucell_tot_magnetization_nc_z(), - get_ucell_abs_magnetization()}; + mag = {magnet.tot_magnetization_nc[0], + magnet.tot_magnetization_nc[1], + magnet.tot_magnetization_nc[2], + magnet.abs_magnetization}; break; default: mag = {}; @@ -446,7 +448,7 @@ void ElecState::print_etot(const bool converged, { drho.push_back(scf_thr_kin); } - elecstate::print_scf_iterinfo(get_ks_solver_type(), + elecstate::print_scf_iterinfo(PARAM.inp.ks_solver, iter, 6, mag, diff --git a/source/module_elecstate/elecstate_pw.cpp b/source/module_elecstate/elecstate_pw.cpp index 696a3a75a2..05fb2b57f3 100644 --- a/source/module_elecstate/elecstate_pw.cpp +++ b/source/module_elecstate/elecstate_pw.cpp @@ -176,7 +176,7 @@ void ElecStatePW::rhoBandK(const psi::Psi& psi) this->basis->recip_to_real(this->ctx, &psi(ibnd,npwx), this->wfcr_another_spin, ik); - const auto w1 = static_cast(this->wg(ik, ibnd) / get_ucell_omega()); + const auto w1 = static_cast(this->wg(ik, ibnd) / ucell->omega); if (w1 != 0.0) { @@ -202,7 +202,7 @@ void ElecStatePW::rhoBandK(const psi::Psi& psi) this->basis->recip_to_real(this->ctx, &psi(ibnd,0), this->wfcr, ik); - const auto w1 = static_cast(this->wg(ik, ibnd) / get_ucell_omega()); + const auto w1 = static_cast(this->wg(ik, ibnd) / ucell->omega); if (w1 != 0.0) { @@ -222,7 +222,7 @@ void ElecStatePW::rhoBandK(const psi::Psi& psi) j, npw, this->basis->npwk_max, - static_cast(get_ucell_tpiba()), + static_cast(ucell->tpiba), this->basis->template get_gcar_data(), this->basis->template get_kvec_c_data(), &psi(ibnd, 0), diff --git a/source/module_elecstate/elecstate_pw_cal_tau.cpp b/source/module_elecstate/elecstate_pw_cal_tau.cpp index 0662bb4425..fd07f834af 100644 --- a/source/module_elecstate/elecstate_pw_cal_tau.cpp +++ b/source/module_elecstate/elecstate_pw_cal_tau.cpp @@ -26,7 +26,7 @@ void ElecStatePW::cal_tau(const psi::Psi& psi) { this->basis->recip_to_real(this->ctx, &psi(ibnd,0), this->wfcr, ik); - const auto w1 = static_cast(this->wg(ik, ibnd) / get_ucell_omega()); + const auto w1 = static_cast(this->wg(ik, ibnd) / ucell->omega); // kinetic energy density for (int j = 0; j < 3; j++) @@ -38,7 +38,7 @@ void ElecStatePW::cal_tau(const psi::Psi& psi) j, npw, this->basis->npwk_max, - static_cast(get_ucell_tpiba()), + static_cast(ucell->tpiba), this->basis->template get_gcar_data(), this->basis->template get_kvec_c_data(), &psi(ibnd, 0), diff --git a/source/module_elecstate/magnetism.cpp b/source/module_elecstate/magnetism.cpp index 89bf71eb38..918f1c988c 100644 --- a/source/module_elecstate/magnetism.cpp +++ b/source/module_elecstate/magnetism.cpp @@ -15,7 +15,11 @@ Magnetism::~Magnetism() delete[] this->start_magnetization; } -void Magnetism::compute_magnetization(const int& nrxx, const int& nxyz, const double* const * rho, double* nelec_spin) +void Magnetism::compute_magnetization(const double& omega, + const int& nrxx, + const int& nxyz, + const double* const * rho, + double* nelec_spin) { if (PARAM.inp.nspin==2) { @@ -32,8 +36,8 @@ void Magnetism::compute_magnetization(const int& nrxx, const int& nxyz, const do Parallel_Reduce::reduce_pool(this->tot_magnetization); Parallel_Reduce::reduce_pool(this->abs_magnetization); #endif - this->tot_magnetization *= elecstate::get_ucell_omega() / nxyz; - this->abs_magnetization *= elecstate::get_ucell_omega() / nxyz; + this->tot_magnetization *= omega / nxyz; + this->abs_magnetization *= omega / nxyz; ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"total magnetism (Bohr mag/cell)",this->tot_magnetization); ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"absolute magnetism (Bohr mag/cell)",this->abs_magnetization); @@ -65,8 +69,8 @@ void Magnetism::compute_magnetization(const int& nrxx, const int& nxyz, const do Parallel_Reduce::reduce_pool(this->tot_magnetization_nc, 3); Parallel_Reduce::reduce_pool(this->abs_magnetization); #endif - for(int i=0;i<3;i++)this->tot_magnetization_nc[i] *= elecstate::get_ucell_omega() / nxyz; - this->abs_magnetization *= elecstate::get_ucell_omega() / nxyz; + for(int i=0;i<3;i++)this->tot_magnetization_nc[i] *= omega/ nxyz; + this->abs_magnetization *= omega/ nxyz; GlobalV::ofs_running<<"total magnetism (Bohr mag/cell)"<<'\t'<tot_magnetization_nc[0]<<'\t'<tot_magnetization_nc[1]<<'\t'<tot_magnetization_nc[2]<<'\n'; ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"absolute magnetism (Bohr mag/cell)",this->abs_magnetization); } diff --git a/source/module_elecstate/magnetism.h b/source/module_elecstate/magnetism.h index fbc750b10c..bb4de6d28d 100644 --- a/source/module_elecstate/magnetism.h +++ b/source/module_elecstate/magnetism.h @@ -21,7 +21,12 @@ class Magnetism double tot_magnetization_nc[3]; double abs_magnetization; - void compute_magnetization(const int& nrxx, const int& nxyz, const double* const * rho, double* nelec_spin = nullptr); + void compute_magnetization(const double& omega, + const int& nrxx, + const int& nxyz, + const double* const * rho, + + double* nelec_spin = nullptr); ModuleBase::Vector3 *m_loc_; //magnetization for each element along c-axis double *angle1_; //angle between c-axis and real spin std::vector diff --git a/source/module_elecstate/module_charge/charge.cpp b/source/module_elecstate/module_charge/charge.cpp index 6a2405b579..c3e23dd6c6 100644 --- a/source/module_elecstate/module_charge/charge.cpp +++ b/source/module_elecstate/module_charge/charge.cpp @@ -218,7 +218,7 @@ double Charge::sum_rho() const } // multiply the sum of charge density by a factor - sum_rho *= elecstate::get_ucell_omega() / static_cast(this->rhopw->nxyz); + sum_rho *= *this->omega_ / static_cast(this->rhopw->nxyz); #ifdef __MPI Parallel_Reduce::reduce_pool(sum_rho); @@ -722,7 +722,7 @@ double Charge::cal_rho2ne(const double* rho_in) const #ifdef __MPI Parallel_Reduce::reduce_pool(ne); #endif - ne = ne * elecstate::get_ucell_omega() / (double)this->rhopw->nxyz; + ne = ne * *this->omega_ / (double)this->rhopw->nxyz; return ne; } diff --git a/source/module_elecstate/module_charge/charge.h b/source/module_elecstate/module_charge/charge.h index bc8a1aa4ec..5f01773580 100644 --- a/source/module_elecstate/module_charge/charge.h +++ b/source/module_elecstate/module_charge/charge.h @@ -65,12 +65,14 @@ class Charge * @brief Init charge density from file or atomic pseudo-wave-functions * * @param eferm_iout [out] fermi energy to be initialized + * @param ucell [in] unit cell * @param strucFac [in] structure factor * @param symm [in] symmetry * @param klist [in] k points list if needed * @param wfcpw [in] PW basis for wave function if needed */ void init_rho(elecstate::efermi& eferm_iout, + const UnitCell& ucell, const ModuleBase::ComplexMatrix& strucFac, ModuleSymmetry::Symmetry& symm, const void* klist = nullptr, @@ -84,7 +86,9 @@ class Charge const ModuleBase::ComplexMatrix& strucFac, const UnitCell& ucell) const; - void set_rho_core(const ModuleBase::ComplexMatrix& structure_factor, const bool* numeric); + void set_rho_core(const UnitCell& ucell, + const ModuleBase::ComplexMatrix& structure_factor, + const bool* numeric); void set_rho_core_paw(); void renormalize_rho(); @@ -97,6 +101,8 @@ class Charge void non_linear_core_correction ( const bool &numeric, + const double omega, + const double tpiba2, const int mesh, const double *r, const double *rab, @@ -132,6 +138,8 @@ class Charge */ void reduce_diff_pools(double* array_rho) const; + void set_omega(double* omega_in){this->omega_ = omega_in;}; + // mohan add 2021-02-20 int nrxx; // number of r vectors in this processor int nxyz; // total nuber of r vectors @@ -143,6 +151,8 @@ class Charge void destroy(); // free arrays liuyu 2023-03-12 + double* omega_ = nullptr; // omega for non-linear core correction + bool allocate_rho; bool allocate_rho_final_scf; // LiuXh add 20180606 diff --git a/source/module_elecstate/module_charge/charge_init.cpp b/source/module_elecstate/module_charge/charge_init.cpp index b38c5cdd5c..45769c3161 100644 --- a/source/module_elecstate/module_charge/charge_init.cpp +++ b/source/module_elecstate/module_charge/charge_init.cpp @@ -22,6 +22,7 @@ #endif void Charge::init_rho(elecstate::efermi& eferm_iout, + const UnitCell& ucell, const ModuleBase::ComplexMatrix& strucFac, ModuleSymmetry::Symmetry& symm, const void* klist, @@ -30,6 +31,9 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "init_chg", PARAM.inp.init_chg); std::cout << " START CHARGE : " << PARAM.inp.init_chg << std::endl; + //here we need to set the omega for the charge density + set_omega(&ucell.omega); + bool read_error = false; if (PARAM.inp.init_chg == "file" || PARAM.inp.init_chg == "auto") { @@ -58,7 +62,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, GlobalV::ofs_running, ssc.str(), this->rho[is], - GlobalC::ucell.nat)) + ucell.nat)) { GlobalV::ofs_running << " Read in the charge density: " << ssc.str() << std::endl; } @@ -108,7 +112,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, GlobalV::ofs_running, ssc.str(), this->kin_r[is], - GlobalC::ucell.nat)) + ucell.nat)) { GlobalV::ofs_running << " Read in the kinetic energy density: " << ssc.str() << std::endl; } @@ -134,7 +138,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, if (PARAM.inp.init_chg == "atomic" || (PARAM.inp.init_chg == "auto" && read_error)) // mohan add 2007-10-17 { - this->atomic_rho(PARAM.inp.nspin, GlobalC::ucell.omega, rho, strucFac, GlobalC::ucell); + this->atomic_rho(PARAM.inp.nspin, ucell.omega, rho, strucFac, ucell); // liuyu 2023-06-29 : move here from atomic_rho(), which will be called several times in charge extrapolation // wenfei 2021-7-29 : initial tau = 3/5 rho^2/3, Thomas-Fermi @@ -171,7 +175,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, GlobalV::ofs_running, ssc.str(), this->rho[is], - GlobalC::ucell.nat)) + ucell.nat)) { GlobalV::ofs_running << " Read in the charge density: " << ssc.str() << std::endl; } @@ -199,7 +203,9 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, //========================================================== // computes the core charge on the real space 3D mesh. //========================================================== -void Charge::set_rho_core(const ModuleBase::ComplexMatrix& structure_factor, const bool* numeric) +void Charge::set_rho_core(const UnitCell& ucell, + const ModuleBase::ComplexMatrix& structure_factor, + const bool* numeric) { ModuleBase::TITLE("Charge","set_rho_core"); ModuleBase::timer::tick("Charge","set_rho_core"); @@ -216,9 +222,9 @@ void Charge::set_rho_core(const ModuleBase::ComplexMatrix& structure_factor, con // int ig = 0; bool bl = false; - for (int it = 0; it *vg = new std::complex[this->rhopw->npw]; - for (int it = 0; it < GlobalC::ucell.ntype;it++) + for (int it = 0; it < ucell.ntype;it++) { - if (GlobalC::ucell.atoms[it].ncpp.nlcc) + if (ucell.atoms[it].ncpp.nlcc) { //---------------------------------------------------------- // EXPLAIN : drhoc compute the radial fourier transform for @@ -248,10 +254,12 @@ void Charge::set_rho_core(const ModuleBase::ComplexMatrix& structure_factor, con //---------------------------------------------------------- this->non_linear_core_correction( numeric, - GlobalC::ucell.atoms[it].ncpp.msh, - GlobalC::ucell.atoms[it].ncpp.r.data(), - GlobalC::ucell.atoms[it].ncpp.rab.data(), - GlobalC::ucell.atoms[it].ncpp.rho_atc.data(), + ucell.omega, + ucell.tpiba2, + ucell.atoms[it].ncpp.msh, + ucell.atoms[it].ncpp.r.data(), + ucell.atoms[it].ncpp.rab.data(), + ucell.atoms[it].ncpp.rho_atc.data(), rhocg); //---------------------------------------------------------- // EXPLAIN : multiply by the structure factor and sum @@ -296,8 +304,8 @@ void Charge::set_rho_core(const ModuleBase::ComplexMatrix& structure_factor, con // mohan changed 2010-2-2, make this same as in atomic_rho. // still lack something...... - rhoneg /= this->rhopw->nxyz * GlobalC::ucell.omega; - rhoima /= this->rhopw->nxyz * GlobalC::ucell.omega; + rhoneg /= this->rhopw->nxyz * ucell.omega; + rhoima /= this->rhopw->nxyz * ucell.omega; // calculate core_only exch-corr energy etxcc=E_xc[rho_core] if required // The term was present in previous versions of the code but it shouldn't @@ -322,6 +330,8 @@ void Charge::set_rho_core_paw() void Charge::non_linear_core_correction ( const bool &numeric, + const double omega, + const double tpiba2, const int mesh, const double *r, const double *rab, @@ -356,7 +366,7 @@ void Charge::non_linear_core_correction } ModuleBase::Integral::Simpson_Integral(mesh, aux, rab, rhocg1); //rhocg [1] = fpi * rhocg1 / omega; - rhocg [0] = ModuleBase::FOUR_PI * rhocg1 / GlobalC::ucell.omega;//mohan modify 2008-01-19 + rhocg [0] = ModuleBase::FOUR_PI * rhocg1 / omega;//mohan modify 2008-01-19 } igl0 = 1; } @@ -370,14 +380,14 @@ void Charge::non_linear_core_correction // G <> 0 term for (int igl = igl_beg; igl < igl_end;igl++) { - gx = sqrt(this->rhopw->gg_uniq[igl] * GlobalC::ucell.tpiba2); + gx = sqrt(this->rhopw->gg_uniq[igl] * tpiba2); ModuleBase::Sphbes::Spherical_Bessel(mesh, r, gx, 0, aux); for (int ir = 0;ir < mesh; ir++) { aux [ir] = r[ir] * r[ir] * rhoc [ir] * aux [ir]; } // enddo ModuleBase::Integral::Simpson_Integral(mesh, aux, rab, rhocg1); - rhocg [igl] = ModuleBase::FOUR_PI * rhocg1 / GlobalC::ucell.omega; + rhocg [igl] = ModuleBase::FOUR_PI * rhocg1 / omega; } // enddo delete [] aux; } diff --git a/source/module_elecstate/module_charge/charge_mixing.cpp b/source/module_elecstate/module_charge/charge_mixing.cpp index 37860691b7..5bc3188190 100644 --- a/source/module_elecstate/module_charge/charge_mixing.cpp +++ b/source/module_elecstate/module_charge/charge_mixing.cpp @@ -25,7 +25,9 @@ void Charge_Mixing::set_mixing(const std::string& mixing_mode_in, const double& mixing_gg0_mag_in, const double& mixing_gg0_min_in, const double& mixing_angle_in, - const bool& mixing_dmr_in) + const bool& mixing_dmr_in, + double& omega_in, + double& tpiba_in) { // get private mixing parameters this->mixing_mode = mixing_mode_in; @@ -38,7 +40,8 @@ void Charge_Mixing::set_mixing(const std::string& mixing_mode_in, this->mixing_gg0_min = mixing_gg0_min_in; this->mixing_angle = mixing_angle_in; this->mixing_dmr = mixing_dmr_in; - + this->omega = &omega_in; + this->tpiba = &tpiba_in; // check the paramters if (this->mixing_beta > 1.0 || this->mixing_beta < 0.0) { diff --git a/source/module_elecstate/module_charge/charge_mixing.h b/source/module_elecstate/module_charge/charge_mixing.h index 9e85908d12..d6fdbc2586 100644 --- a/source/module_elecstate/module_charge/charge_mixing.h +++ b/source/module_elecstate/module_charge/charge_mixing.h @@ -33,6 +33,8 @@ class Charge_Mixing * @param mixing_gg0_min_in minimum kerker coefficient * @param mixing_angle_in mixing angle for nspin=4 * @param mixing_dmr_in whether to mixing real space density matrix + * @param omega_in omega for non-linear core correction + * @param tpiba_in 2*pi/beta for non-linear core correction */ void set_mixing(const std::string& mixing_mode_in, const double& mixing_beta_in, @@ -43,7 +45,9 @@ class Charge_Mixing const double& mixing_gg0_mag_in, const double& mixing_gg0_min_in, const double& mixing_angle_in, - const bool& mixing_dmr_in); + const bool& mixing_dmr_in, + double& omega_in, + double& tpiba_in); void close_kerker_gg0() { mixing_gg0 = 0.0; mixing_gg0_mag = 0.0; } /** @@ -129,7 +133,9 @@ class Charge_Mixing double mixing_gg0_min = 0.1; ///< minimum kerker coefficient double mixing_angle = 0.0; ///< mixing angle for nspin=4 bool mixing_dmr = false; ///< whether to mixing real space density matrix - + double* omega = nullptr; ///< omega for non-linear core correction + double* tpiba = nullptr; ///< 2*pi/beta for non-linear core correction + double* tpiba2 = nullptr; ///< 2*pi/beta^2 for non-linear core correction std::vector _drho_history; ///< history of drho used to determine the oscillation, size is scf_nmax bool new_e_iteration = true; diff --git a/source/module_elecstate/module_charge/charge_mixing_preconditioner.cpp b/source/module_elecstate/module_charge/charge_mixing_preconditioner.cpp index 3564b86f98..ad8ea3801b 100644 --- a/source/module_elecstate/module_charge/charge_mixing_preconditioner.cpp +++ b/source/module_elecstate/module_charge/charge_mixing_preconditioner.cpp @@ -45,7 +45,7 @@ void Charge_Mixing::Kerker_screen_recip(std::complex* drhog) amin = this->mixing_beta; } - gg0 = std::pow(fac * 0.529177 / GlobalC::ucell.tpiba, 2); + gg0 = std::pow(fac * 0.529177 / *this->tpiba, 2); #ifdef _OPENMP #pragma omp parallel for schedule(static, 512) #endif @@ -110,7 +110,7 @@ void Charge_Mixing::Kerker_screen_real(double* drhor) amin = this->mixing_beta; } - gg0 = std::pow(fac * 0.529177 / GlobalC::ucell.tpiba, 2); + gg0 = std::pow(fac * 0.529177 / *this->tpiba, 2); #ifdef _OPENMP #pragma omp parallel for schedule(static, 512) #endif diff --git a/source/module_elecstate/module_charge/charge_mixing_residual.cpp b/source/module_elecstate/module_charge/charge_mixing_residual.cpp index d2683629d5..b2d1425597 100644 --- a/source/module_elecstate/module_charge/charge_mixing_residual.cpp +++ b/source/module_elecstate/module_charge/charge_mixing_residual.cpp @@ -60,9 +60,9 @@ double Charge_Mixing::get_drho(Charge* chr, const double nelec) Parallel_Reduce::reduce_pool(drho); #endif assert(nelec != 0); - assert(GlobalC::ucell.omega > 0); + assert(*this->omega > 0); assert(this->rhopw->nxyz > 0); - drho *= GlobalC::ucell.omega / static_cast(this->rhopw->nxyz); + drho *= *this->omega / static_cast(this->rhopw->nxyz); drho /= nelec; } @@ -99,9 +99,9 @@ double Charge_Mixing::get_dkin(Charge* chr, const double nelec) Parallel_Reduce::reduce_pool(dkin); #endif assert(nelec != 0); - assert(GlobalC::ucell.omega > 0); + assert(*this->omega > 0); assert(this->rhopw->nxyz > 0); - dkin *= GlobalC::ucell.omega / static_cast(this->rhopw->nxyz); + dkin *= *this->omega / static_cast(this->rhopw->nxyz); dkin /= nelec; ModuleBase::timer::tick("Charge_Mixing", "get_dkin"); @@ -121,7 +121,7 @@ double Charge_Mixing::inner_product_recip_rho(std::complex* rho1, std::c rhog2[is] = rho2 + is * this->rhopw->npw; } - static const double fac = ModuleBase::e2 * ModuleBase::FOUR_PI / GlobalC::ucell.tpiba2; + static const double fac = ModuleBase::e2 * ModuleBase::FOUR_PI / ((*this->tpiba) * (*this->tpiba)); static const double fac2 = ModuleBase::e2 * ModuleBase::FOUR_PI / (ModuleBase::TWO_PI * ModuleBase::TWO_PI); double sum = 0.0; @@ -245,7 +245,7 @@ double Charge_Mixing::inner_product_recip_rho(std::complex* rho1, std::c #endif ModuleBase::timer::tick("Charge_Mixing", "inner_product_recip_rho"); - sum *= GlobalC::ucell.omega * 0.5; + sum *= *this->omega * 0.5; delete[] rhog1; delete[] rhog2; @@ -285,7 +285,7 @@ double Charge_Mixing::inner_product_recip_hartree(std::complex* rhog1, s ModuleBase::TITLE("Charge_Mixing", "inner_product_recip_hartree"); ModuleBase::timer::tick("Charge_Mixing", "inner_product_recip_hartree"); - static const double fac = ModuleBase::e2 * ModuleBase::FOUR_PI / GlobalC::ucell.tpiba2; + static const double fac = ModuleBase::e2 * ModuleBase::FOUR_PI / ((*this->tpiba) * (*this->tpiba)); static const double fac2 = ModuleBase::e2 * ModuleBase::FOUR_PI / (ModuleBase::TWO_PI * ModuleBase::TWO_PI); double sum = 0.0; @@ -446,7 +446,7 @@ double Charge_Mixing::inner_product_recip_hartree(std::complex* rhog1, s ModuleBase::timer::tick("Charge_Mixing", "inner_product_recip_hartree"); - sum *= GlobalC::ucell.omega * 0.5; + sum *= *this->omega * 0.5; return sum; } diff --git a/source/module_elecstate/potentials/H_TDDFT_pw.cpp b/source/module_elecstate/potentials/H_TDDFT_pw.cpp index 7d92e3959a..a0533fda51 100644 --- a/source/module_elecstate/potentials/H_TDDFT_pw.cpp +++ b/source/module_elecstate/potentials/H_TDDFT_pw.cpp @@ -156,7 +156,7 @@ void H_TDDFT_pw::cal_v_space_length(std::vector& vext_space, int direc) ModuleBase::TITLE("H_TDDFT_pw", "cal_v_space_length"); ModuleBase::timer::tick("H_TDDFT_pw", "cal_v_space_length"); - prepare(GlobalC::ucell, direc); + prepare(ucell_->G, direc); for (int ir = 0; ir < this->rho_basis_->nrxx; ++ir) { @@ -436,25 +436,25 @@ double H_TDDFT_pw::cal_v_time_heaviside() return vext_time; } -void H_TDDFT_pw::prepare(const UnitCell& cell, int& dir) +void H_TDDFT_pw::prepare(const ModuleBase::Matrix3& G, int& dir) { if (dir == 1) { - bvec[0] = cell.G.e11; - bvec[1] = cell.G.e12; - bvec[2] = cell.G.e13; + bvec[0] = G.e11; + bvec[1] = G.e12; + bvec[2] = G.e13; } else if (dir == 2) { - bvec[0] = cell.G.e21; - bvec[1] = cell.G.e22; - bvec[2] = cell.G.e23; + bvec[0] = G.e21; + bvec[1] = G.e22; + bvec[2] = G.e23; } else if (dir == 3) { - bvec[0] = cell.G.e31; - bvec[1] = cell.G.e32; - bvec[2] = cell.G.e33; + bvec[0] = G.e31; + bvec[1] = G.e32; + bvec[2] = G.e33; } else { diff --git a/source/module_elecstate/potentials/H_TDDFT_pw.h b/source/module_elecstate/potentials/H_TDDFT_pw.h index 4925da63bd..8d7c42f9e5 100644 --- a/source/module_elecstate/potentials/H_TDDFT_pw.h +++ b/source/module_elecstate/potentials/H_TDDFT_pw.h @@ -95,7 +95,7 @@ class H_TDDFT_pw : public PotBase static std::vector heavi_amp; // Ry/bohr //update At for velocity gauge by intergral of E(t)dt - static void update_At(void); + static void update_At(); private: // internal time-step, @@ -127,7 +127,7 @@ class H_TDDFT_pw : public PotBase //get ncut number for At integral static int check_ncut(int t_type); - void prepare(const UnitCell& cell, int& dir); + void prepare(const ModuleBase::Matrix3& G, int& dir); }; } // namespace elecstate diff --git a/source/module_elecstate/test/charge_mixing_test.cpp b/source/module_elecstate/test/charge_mixing_test.cpp index b86f5dd64c..049ef74fc2 100644 --- a/source/module_elecstate/test/charge_mixing_test.cpp +++ b/source/module_elecstate/test/charge_mixing_test.cpp @@ -48,10 +48,6 @@ InfoNonlocal::~InfoNonlocal() } #endif // mock class cell -namespace GlobalC -{ -UnitCell ucell; -}; /************************************************ * unit test of charge_mixing.cpp ***********************************************/ @@ -89,6 +85,7 @@ UnitCell ucell; class ChargeMixingTest : public ::testing::Test { public: + UnitCell ucell; ChargeMixingTest() { // Init pw_basis @@ -111,6 +108,8 @@ class ChargeMixingTest : public ::testing::Test PARAM.input.mixing_gg0_min = 0.1; PARAM.input.mixing_angle = -10.0; PARAM.input.mixing_dmr = false; + ucell.omega = 1.0; + ucell.tpiba = 1.0; } ModulePW::PW_Basis pw_basis; ModulePW::PW_Basis_Sup pw_dbasis; @@ -138,7 +137,9 @@ TEST_F(ChargeMixingTest, SetMixingTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); EXPECT_EQ(CMtest.get_mixing_mode(), "broyden"); EXPECT_EQ(CMtest.get_mixing_beta(), 1.0); EXPECT_EQ(CMtest.get_mixing_ndim(), 1); @@ -161,7 +162,9 @@ TEST_F(ChargeMixingTest, SetMixingTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); EXPECT_EQ(CMtest.mixing_mode, "plain"); EXPECT_EQ(CMtest.mixing_tau, true); @@ -177,7 +180,9 @@ TEST_F(ChargeMixingTest, SetMixingTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr);, ::testing::ExitedWithCode(1), ""); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba);, ::testing::ExitedWithCode(1), ""); output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output, testing::HasSubstr("You'd better set mixing_beta to [0.0, 1.0]!")); @@ -194,7 +199,9 @@ TEST_F(ChargeMixingTest, SetMixingTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr);, ::testing::ExitedWithCode(1), ""); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba);, ::testing::ExitedWithCode(1), ""); output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output, testing::HasSubstr("You'd better set mixing_beta_mag >= 0.0!")); @@ -212,7 +219,9 @@ TEST_F(ChargeMixingTest, SetMixingTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr);, ::testing::ExitedWithCode(1), ""); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba);, ::testing::ExitedWithCode(1), ""); output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output, testing::HasSubstr("This Mixing mode is not implemended yet,coming soon.")); } @@ -236,7 +245,9 @@ TEST_F(ChargeMixingTest, InitMixingTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); PARAM.input.scf_thr_type= 1; CMtest.init_mixing(); @@ -261,7 +272,9 @@ TEST_F(ChargeMixingTest, InitMixingTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); FUNC_TYPE = 3; CMtest.init_mixing(); EXPECT_EQ(CMtest.tau_mdata.length, pw_basis.nrxx); @@ -277,7 +290,9 @@ TEST_F(ChargeMixingTest, InitMixingTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); CMtest.init_mixing(); EXPECT_EQ(CMtest.rho_mdata.length, 2 * pw_basis.nrxx); } @@ -295,7 +310,9 @@ TEST_F(ChargeMixingTest, InnerDotRealTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); CMtest.set_rhopw(&pw_basis, &pw_basis); PARAM.input.nspin = 4; @@ -321,7 +338,9 @@ TEST_F(ChargeMixingTest, InnerDotRealTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); PARAM.input.nspin = 4; // a simple sum for inner product @@ -349,7 +368,9 @@ TEST_F(ChargeMixingTest, InnerDotRecipSimpleTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); CMtest.set_rhopw(&pw_basis, &pw_basis); PARAM.input.nspin = 2; @@ -384,9 +405,20 @@ TEST_F(ChargeMixingTest, InnerDotRecipHartreeTest) EXPECT_NEAR(inner, 0.5 * pw_basis.nrxx * (pw_basis.nrxx - 1), 1e-8); // RECIPROCAL NSPIN=1 - GlobalC::ucell.tpiba2 = 1.0; - GlobalC::ucell.omega = 2.0; - + ucell.tpiba2 = 1.0; + ucell.omega = 2.0; + CMtest.set_mixing(PARAM.input.mixing_mode, + PARAM.input.mixing_beta, + PARAM.input.mixing_ndim, + PARAM.input.mixing_gg0, + PARAM.input.mixing_tau, + PARAM.input.mixing_beta_mag, + PARAM.input.mixing_gg0_mag, + PARAM.input.mixing_gg0_min, + PARAM.input.mixing_angle, + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); PARAM.input.nspin = 1; std::vector> drhog1(pw_basis.npw); std::vector> drhog2(pw_basis.npw); @@ -459,7 +491,9 @@ TEST_F(ChargeMixingTest, InnerDotRecipHartreeTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); drhog1.resize(pw_basis.npw * 2); drhog2.resize(pw_basis.npw * 2); for (int i = 0; i < pw_basis.npw * 2; ++i) @@ -492,9 +526,20 @@ TEST_F(ChargeMixingTest, InnerDotRecipRhoTest) EXPECT_NEAR(inner, 0.5 * pw_basis.nrxx * (pw_basis.nrxx - 1), 1e-8); // RECIPROCAL - GlobalC::ucell.tpiba2 = 1.0; - GlobalC::ucell.omega = 2.0; - + ucell.tpiba2 = 1.0; + ucell.omega = 2.0; + CMtest.set_mixing(PARAM.input.mixing_mode, + PARAM.input.mixing_beta, + PARAM.input.mixing_ndim, + PARAM.input.mixing_gg0, + PARAM.input.mixing_tau, + PARAM.input.mixing_beta_mag, + PARAM.input.mixing_gg0_mag, + PARAM.input.mixing_gg0_min, + PARAM.input.mixing_angle, + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); PARAM.input.nspin = 1; std::vector> drhog1(pw_basis.npw); std::vector> drhog2(pw_basis.npw); @@ -548,7 +593,19 @@ TEST_F(ChargeMixingTest, KerkerScreenRecipTest) { Charge_Mixing CMtest; CMtest.set_rhopw(&pw_basis, &pw_basis); - GlobalC::ucell.tpiba = 1.0; + ucell.tpiba = 1.0; + CMtest.set_mixing(PARAM.input.mixing_mode, + PARAM.input.mixing_beta, + PARAM.input.mixing_ndim, + PARAM.input.mixing_gg0, + PARAM.input.mixing_tau, + PARAM.input.mixing_beta_mag, + PARAM.input.mixing_gg0_mag, + PARAM.input.mixing_gg0_min, + PARAM.input.mixing_angle, + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); // nspin = 1 PARAM.input.nspin = 1; std::complex* drhog = new std::complex[PARAM.input.nspin*pw_basis.npw]; @@ -678,8 +735,19 @@ TEST_F(ChargeMixingTest, KerkerScreenRealTest) { Charge_Mixing CMtest; CMtest.set_rhopw(&pw_basis, &pw_basis); - GlobalC::ucell.tpiba = 1.0; - + ucell.tpiba = 1.0; + CMtest.set_mixing(PARAM.input.mixing_mode, + PARAM.input.mixing_beta, + PARAM.input.mixing_ndim, + PARAM.input.mixing_gg0, + PARAM.input.mixing_tau, + PARAM.input.mixing_beta_mag, + PARAM.input.mixing_gg0_mag, + PARAM.input.mixing_gg0_min, + PARAM.input.mixing_angle, + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); // nspin = 1 PARAM.input.nspin = 1; double* drhor = new double[PARAM.input.nspin*pw_basis.nrxx]; @@ -815,7 +883,9 @@ TEST_F(ChargeMixingTest, MixRhoTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); CMtest_recip.init_mixing(); for(int i = 0 ; i < nspin * npw; ++i) { @@ -854,7 +924,9 @@ TEST_F(ChargeMixingTest, MixRhoTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); CMtest_real.init_mixing(); for(int i = 0 ; i < nspin * nrxx; ++i) { @@ -950,7 +1022,9 @@ TEST_F(ChargeMixingTest, MixDoubleGridRhoTest) PARAM.input.mixing_gg0_mag, PARAM.input.mixing_gg0_min, PARAM.input.mixing_angle, - PARAM.input.mixing_dmr); + PARAM.input.mixing_dmr, + ucell.omega, + ucell.tpiba); CMtest_recip.init_mixing(); for (int i = 0; i < nspin * npw; ++i) diff --git a/source/module_elecstate/test/charge_test.cpp b/source/module_elecstate/test/charge_test.cpp index f780285427..b6c98f85a2 100644 --- a/source/module_elecstate/test/charge_test.cpp +++ b/source/module_elecstate/test/charge_test.cpp @@ -39,10 +39,6 @@ int get_xc_func_type() return tmp_xc_func_type; } double tmp_ucell_omega = 500.0; -double get_ucell_omega() -{ - return tmp_ucell_omega; -} double tmp_gridecut = 80.0; void Set_GlobalV_Default() { @@ -146,7 +142,7 @@ TEST_F(ChargeTest, SumRho) charge->rho[is][ir] = 0.1; } } - elecstate::tmp_ucell_omega = ucell->omega; + charge->set_omega(&ucell->omega);; EXPECT_NEAR(charge->sum_rho(), 0.1 * nspin * rhopw->nrxx * ucell->omega / rhopw->nxyz, 1E-10); } @@ -165,7 +161,7 @@ TEST_F(ChargeTest, RenormalizeRho) } } EXPECT_EQ(PARAM.input.nelec, 8); - elecstate::tmp_ucell_omega = ucell->omega; + charge->set_omega(&ucell->omega);; charge->renormalize_rho(); EXPECT_NEAR(charge->sum_rho(), 8.0, 1e-10); } @@ -185,7 +181,7 @@ TEST_F(ChargeTest, CheckNe) } } EXPECT_EQ(PARAM.input.nelec, 8); - elecstate::tmp_ucell_omega = ucell->omega; + charge->set_omega(&ucell->omega);; charge->renormalize_rho(); EXPECT_NEAR(charge->sum_rho(), 8.0, 1e-10); EXPECT_NEAR(charge->cal_rho2ne(charge->rho[0]), 8.0, 1e-10); @@ -207,7 +203,7 @@ TEST_F(ChargeTest, SaveRhoBeforeSumBand) } EXPECT_EQ(PARAM.input.nelec, 8); elecstate::tmp_xc_func_type = 3; - elecstate::tmp_ucell_omega = ucell->omega; + charge->set_omega(&ucell->omega);; charge->renormalize_rho(); charge->save_rho_before_sum_band(); EXPECT_NEAR(charge->cal_rho2ne(charge->rho_save[0]), 8.0, 1e-10); diff --git a/source/module_elecstate/test/elecstate_base_test.cpp b/source/module_elecstate/test/elecstate_base_test.cpp index 050a50b74a..ae63d16508 100644 --- a/source/module_elecstate/test/elecstate_base_test.cpp +++ b/source/module_elecstate/test/elecstate_base_test.cpp @@ -32,7 +32,12 @@ Charge::Charge() Charge::~Charge() { } - +UnitCell::UnitCell(){} +UnitCell::~UnitCell(){} +Magnetism::Magnetism(){} +Magnetism::~Magnetism(){} +InfoNonlocal::InfoNonlocal(){} +InfoNonlocal::~InfoNonlocal(){} #include "module_cell/klist.h" K_Vectors::K_Vectors() { @@ -60,13 +65,14 @@ void ModulePW::PW_Basis::initgrids(double, ModuleBase::Matrix3, int, int, int) void ModulePW::PW_Basis::distribute_r() { } -void Charge::set_rho_core(ModuleBase::ComplexMatrix const&, const bool*) +void Charge::set_rho_core(const UnitCell& ucell, ModuleBase::ComplexMatrix const&, const bool*) { } void Charge::set_rho_core_paw() { } void Charge::init_rho(elecstate::efermi&, + const UnitCell&, ModuleBase::ComplexMatrix const&, ModuleSymmetry::Symmetry& symm, const void*, @@ -139,6 +145,7 @@ class ElecStateTest : public ::testing::Test { protected: elecstate::MockElecState* elecstate; + UnitCell ucell; std::string output; void SetUp() { @@ -249,7 +256,7 @@ TEST_F(ElecStateTest, InitSCF) ModuleBase::ComplexMatrix strucfac; elecstate->eferm = efermi; ModuleSymmetry::Symmetry symm; - EXPECT_NO_THROW(elecstate->init_scf(istep, strucfac, nullptr, symm)); + EXPECT_NO_THROW(elecstate->init_scf(istep, ucell,strucfac, nullptr, symm)); // delete elecstate->pot is done in the destructor of elecstate delete charge; } diff --git a/source/module_elecstate/test/elecstate_magnetism_test.cpp b/source/module_elecstate/test/elecstate_magnetism_test.cpp index b9266c7244..a527de29d5 100644 --- a/source/module_elecstate/test/elecstate_magnetism_test.cpp +++ b/source/module_elecstate/test/elecstate_magnetism_test.cpp @@ -31,10 +31,6 @@ Charge::~Charge() { } -double elecstate::get_ucell_omega() -{ - return 500.0; -} class MagnetismTest : public ::testing::Test { @@ -57,11 +53,6 @@ TEST_F(MagnetismTest, Magnetism) EXPECT_EQ(nullptr, magnetism->start_magnetization); } -TEST_F(MagnetismTest, GlobalInfo) -{ - EXPECT_EQ(500.0, elecstate::get_ucell_omega()); -} - TEST_F(MagnetismTest, JudgeParallel) { double a[3] = {1.0, 0.0, 0.0}; @@ -91,7 +82,7 @@ TEST_F(MagnetismTest, ComputeMagnetizationS2) chr->rho[1][ir] = 1.01; } double* nelec_spin = new double[2]; - magnetism->compute_magnetization(chr->nrxx, chr->nxyz, chr->rho, nelec_spin); + magnetism->compute_magnetization(500.0,chr->nrxx, chr->nxyz, chr->rho, nelec_spin); EXPECT_DOUBLE_EQ(-0.5, magnetism->tot_magnetization); EXPECT_DOUBLE_EQ(0.5, magnetism->abs_magnetization); EXPECT_DOUBLE_EQ(4.75, nelec_spin[0]); @@ -125,7 +116,7 @@ TEST_F(MagnetismTest, ComputeMagnetizationS4) chr->rho[3][ir] = 1.00; } double* nelec_spin = new double[4]; - magnetism->compute_magnetization(chr->nrxx, chr->nxyz, chr->rho, nelec_spin); + magnetism->compute_magnetization(500.0,chr->nrxx, chr->nxyz, chr->rho, nelec_spin); EXPECT_DOUBLE_EQ(100.0, magnetism->abs_magnetization); EXPECT_DOUBLE_EQ(50.0*std::sqrt(2.0), magnetism->tot_magnetization_nc[0]); EXPECT_DOUBLE_EQ(50.0, magnetism->tot_magnetization_nc[1]); diff --git a/source/module_elecstate/test/elecstate_print_test.cpp b/source/module_elecstate/test/elecstate_print_test.cpp index 657ac999b8..0fb0248e64 100644 --- a/source/module_elecstate/test/elecstate_print_test.cpp +++ b/source/module_elecstate/test/elecstate_print_test.cpp @@ -33,38 +33,14 @@ void ElecState::calculate_weights() } // just for mock double Efield::etotefield = 1.1; double elecstate::Gatefield::etotgatefield = 2.2; -std::string tmp_vdw_method = "d2"; -std::string get_input_vdw_method() -{ - return tmp_vdw_method; -} -double get_ucell_tot_magnetization() -{ - return 1.1; -} -double get_ucell_abs_magnetization() -{ - return 2.2; -} -double get_ucell_tot_magnetization_nc_x() -{ - return 3.3; -} -double get_ucell_tot_magnetization_nc_y() -{ - return 4.4; -} -double get_ucell_tot_magnetization_nc_z() -{ - return 5.5; -} -std::string tmp_ks_solver = "dav"; -std::string get_ks_solver_type() -{ - return tmp_ks_solver; -} -} // namespace elecstate +} // namespace elecstate +UnitCell::UnitCell(){} +UnitCell::~UnitCell(){} +Magnetism::Magnetism(){} +Magnetism::~Magnetism(){} +InfoNonlocal::InfoNonlocal(){} +InfoNonlocal::~InfoNonlocal(){} Charge::Charge() { } @@ -90,6 +66,7 @@ class ElecStatePrintTest : public ::testing::Test { protected: elecstate::ElecState elecstate; + UnitCell ucell; std::string output; std::ifstream ifs; std::ofstream ofs; @@ -117,6 +94,12 @@ class ElecStatePrintTest : public ::testing::Test elecstate.wg(0, 1) = 0.2; elecstate.wg(1, 0) = 0.3; elecstate.wg(1, 1) = 0.4; + ucell.magnet.tot_magnetization = 1.1; + ucell.magnet.abs_magnetization = 2.2; + ucell.magnet.tot_magnetization_nc[0] = 3.3; + ucell.magnet.tot_magnetization_nc[1] = 4.4; + ucell.magnet.tot_magnetization_nc[2] = 5.5; + PARAM.input.ks_solver = "dav"; } void TearDown() { @@ -251,38 +234,38 @@ TEST_F(ElecStatePrintTest, PrintEtot) std::vector vdw_methods = {"d2", "d3_0", "d3_bj"}; for (int i = 0; i < vdw_methods.size(); i++) { - elecstate::tmp_vdw_method = vdw_methods[i]; - elecstate.print_etot(converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, false); + PARAM.input.vdw_method = vdw_methods[i]; + elecstate.print_etot(ucell.magnet,converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, false); } // iteration of different ks_solver std::vector ks_solvers = {"cg", "lapack", "genelpa", "dav", "scalapack_gvx", "cusolver"}; for (int i = 0; i < ks_solvers.size(); i++) { - elecstate::tmp_ks_solver = ks_solvers[i]; + PARAM.input.ks_solver = ks_solvers[i]; testing::internal::CaptureStdout(); - elecstate.print_etot(converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, print); + elecstate.print_etot(ucell.magnet,converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, print); output = testing::internal::GetCapturedStdout(); - if (elecstate::tmp_ks_solver == "cg") + if (PARAM.input.ks_solver == "cg") { EXPECT_THAT(output, testing::HasSubstr("CG")); } - else if (elecstate::tmp_ks_solver == "lapack") + else if (PARAM.input.ks_solver == "lapack") { EXPECT_THAT(output, testing::HasSubstr("LA")); } - else if (elecstate::tmp_ks_solver == "genelpa") + else if (PARAM.input.ks_solver == "genelpa") { EXPECT_THAT(output, testing::HasSubstr("GE")); } - else if (elecstate::tmp_ks_solver == "dav") + else if (PARAM.input.ks_solver == "dav") { EXPECT_THAT(output, testing::HasSubstr("DA")); } - else if (elecstate::tmp_ks_solver == "scalapack_gvx") + else if (PARAM.input.ks_solver == "scalapack_gvx") { EXPECT_THAT(output, testing::HasSubstr("GV")); } - else if (elecstate::tmp_ks_solver == "cusolver") + else if (PARAM.input.ks_solver == "cusolver") { EXPECT_THAT(output, testing::HasSubstr("CU")); } @@ -328,7 +311,7 @@ TEST_F(ElecStatePrintTest, PrintEtot2) PARAM.input.basis_type = "pw"; PARAM.input.scf_nmax = 100; - elecstate.print_etot(converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, print); + elecstate.print_etot(ucell.magnet,converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, print); GlobalV::ofs_running.close(); ifs.open("test.dat", std::ios::in); std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); @@ -364,7 +347,7 @@ TEST_F(ElecStatePrintTest, PrintEtotColorS2) PARAM.input.out_bandgap = true; PARAM.input.nspin = 2; GlobalV::MY_RANK = 0; - elecstate.print_etot(converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, print); + elecstate.print_etot(ucell.magnet,converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, print); } TEST_F(ElecStatePrintTest, PrintEtotColorS4) @@ -389,5 +372,5 @@ TEST_F(ElecStatePrintTest, PrintEtotColorS4) PARAM.input.nspin = 4; PARAM.input.noncolin = true; GlobalV::MY_RANK = 0; - elecstate.print_etot(converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, print); + elecstate.print_etot(ucell.magnet,converged, iter, scf_thr, scf_thr_kin, duration, printe, pw_diag_thr, avg_iter, print); } \ No newline at end of file diff --git a/source/module_elecstate/test/elecstate_pw_test.cpp b/source/module_elecstate/test/elecstate_pw_test.cpp index 85ba4d1b24..dae7ab46a4 100644 --- a/source/module_elecstate/test/elecstate_pw_test.cpp +++ b/source/module_elecstate/test/elecstate_pw_test.cpp @@ -11,14 +11,6 @@ // mock functions for testing namespace elecstate { -double get_ucell_omega() -{ - return 500.0; -} -double get_ucell_tpiba() -{ - return 2.0; -} int tmp_xc_func_type = 1; int get_xc_func_type() { @@ -141,13 +133,14 @@ K_Vectors::~K_Vectors() { } -void Charge::set_rho_core(ModuleBase::ComplexMatrix const&, const bool*) +void Charge::set_rho_core(const UnitCell& ucell, ModuleBase::ComplexMatrix const&, const bool*) { } void Charge::set_rho_core_paw() { } void Charge::init_rho(elecstate::efermi&, + const UnitCell&, ModuleBase::ComplexMatrix const&, ModuleSymmetry::Symmetry& symm, const void*, @@ -221,6 +214,8 @@ class ElecStatePWTest : public ::testing::Test klist = new K_Vectors; klist->set_nks(5); ucell = new UnitCell; + ucell->omega = 500.0; + ucell->tpiba = 2.0; ppcell = new pseudopot_cell_vnl; rhodpw = new ModulePW::PW_Basis; rhopw = new ModulePW::PW_Basis; diff --git a/source/module_esolver/esolver_ks.cpp b/source/module_esolver/esolver_ks.cpp index e644d19e0a..d5d596712b 100644 --- a/source/module_esolver/esolver_ks.cpp +++ b/source/module_esolver/esolver_ks.cpp @@ -108,7 +108,9 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para PARAM.inp.mixing_gg0_mag, PARAM.inp.mixing_gg0_min, PARAM.inp.mixing_angle, - PARAM.inp.mixing_dmr); + PARAM.inp.mixing_dmr, + ucell.omega, + ucell.tpiba); p_chgmix->init_mixing(); /// PAW Section @@ -546,7 +548,8 @@ void ESolver_KS::iter_finish(UnitCell& ucell, const int istep, int& i } // compute magnetization, only for LSDA(spin==2) - ucell.magnet.compute_magnetization(this->pelec->charge->nrxx, + ucell.magnet.compute_magnetization(ucell.omega, + this->pelec->charge->nrxx, this->pelec->charge->nxyz, this->pelec->charge->rho, this->pelec->nelec_spin.data()); @@ -671,7 +674,7 @@ void ESolver_KS::iter_finish(UnitCell& ucell, const int istep, int& i { dkin = p_chgmix->get_dkin(pelec->charge, PARAM.inp.nelec); } - this->pelec->print_etot(this->conv_esolver, iter, drho, dkin, duration, PARAM.inp.printe, diag_ethr); + this->pelec->print_etot(ucell.magnet,this->conv_esolver, iter, drho, dkin, duration, PARAM.inp.printe, diag_ethr); // Json, need to be moved to somewhere else #ifdef __RAPIDJSON diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index 44e8105dc9..65c4c774b1 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -570,7 +570,7 @@ void ESolver_KS_LCAO::iter_init(UnitCell& ucell, const int istep, const } // mohan update 2012-06-05 - this->pelec->f_en.deband_harris = this->pelec->cal_delta_eband(); + this->pelec->f_en.deband_harris = this->pelec->cal_delta_eband(ucell); // mohan move it outside 2011-01-13 // first need to calculate the weight according to @@ -760,7 +760,7 @@ void ESolver_KS_LCAO::hamilt2density_single(UnitCell& ucell, int istep, } // 12) calculate delta energy - this->pelec->f_en.deband = this->pelec->cal_delta_eband(); + this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); } //------------------------------------------------------------------------------ diff --git a/source/module_esolver/esolver_ks_lcao_tddft.cpp b/source/module_esolver/esolver_ks_lcao_tddft.cpp index fc1ba66bc6..6b50347716 100644 --- a/source/module_esolver/esolver_ks_lcao_tddft.cpp +++ b/source/module_esolver/esolver_ks_lcao_tddft.cpp @@ -139,7 +139,7 @@ void ESolver_KS_LCAO_TDDFT::hamilt2density_single(UnitCell& ucell, const int ist } // (7) calculate delta energy - this->pelec->f_en.deband = this->pelec->cal_delta_eband(); + this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); } void ESolver_KS_LCAO_TDDFT::iter_finish(UnitCell& ucell, const int istep, int& iter) diff --git a/source/module_esolver/esolver_ks_lcaopw.cpp b/source/module_esolver/esolver_ks_lcaopw.cpp index 1060a80d29..e79346cd6d 100644 --- a/source/module_esolver/esolver_ks_lcaopw.cpp +++ b/source/module_esolver/esolver_ks_lcaopw.cpp @@ -166,7 +166,7 @@ namespace ModuleESolver // deband is calculated from "output" charge density calculated // in sum_band // need 'rho(out)' and 'vr (v_h(in) and v_xc(in))' - this->pelec->f_en.deband = this->pelec->cal_delta_eband(); + this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); ModuleBase::timer::tick("ESolver_KS_LIP", "hamilt2density_single"); } diff --git a/source/module_esolver/esolver_ks_pw.cpp b/source/module_esolver/esolver_ks_pw.cpp index 385cf27621..5248bcce0b 100644 --- a/source/module_esolver/esolver_ks_pw.cpp +++ b/source/module_esolver/esolver_ks_pw.cpp @@ -307,7 +307,7 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) elecstate::cal_ux(ucell); //! calculate the total local pseudopotential in real space - this->pelec->init_scf(istep, this->sf.strucFac, this->ppcell.numeric, ucell.symm, (void*)this->pw_wfc); + this->pelec->init_scf(istep, ucell,this->sf.strucFac, this->ppcell.numeric, ucell.symm, (void*)this->pw_wfc); //! output the initial charge density if (PARAM.inp.out_chg[0] == 2) @@ -481,7 +481,7 @@ void ESolver_KS_PW::iter_init(UnitCell& ucell, const int istep, const } // mohan move harris functional to here, 2012-06-05 // use 'rho(in)' and 'v_h and v_xc'(in) - this->pelec->f_en.deband_harris = this->pelec->cal_delta_eband(); + this->pelec->f_en.deband_harris = this->pelec->cal_delta_eband(ucell); // update local occupations for DFT+U // should before lambda loop in DeltaSpin @@ -576,7 +576,7 @@ void ESolver_KS_PW::hamilt2density_single(UnitCell& ucell, // deband is calculated from "output" charge density calculated // in sum_band // need 'rho(out)' and 'vr (v_h(in) and v_xc(in))' - this->pelec->f_en.deband = this->pelec->cal_delta_eband(); + this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); ModuleBase::timer::tick("ESolver_KS_PW", "hamilt2density_single"); } diff --git a/source/module_esolver/esolver_of.cpp b/source/module_esolver/esolver_of.cpp index bdb24829e4..7abb63553b 100644 --- a/source/module_esolver/esolver_of.cpp +++ b/source/module_esolver/esolver_of.cpp @@ -120,7 +120,7 @@ void ESolver_OF::before_all_runners(UnitCell& ucell, const Input_para& inp) this->init_elecstate(ucell); // calculate the total local pseudopotential in real space - this->pelec->init_scf(0, sf.strucFac, locpp.numeric, ucell.symm); // atomic_rho, v_of_rho, set_vrs + this->pelec->init_scf(0, ucell,sf.strucFac, locpp.numeric, ucell.symm); // atomic_rho, v_of_rho, set_vrs // liuyu move here 2023-10-09 // D in uspp need vloc, thus behind init_scf() @@ -258,7 +258,7 @@ void ESolver_OF::before_opt(const int istep, UnitCell& ucell) GlobalV::ofs_warning); } - this->pelec->init_scf(istep, sf.strucFac, locpp.numeric, ucell.symm); + this->pelec->init_scf(istep,ucell, sf.strucFac, locpp.numeric, ucell.symm); // calculate ewald energy this->pelec->f_en.ewald_energy = H_Ewald_pw::compute_ewald(ucell, this->pw_rho, sf.strucFac); diff --git a/source/module_esolver/esolver_sdft_pw.cpp b/source/module_esolver/esolver_sdft_pw.cpp index abeda884b1..ab9141fcb5 100644 --- a/source/module_esolver/esolver_sdft_pw.cpp +++ b/source/module_esolver/esolver_sdft_pw.cpp @@ -198,7 +198,7 @@ void ESolver_SDFT_PW::hamilt2density_single(UnitCell& ucell, int iste { srho.begin(is, *(this->pelec->charge), this->pw_rho, ucell.symm); } - this->pelec->f_en.deband = this->pelec->cal_delta_eband(); + this->pelec->f_en.deband = this->pelec->cal_delta_eband(ucell); } else { diff --git a/source/module_esolver/lcao_before_scf.cpp b/source/module_esolver/lcao_before_scf.cpp index 9eef0aafce..6ce0994d44 100644 --- a/source/module_esolver/lcao_before_scf.cpp +++ b/source/module_esolver/lcao_before_scf.cpp @@ -260,7 +260,7 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) } #endif // __EXX - this->pelec->init_scf(istep, this->sf.strucFac, this->ppcell.numeric, ucell.symm); + this->pelec->init_scf(istep, ucell,this->sf.strucFac, this->ppcell.numeric, ucell.symm); //! output the initial charge density if (PARAM.inp.out_chg[0] == 2) diff --git a/source/module_esolver/lcao_others.cpp b/source/module_esolver/lcao_others.cpp index 55ee33c593..a14e9e203d 100644 --- a/source/module_esolver/lcao_others.cpp +++ b/source/module_esolver/lcao_others.cpp @@ -249,7 +249,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) elecstate::cal_ux(ucell); // pelec should be initialized before these calculations - this->pelec->init_scf(istep, this->sf.strucFac, this->ppcell.numeric, ucell.symm); + this->pelec->init_scf(istep, ucell,this->sf.strucFac, this->ppcell.numeric, ucell.symm); // self consistent calculations for electronic ground state if (cal_type == "get_pchg") { diff --git a/source/module_hsolver/test/hsolver_supplementary_mock.h b/source/module_hsolver/test/hsolver_supplementary_mock.h index 2ee381ad48..3ec0817825 100644 --- a/source/module_hsolver/test/hsolver_supplementary_mock.h +++ b/source/module_hsolver/test/hsolver_supplementary_mock.h @@ -43,6 +43,7 @@ void ElecState::print_eigenvalue(std::ofstream& ofs) } void ElecState::init_scf(const int istep, + const UnitCell& ucell, const ModuleBase::ComplexMatrix& strucfac, const bool*, ModuleSymmetry::Symmetry&, diff --git a/source/module_rdmft/rdmft.cpp b/source/module_rdmft/rdmft.cpp index a37be99626..3649c0fa26 100644 --- a/source/module_rdmft/rdmft.cpp +++ b/source/module_rdmft/rdmft.cpp @@ -343,7 +343,7 @@ void RDMFT::cal_Energy(const int cal_type) } else { - this->pelec->f_en.deband = this->pelec->cal_delta_eband(); + this->pelec->f_en.deband = this->pelec->cal_delta_eband(*ucell); E_descf = pelec->f_en.descf = 0.0; this->pelec->cal_energies(2); Etotal = this->pelec->f_en.etot; From 72bd505824c07610f0f60fb3b96149f324676d1e Mon Sep 17 00:00:00 2001 From: Haozhi Han Date: Mon, 16 Dec 2024 20:05:48 +0800 Subject: [PATCH 06/44] Feature: add smooth ethr for all iter methods (#5732) * update input parameter * add smooth ethr for all methods * fix integrated_test * Update input-main.md --- docs/advanced/input_files/input-main.md | 7 ++++ source/module_hsolver/hsolver_pw.cpp | 32 +++++++++---------- source/module_hsolver/hsolver_pw.h | 2 +- .../module_io/read_input_item_elec_stru.cpp | 6 ++++ source/module_io/test/read_input_ptest.cpp | 1 + source/module_io/test/support/INPUT | 1 + source/module_parameter/input_parameter.h | 1 + tests/integrate/104_PW_NC_magnetic/INPUT | 1 + tests/integrate/140_PW_15_SO/INPUT | 1 + tests/integrate/160_PW_DJ_PK_PU_SO/INPUT | 1 + 10 files changed, 35 insertions(+), 18 deletions(-) diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 2b5d1009af..a2b137e8a4 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -37,6 +37,7 @@ - [ndx, ndy, ndz](#ndx-ndy-ndz) - [pw\_seed](#pw_seed) - [pw\_diag\_thr](#pw_diag_thr) + - [diago\_smooth\_ethr](#diago_smooth_ethr) - [pw\_diag\_nmax](#pw_diag_nmax) - [pw\_diag\_ndim](#pw_diag_ndim) - [erf\_ecut](#erf_ecut) @@ -777,6 +778,12 @@ These variables are used to control the plane wave related parameters. - **Description**: Only used when you use `ks_solver = cg/dav/dav_subspace/bpcg`. It indicates the threshold for the first electronic iteration, from the second iteration the pw_diag_thr will be updated automatically. **For nscf calculations with planewave basis set, pw_diag_thr should be <= 1e-3.** - **Default**: 0.01 +### diago_smooth_ethr + +- **Type**: bool +- **Description**: If `TRUE`, the smooth threshold strategy, which applies a larger threshold (10e-5) for the empty states, will be implemented in the diagonalization methods. (This strategy should not affect total energy, forces, and other ground-state properties, but computational efficiency will be improved.) If `FALSE`, the smooth threshold strategy will not be applied. +- **Default**: false + ### pw_diag_nmax - **Type**: Integer diff --git a/source/module_hsolver/hsolver_pw.cpp b/source/module_hsolver/hsolver_pw.cpp index 83ef0ed833..1a8e7292f6 100644 --- a/source/module_hsolver/hsolver_pw.cpp +++ b/source/module_hsolver/hsolver_pw.cpp @@ -28,8 +28,7 @@ namespace hsolver #ifdef USE_PAW template -void HSolverPW::paw_func_in_kloop(const int ik, - const double tpiba) +void HSolverPW::paw_func_in_kloop(const int ik, const double tpiba) { if (this->use_paw) { @@ -97,7 +96,7 @@ void HSolverPW::call_paw_cell_set_currentk(const int ik) } template -void HSolverPW::paw_func_after_kloop(psi::Psi& psi, +void HSolverPW::paw_func_after_kloop(psi::Psi& psi, elecstate::ElecState* pes, const double tpiba, const int nat) @@ -211,10 +210,10 @@ void HSolverPW::paw_func_after_kloop(psi::Psi& psi, #endif template -void HSolverPW::cal_ethr_band(const double& wk, - const double* wg, - const double& ethr, - std::vector& ethrs) +void HSolverPW::cal_smooth_ethr(const double& wk, + const double* wg, + const double& ethr, + std::vector& ethrs) { // threshold for classifying occupied and unoccupied bands const double occ_threshold = 1e-2; @@ -288,7 +287,7 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, pHamilt->updateHk(ik); #ifdef USE_PAW - this->paw_func_in_kloop(ik,tpiba); + this->paw_func_in_kloop(ik, tpiba); #endif /// update psi pointer for each k point @@ -297,14 +296,13 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, // template add precondition calculating here update_precondition(precondition, ik, this->wfc_basis->npwk[ik], Real(pes->pot->get_vl_of_0())); - // only dav_subspace method used smooth threshold for all bands now, - // for other methods, this trick can be added in the future to accelerate calculation without accuracy loss. - if (this->method == "dav_subspace") + // use smooth threshold for all iter methods + if (PARAM.inp.diago_smooth_ethr == true) { - this->cal_ethr_band(pes->klist->wk[ik], - &pes->wg(ik, 0), - DiagoIterAssist::PW_DIAG_THR, - ethr_band); + this->cal_smooth_ethr(pes->klist->wk[ik], + &pes->wg(ik, 0), + DiagoIterAssist::PW_DIAG_THR, + ethr_band); } #ifdef USE_PAW @@ -347,7 +345,7 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, reinterpret_cast*>(pes)->psiToRho(psi); #ifdef USE_PAW - this->paw_func_after_kloop(psi, pes,tpiba,nat); + this->paw_func_after_kloop(psi, pes, tpiba, nat); #endif ModuleBase::timer::tick("HSolverPW", "solve"); @@ -473,7 +471,7 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, } else if (this->method == "bpcg") { - const int nband = psi.get_nbands(); + const int nband = psi.get_nbands(); const int nbasis = psi.get_nbasis(); auto ngk_pointer = psi.get_ngk_pointer(); // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec diff --git a/source/module_hsolver/hsolver_pw.h b/source/module_hsolver/hsolver_pw.h index 49d8b2806e..97b8143eba 100644 --- a/source/module_hsolver/hsolver_pw.h +++ b/source/module_hsolver/hsolver_pw.h @@ -88,7 +88,7 @@ class HSolverPW private: /// @brief calculate the threshold for iterative-diagonalization for each band - void cal_ethr_band(const double& wk, const double* wg, const double& ethr, std::vector& ethrs); + void cal_smooth_ethr(const double& wk, const double* wg, const double& ethr, std::vector& ethrs); #ifdef USE_PAW void paw_func_in_kloop(const int ik, diff --git a/source/module_io/read_input_item_elec_stru.cpp b/source/module_io/read_input_item_elec_stru.cpp index 75026089c8..089f842de5 100644 --- a/source/module_io/read_input_item_elec_stru.cpp +++ b/source/module_io/read_input_item_elec_stru.cpp @@ -314,6 +314,12 @@ void ReadInput::item_elec_stru() }; this->add_item(item); } + { + Input_Item item("diago_smooth_ethr"); + item.annotation = "smooth ethr for iter methods"; + read_sync_bool(input.diago_smooth_ethr); + this->add_item(item); + } { Input_Item item("pw_diag_ndim"); item.annotation = "dimension of workspace for Davidson diagonalization"; diff --git a/source/module_io/test/read_input_ptest.cpp b/source/module_io/test/read_input_ptest.cpp index 33608f6569..11acb41f43 100644 --- a/source/module_io/test/read_input_ptest.cpp +++ b/source/module_io/test/read_input_ptest.cpp @@ -154,6 +154,7 @@ TEST_F(InputParaTest, ParaRead) EXPECT_EQ(param.inp.diago_cg_prec, 1); EXPECT_EQ(param.inp.pw_diag_ndim, 4); EXPECT_DOUBLE_EQ(param.inp.pw_diag_thr, 1.0e-2); + EXPECT_FALSE(param.inp.diago_smooth_ethr); EXPECT_EQ(param.inp.nb2d, 0); EXPECT_EQ(param.inp.nurse, 0); EXPECT_EQ(param.inp.t_in_h, 1); diff --git a/source/module_io/test/support/INPUT b/source/module_io/test/support/INPUT index 580a6ae803..944e46ca2f 100644 --- a/source/module_io/test/support/INPUT +++ b/source/module_io/test/support/INPUT @@ -50,6 +50,7 @@ erf_height 20 #the height of the energy step for reciprocal erf_sigma 4 #the width of the energy step for reciprocal vectors fft_mode 0 #mode of FFTW pw_diag_thr 0.01 #threshold for eigenvalues is cg electron iterations +diago_smooth_ethr false #smooth ethr for iter methods scf_thr 1e-08 #charge density error scf_ene_thr 1e-06 #total energy error threshold scf_os_stop 1 #whether to stop scf when oscillation is detected diff --git a/source/module_parameter/input_parameter.h b/source/module_parameter/input_parameter.h index fe86fbfefc..9b2151c945 100644 --- a/source/module_parameter/input_parameter.h +++ b/source/module_parameter/input_parameter.h @@ -86,6 +86,7 @@ struct Input_para int nspin = 1; ///< LDA ; LSDA ; non-linear spin int pw_diag_nmax = 50; double pw_diag_thr = 0.01; ///< used in cg method + bool diago_smooth_ethr = false; ///< smooth ethr for iter methods int pw_diag_ndim = 4; ///< dimension of workspace for Davidson diagonalization int diago_cg_prec = 1; ///< mohan add 2012-03-31 diff --git a/tests/integrate/104_PW_NC_magnetic/INPUT b/tests/integrate/104_PW_NC_magnetic/INPUT index d761feb2c1..c01847313f 100644 --- a/tests/integrate/104_PW_NC_magnetic/INPUT +++ b/tests/integrate/104_PW_NC_magnetic/INPUT @@ -22,6 +22,7 @@ mixing_beta 0.2 mixing_ndim 10 ks_solver dav_subspace +diago_smooth_ethr true pw_diag_ndim 2 basis_type pw symmetry 0 diff --git a/tests/integrate/140_PW_15_SO/INPUT b/tests/integrate/140_PW_15_SO/INPUT index 1c58840435..5df7c5728d 100644 --- a/tests/integrate/140_PW_15_SO/INPUT +++ b/tests/integrate/140_PW_15_SO/INPUT @@ -34,6 +34,7 @@ lspinorb 1 basis_type pw ks_solver dav_subspace +diago_smooth_ethr true pw_diag_ndim 2 chg_extrap second-order out_dm 0 diff --git a/tests/integrate/160_PW_DJ_PK_PU_SO/INPUT b/tests/integrate/160_PW_DJ_PK_PU_SO/INPUT index 8e4f45ab0e..3b28a05ff4 100644 --- a/tests/integrate/160_PW_DJ_PK_PU_SO/INPUT +++ b/tests/integrate/160_PW_DJ_PK_PU_SO/INPUT @@ -27,6 +27,7 @@ mixing_dmr 1 mixing_gg0 1.1 ks_solver dav_subspace +diago_smooth_ethr true pw_diag_ndim 2 basis_type pw gamma_only 0 From c1cb6acd1e00db83e974a0e7bcbef0919ec79ffc Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Mon, 16 Dec 2024 20:09:50 +0800 Subject: [PATCH 07/44] Refactor: remove GlobalC::solvent_model (#5735) * Refactor: remove GlobalC::solvent_model * Test: update unittests * [pre-commit.ci lite] apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- .../elecstate_energy_terms.cpp | 4 +- source/module_elecstate/potentials/efield.cpp | 4 +- source/module_elecstate/potentials/efield.h | 17 ++-- .../potentials/potential_new.cpp | 4 +- .../potentials/potential_new.h | 7 +- .../potentials/potential_types.cpp | 4 +- .../test/potential_new_test.cpp | 94 +++++++++++-------- source/module_esolver/esolver_fp.cpp | 3 +- source/module_esolver/esolver_fp.h | 4 + source/module_esolver/esolver_ks_lcao.cpp | 4 + source/module_esolver/esolver_ks_lcaopw.cpp | 1 + source/module_esolver/esolver_ks_pw.cpp | 2 + source/module_esolver/esolver_of.cpp | 2 +- source/module_esolver/esolver_of_tool.cpp | 1 + .../module_surchem/cal_totn.cpp | 2 +- .../module_surchem/cal_vcav.cpp | 4 +- .../module_surchem/sol_force.cpp | 43 ++++----- .../module_surchem/surchem.cpp | 6 +- .../module_surchem/surchem.h | 19 ++-- .../module_surchem/test/setcell.h | 1 + .../hamilt_lcaodft/FORCE_STRESS.cpp | 3 +- .../hamilt_lcaodft/FORCE_STRESS.h | 1 + .../module_hamilt_pw/hamilt_pwdft/forces.cpp | 3 +- source/module_hamilt_pw/hamilt_pwdft/forces.h | 1 + .../hamilt_pwdft/forces_cc.cpp | 3 +- source/module_io/write_eband_terms.hpp | 73 +++++++++----- source/module_io/write_elecstat_pot.cpp | 7 +- source/module_io/write_elecstat_pot.h | 9 +- source/module_io/write_vxc.hpp | 41 ++++---- source/module_io/write_vxc_lip.hpp | 33 ++++--- 30 files changed, 240 insertions(+), 160 deletions(-) diff --git a/source/module_elecstate/elecstate_energy_terms.cpp b/source/module_elecstate/elecstate_energy_terms.cpp index d820ba064e..535e9c83a3 100644 --- a/source/module_elecstate/elecstate_energy_terms.cpp +++ b/source/module_elecstate/elecstate_energy_terms.cpp @@ -26,12 +26,12 @@ double ElecState::get_etot_gatefield() double ElecState::get_solvent_model_Ael() { - return GlobalC::solvent_model.Ael; + return surchem::Ael; } double ElecState::get_solvent_model_Acav() { - return GlobalC::solvent_model.Acav; + return surchem::Acav; } double ElecState::get_dftu_energy() diff --git a/source/module_elecstate/potentials/efield.cpp b/source/module_elecstate/potentials/efield.cpp index 0297015095..ed602d5405 100644 --- a/source/module_elecstate/potentials/efield.cpp +++ b/source/module_elecstate/potentials/efield.cpp @@ -34,7 +34,7 @@ ModuleBase::matrix Efield::add_efield(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, const int& nspin, const double* const* const rho, - surchem& solvent) + const surchem& solvent) { ModuleBase::TITLE("Efield", "add_efield"); ModuleBase::timer::tick("Efield", "add_efield"); @@ -202,7 +202,7 @@ double Efield::cal_elec_dipole(const UnitCell& cell, double Efield::cal_induced_dipole(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, - surchem& solvent, + const surchem& solvent, const double& bmod) { double induced_dipole = 0; diff --git a/source/module_elecstate/potentials/efield.h b/source/module_elecstate/potentials/efield.h index 79a4860b03..14db473155 100644 --- a/source/module_elecstate/potentials/efield.h +++ b/source/module_elecstate/potentials/efield.h @@ -1,9 +1,10 @@ #ifndef EFIELD_H #define EFIELD_H -#include "module_cell/unitcell.h" #include "module_basis/module_pw/pw_basis.h" +#include "module_cell/unitcell.h" #include "module_hamilt_general/module_surchem/surchem.h" +#include "module_parameter/parameter.h" namespace elecstate { @@ -17,7 +18,7 @@ class Efield const ModulePW::PW_Basis* rho_basis, const int& nspin, const double* const* const rho, - surchem& solvent); + const surchem& solvent); static double cal_elec_dipole(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, @@ -29,7 +30,7 @@ class Efield static double cal_induced_dipole(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, - surchem& solvent, + const surchem& solvent, const double& bmod); static double saw_function(const double &a, const double &b, const double &x); @@ -59,7 +60,8 @@ namespace elecstate class PotEfield : public PotBase { public: - PotEfield(const ModulePW::PW_Basis* rho_basis_in, const UnitCell* ucell_in, bool dipole) : ucell_(ucell_in) + PotEfield(const ModulePW::PW_Basis* rho_basis_in, const UnitCell* ucell_in, const surchem* solvent_in, bool dipole) + : ucell_(ucell_in), solvent_(solvent_in) { this->rho_basis_ = rho_basis_in; if (!dipole) @@ -81,7 +83,7 @@ class PotEfield : public PotBase const_cast(rho_basis_), PARAM.inp.nspin, nullptr, - GlobalC::solvent_model); + *solvent_); for (int ir = 0; ir < rho_basis_->nrxx; ++ir) { vl_pseudo[ir] += v_efield(0, ir); @@ -94,11 +96,12 @@ class PotEfield : public PotBase const_cast(rho_basis_), v_eff.nr, chg->rho, - GlobalC::solvent_model); + *solvent_); } private: - const UnitCell *ucell_ = nullptr; + const UnitCell* ucell_ = nullptr; + const surchem* solvent_ = nullptr; }; } // namespace elecstate diff --git a/source/module_elecstate/potentials/potential_new.cpp b/source/module_elecstate/potentials/potential_new.cpp index 48b90f65b4..a4443c46d8 100644 --- a/source/module_elecstate/potentials/potential_new.cpp +++ b/source/module_elecstate/potentials/potential_new.cpp @@ -23,9 +23,11 @@ Potential::Potential(const ModulePW::PW_Basis* rho_basis_in, const UnitCell* ucell_in, const ModuleBase::matrix* vloc_in, Structure_Factor* structure_factors_in, + surchem* solvent_in, double* etxc_in, double* vtxc_in) - : ucell_(ucell_in), vloc_(vloc_in), structure_factors_(structure_factors_in), etxc_(etxc_in), vtxc_(vtxc_in) + : ucell_(ucell_in), vloc_(vloc_in), structure_factors_(structure_factors_in), solvent_(solvent_in), etxc_(etxc_in), + vtxc_(vtxc_in) { this->rho_basis_ = rho_basis_in; this->rho_basis_smooth_ = rho_basis_smooth_in; diff --git a/source/module_elecstate/potentials/potential_new.h b/source/module_elecstate/potentials/potential_new.h index d1f8e41f78..fd6e087534 100644 --- a/source/module_elecstate/potentials/potential_new.h +++ b/source/module_elecstate/potentials/potential_new.h @@ -1,13 +1,14 @@ #ifndef POTENTIALNEW_H #define POTENTIALNEW_H -#include - #include "module_base/complexmatrix.h" +#include "module_hamilt_general/module_surchem/surchem.h" #include "module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/structure_factor.h" #include "pot_base.h" +#include + namespace elecstate { /** @@ -58,6 +59,7 @@ class Potential : public PotBase const UnitCell* ucell_in, const ModuleBase::matrix* vloc_in, Structure_Factor* structure_factors_in, + surchem* solvent_in, double* etxc_in, double* vtxc_in); ~Potential(); @@ -211,6 +213,7 @@ class Potential : public PotBase const UnitCell* ucell_ = nullptr; const ModuleBase::matrix* vloc_ = nullptr; Structure_Factor* structure_factors_ = nullptr; + surchem* solvent_ = nullptr; }; } // namespace elecstate diff --git a/source/module_elecstate/potentials/potential_types.cpp b/source/module_elecstate/potentials/potential_types.cpp index bc15110798..7ca1bacc8a 100644 --- a/source/module_elecstate/potentials/potential_types.cpp +++ b/source/module_elecstate/potentials/potential_types.cpp @@ -47,11 +47,11 @@ PotBase* Potential::get_pot_type(const std::string& pot_type) return new PotSurChem(this->rho_basis_, this->structure_factors_, this->v_effective_fixed.data(), - &GlobalC::solvent_model); + this->solvent_); } else if (pot_type == "efield") { - return new PotEfield(this->rho_basis_, this->ucell_, PARAM.inp.dip_cor_flag); + return new PotEfield(this->rho_basis_, this->ucell_, this->solvent_, PARAM.inp.dip_cor_flag); } else if (pot_type == "gatefield") { diff --git a/source/module_elecstate/test/potential_new_test.cpp b/source/module_elecstate/test/potential_new_test.cpp index b38361d76f..7115886bff 100644 --- a/source/module_elecstate/test/potential_new_test.cpp +++ b/source/module_elecstate/test/potential_new_test.cpp @@ -38,6 +38,12 @@ Charge::Charge() Charge::~Charge() { } +surchem::surchem() +{ +} +surchem::~surchem() +{ +} namespace elecstate { @@ -101,6 +107,7 @@ class PotentialNewTest : public ::testing::Test UnitCell* ucell = nullptr; ModuleBase::matrix* vloc = nullptr; Structure_Factor* structure_factors = nullptr; + surchem* solvent = nullptr; double* etxc = nullptr; double* vtxc = nullptr; elecstate::Potential* pot = nullptr; @@ -111,43 +118,56 @@ class PotentialNewTest : public ::testing::Test ucell = new UnitCell; vloc = new ModuleBase::matrix; structure_factors = new Structure_Factor(); + solvent = new surchem(); etxc = new double; vtxc = new double; elecstate::Set_GlobalV_Default(); } virtual void TearDown() { - if (rhopw != nullptr) { + if (rhopw != nullptr) + { delete rhopw; -} - if (rhodpw != nullptr) { + } + if (rhodpw != nullptr) + { delete rhodpw; -} - if (ucell != nullptr) { + } + if (ucell != nullptr) + { delete ucell; -} - if (vloc != nullptr) { + } + if (vloc != nullptr) + { delete vloc; -} - if (structure_factors != nullptr) { + } + if (structure_factors != nullptr) + { delete structure_factors; -} - if (etxc != nullptr) { + } + if (solvent != nullptr) + { + delete solvent; + } + if (etxc != nullptr) + { delete etxc; -} - if (vtxc != nullptr) { + } + if (vtxc != nullptr) + { delete vtxc; -} - if (pot != nullptr) { + } + if (pot != nullptr) + { delete pot; -} + } } }; TEST_F(PotentialNewTest, ConstructorCPUDouble) { rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); EXPECT_EQ(pot->v_effective_fixed.size(), 100); @@ -159,7 +179,7 @@ TEST_F(PotentialNewTest, ConstructorCPUSingle) { rhopw->nrxx = 100; PARAM.input.precision = "single"; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); EXPECT_EQ(pot->v_effective_fixed.size(), 100); @@ -170,7 +190,7 @@ TEST_F(PotentialNewTest, ConstructorCPUSingle) TEST_F(PotentialNewTest, ConstructorNRXX0) { rhopw->nrxx = 0; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); } @@ -179,7 +199,7 @@ TEST_F(PotentialNewTest, ConstructorXC3) { elecstate::tmp_xc_func_type = 3; rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); EXPECT_EQ(pot->v_effective_fixed.size(), 100); @@ -194,7 +214,7 @@ TEST_F(PotentialNewTest, ConstructorGPUDouble) // this is just a trivial call to the GPU code rhopw->nrxx = 100; PARAM.input.device = "gpu"; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); EXPECT_EQ(pot->v_effective_fixed.size(), 100); @@ -208,7 +228,7 @@ TEST_F(PotentialNewTest, ConstructorGPUSingle) rhopw->nrxx = 100; PARAM.input.device = "gpu"; PARAM.input.precision = "single"; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); EXPECT_EQ(pot->v_effective_fixed.size(), 100); @@ -251,7 +271,7 @@ TEST_F(PotentialNewTest, CalFixedV) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // std::vector compnents_list = { "local", @@ -279,7 +299,7 @@ TEST_F(PotentialNewTest, CalVeff) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // std::vector compnents_list = { "local", @@ -309,7 +329,7 @@ TEST_F(PotentialNewTest, UpdateFromCharge) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // std::vector compnents_list = { "local", @@ -337,7 +357,7 @@ TEST_F(PotentialNewTest, InitPot) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // std::vector compnents_list = { "local", @@ -365,7 +385,7 @@ TEST_F(PotentialNewTest, GetVnew) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // std::vector compnents_list = { "local", @@ -394,7 +414,7 @@ TEST_F(PotentialNewTest, GetEffectiveVmatrix) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // ModuleBase::matrix v_eff_tmp = pot->get_effective_v(); const ModuleBase::matrix v_eff_tmp_const = pot->get_effective_v(); @@ -416,7 +436,7 @@ TEST_F(PotentialNewTest, GetEffectiveVarray) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // double* v_eff_tmp = pot->get_effective_v(0); const double* v_eff_tmp_const = pot->get_effective_v(0); @@ -445,7 +465,7 @@ TEST_F(PotentialNewTest, GetEffectiveVofkmatrix) // construct potential elecstate::tmp_xc_func_type = 3; rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // ModuleBase::matrix vofk_eff_tmp = pot->get_effective_vofk(); const ModuleBase::matrix vofk_eff_tmp_const = pot->get_effective_vofk(); @@ -467,7 +487,7 @@ TEST_F(PotentialNewTest, GetEffectiveVofkarray) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // double* vofk_eff_tmp = pot->get_effective_vofk(0); const double* vofk_eff_tmp_const = pot->get_effective_vofk(0); @@ -494,7 +514,7 @@ TEST_F(PotentialNewTest, GetEffectiveVofkarrayNullptr) TEST_F(PotentialNewTest, GetFixedV) { rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_TRUE(pot->fixed_mode); EXPECT_TRUE(pot->dynamic_mode); EXPECT_EQ(pot->v_effective_fixed.size(), 100); @@ -513,7 +533,7 @@ TEST_F(PotentialNewTest, GetVeffSmooth) // construct potential rhopw->nrxx = 100; elecstate::tmp_xc_func_type = 3; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // ModuleBase::matrix veff_smooth_tmp = pot->get_veff_smooth(); const ModuleBase::matrix veff_smooth_const_tmp = pot->get_veff_smooth(); @@ -535,7 +555,7 @@ TEST_F(PotentialNewTest, GetVofkSmooth) { // construct potential rhopw->nrxx = 100; - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); // ModuleBase::matrix vofk_smooth_tmp = pot->get_veff_smooth(); const ModuleBase::matrix vofk_smooth_const_tmp = pot->get_veff_smooth(); @@ -568,7 +588,7 @@ TEST_F(PotentialNewTest, InterpolateVrsDoubleGrids) static_cast(rhodpw)->setuptransform(rhopw); rhodpw->collect_local_pw(); - pot = new elecstate::Potential(rhodpw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhodpw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); for (int ir = 0; ir < pot->v_effective.nr; ir++) { @@ -613,7 +633,7 @@ TEST_F(PotentialNewTest, InterpolateVrsWarningQuit) rhodpw->collect_local_pw(); rhodpw->gamma_only = true; - pot = new elecstate::Potential(rhodpw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhodpw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); EXPECT_EXIT(pot->interpolate_vrs(), ::testing::ExitedWithCode(1), ""); } @@ -628,7 +648,7 @@ TEST_F(PotentialNewTest, InterpolateVrsSingleGrids) rhopw->setuptransform(); rhopw->collect_local_pw(); - pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, etxc, vtxc); + pot = new elecstate::Potential(rhopw, rhopw, ucell, vloc, structure_factors, solvent, etxc, vtxc); for (int ir = 0; ir < pot->v_effective.nr; ir++) { diff --git a/source/module_esolver/esolver_fp.cpp b/source/module_esolver/esolver_fp.cpp index 94daacd37d..d2c820a45a 100644 --- a/source/module_esolver/esolver_fp.cpp +++ b/source/module_esolver/esolver_fp.cpp @@ -234,7 +234,8 @@ void ESolver_FP::after_scf(UnitCell& ucell, const int istep) this->pw_rhod, this->pelec->charge, &(ucell), - this->pelec->pot->get_fixed_v()); + this->pelec->pot->get_fixed_v(), + this->solvent); } // 5) write ELF diff --git a/source/module_esolver/esolver_fp.h b/source/module_esolver/esolver_fp.h index fc66cb42a4..1f2e6cf1ec 100644 --- a/source/module_esolver/esolver_fp.h +++ b/source/module_esolver/esolver_fp.h @@ -6,6 +6,7 @@ #include "module_cell/module_symmetry/symmetry.h" #include "module_elecstate/elecstate.h" #include "module_elecstate/module_charge/charge_extra.h" +#include "module_hamilt_general/module_surchem/surchem.h" #include "module_hamilt_pw/hamilt_pwdft/structure_factor.h" #include @@ -67,6 +68,9 @@ namespace ModuleESolver //! Charge extrapolation Charge_Extra CE; + + // solvent model + surchem solvent; }; } diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index 65c4c774b1..712617948a 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -214,6 +214,7 @@ void ESolver_KS_LCAO::before_all_runners(UnitCell& ucell, const Input_pa &ucell, &(this->ppcell.vloc), &(this->sf), + &(this->solvent), &(this->pelec->f_en.etxc), &(this->pelec->f_en.vtxc)); } @@ -320,6 +321,7 @@ void ESolver_KS_LCAO::cal_force(UnitCell& ucell, ModuleBase::matrix& for this->sf, this->kv, this->pw_rho, + this->solvent, #ifdef __EXX *this->exx_lri_double, *this->exx_lri_complex, @@ -460,6 +462,7 @@ void ESolver_KS_LCAO::after_all_runners(UnitCell& ucell) *this->psi, ucell, this->sf, + this->solvent, *this->pw_rho, *this->pw_rhod, this->ppcell.vloc, @@ -487,6 +490,7 @@ void ESolver_KS_LCAO::after_all_runners(UnitCell& ucell) *this->psi, ucell, this->sf, + this->solvent, *this->pw_rho, *this->pw_rhod, this->ppcell.vloc, diff --git a/source/module_esolver/esolver_ks_lcaopw.cpp b/source/module_esolver/esolver_ks_lcaopw.cpp index e79346cd6d..6abf05e9d7 100644 --- a/source/module_esolver/esolver_ks_lcaopw.cpp +++ b/source/module_esolver/esolver_ks_lcaopw.cpp @@ -247,6 +247,7 @@ namespace ModuleESolver *this->kspw_psi, ucell, this->sf, + this->solvent, *this->pw_wfc, *this->pw_rho, *this->pw_rhod, diff --git a/source/module_esolver/esolver_ks_pw.cpp b/source/module_esolver/esolver_ks_pw.cpp index 5248bcce0b..2171948312 100644 --- a/source/module_esolver/esolver_ks_pw.cpp +++ b/source/module_esolver/esolver_ks_pw.cpp @@ -181,6 +181,7 @@ void ESolver_KS_PW::before_all_runners(UnitCell& ucell, const Input_p &ucell, &this->ppcell.vloc, &(this->sf), + &(this->solvent), &(this->pelec->f_en.etxc), &(this->pelec->f_en.vtxc)); } @@ -778,6 +779,7 @@ void ESolver_KS_PW::cal_force(UnitCell& ucell, ModuleBase::matrix& fo this->pw_rhod, &ucell.symm, &this->sf, + this->solvent, &this->ppcell, &this->ppcell, &this->kv, diff --git a/source/module_esolver/esolver_of.cpp b/source/module_esolver/esolver_of.cpp index 7abb63553b..ac7d01b558 100644 --- a/source/module_esolver/esolver_of.cpp +++ b/source/module_esolver/esolver_of.cpp @@ -548,7 +548,7 @@ double ESolver_OF::cal_energy() void ESolver_OF::cal_force(UnitCell& ucell, ModuleBase::matrix& force) { Forces ff(ucell.nat); - ff.cal_force(ucell,force, *pelec, this->pw_rho, &ucell.symm, &sf, &this->locpp); + ff.cal_force(ucell, force, *pelec, this->pw_rho, &ucell.symm, &sf, this->solvent, &this->locpp); } /** diff --git a/source/module_esolver/esolver_of_tool.cpp b/source/module_esolver/esolver_of_tool.cpp index 30ff2f5175..750598ab2e 100644 --- a/source/module_esolver/esolver_of_tool.cpp +++ b/source/module_esolver/esolver_of_tool.cpp @@ -30,6 +30,7 @@ void ESolver_OF::init_elecstate(UnitCell& ucell) &ucell, &(this->locpp.vloc), &(this->sf), + &(this->solvent), &(this->pelec->f_en.etxc), &(this->pelec->f_en.vtxc)); // There is no Operator in ESolver_OF, register Potentials here! diff --git a/source/module_hamilt_general/module_surchem/cal_totn.cpp b/source/module_hamilt_general/module_surchem/cal_totn.cpp index 05fe619761..3650a67dfa 100644 --- a/source/module_hamilt_general/module_surchem/cal_totn.cpp +++ b/source/module_hamilt_general/module_surchem/cal_totn.cpp @@ -33,7 +33,7 @@ void surchem::cal_totn(const UnitCell& cell, return; } -void surchem::induced_charge(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, double* induced_rho) +void surchem::induced_charge(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, double* induced_rho) const { std::complex *delta_phig = new complex[rho_basis->npw]; std::complex *induced_rhog = new complex[rho_basis->npw]; diff --git a/source/module_hamilt_general/module_surchem/cal_vcav.cpp b/source/module_hamilt_general/module_surchem/cal_vcav.cpp index 458034e558..3f7e768f4b 100644 --- a/source/module_hamilt_general/module_surchem/cal_vcav.cpp +++ b/source/module_hamilt_general/module_surchem/cal_vcav.cpp @@ -1,5 +1,6 @@ #include "module_base/timer.h" #include "module_hamilt_general/module_xc/xc_functional.h" +#include "module_parameter/parameter.h" #include "surchem.h" void lapl_rho(const double& tpiba2, @@ -25,8 +26,9 @@ void lapl_rho(const double& tpiba2, // bring the gdr from G --> R rho_basis->recip2real(aux, aux); // remember to multily 2pi/a0, which belongs to G vectors. - for (int ir = 0; ir < rho_basis->nrxx; ir++) + for (int ir = 0; ir < rho_basis->nrxx; ir++) { lapn[ir] -= aux[ir].real() * tpiba2; +} } diff --git a/source/module_hamilt_general/module_surchem/sol_force.cpp b/source/module_hamilt_general/module_surchem/sol_force.cpp index 1769f8886d..00c4da4404 100644 --- a/source/module_hamilt_general/module_surchem/sol_force.cpp +++ b/source/module_hamilt_general/module_surchem/sol_force.cpp @@ -2,10 +2,10 @@ #include "module_base/timer.h" #include "module_parameter/parameter.h" -void force_cor_one(const UnitCell& cell, - const ModulePW::PW_Basis* rho_basis, - const ModuleBase::matrix& vloc, - ModuleBase::matrix& forcesol) +void surchem::force_cor_one(const UnitCell& cell, + const ModulePW::PW_Basis* rho_basis, + const ModuleBase::matrix& vloc, + ModuleBase::matrix& forcesol) { @@ -15,10 +15,11 @@ void force_cor_one(const UnitCell& cell, std::complex *delta_phi_g = new complex[rho_basis->npw]; //ModuleBase::GlobalFunc::ZEROS(delta_phi_g, rho_basis->npw); - rho_basis->real2recip(GlobalC::solvent_model.delta_phi, delta_phi_g); - //GlobalC::UFFT.ToReciSpace(GlobalC::solvent_model.delta_phi, delta_phi_g,rho_basis); - double Ael=0;double Ael1 = 0; - //ModuleBase::GlobalFunc::ZEROS(vg, ngmc); + rho_basis->real2recip(this->delta_phi, delta_phi_g); + // GlobalC::UFFT.ToReciSpace(this->delta_phi, delta_phi_g,rho_basis); + // double Ael = 0; + // double Ael1 = 0; + // ModuleBase::GlobalFunc::ZEROS(vg, ngmc); int iat = 0; for (int it = 0;it < cell.ntype;it++) @@ -68,14 +69,14 @@ void force_cor_one(const UnitCell& cell, } -void force_cor_two(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, ModuleBase::matrix& forcesol) +void surchem::force_cor_two(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, ModuleBase::matrix& forcesol) { complex *n_pseudo = new complex[rho_basis->npw]; ModuleBase::GlobalFunc::ZEROS(n_pseudo,rho_basis->npw); - //GlobalC::solvent_model.gauss_charge(cell, pwb, n_pseudo); - + // this->gauss_charge(cell, pwb, n_pseudo); + double *Vcav_sum = new double[rho_basis->nrxx]; ModuleBase::GlobalFunc::ZEROS(Vcav_sum, rho_basis->nrxx); std::complex *Vcav_g = new complex[rho_basis->npw]; @@ -86,18 +87,18 @@ void force_cor_two(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, Mo { for (int ir=0; irnrxx; ir++) { - Vcav_sum[ir] += GlobalC::solvent_model.Vcav(is, ir); - } - } + Vcav_sum[ir] += this->Vcav(is, ir); + } + } rho_basis->real2recip(Vcav_sum, Vcav_g); - rho_basis->real2recip(GlobalC::solvent_model.epspot, Vel_g); + rho_basis->real2recip(this->epspot, Vel_g); int iat = 0; - double Ael1 = 0; + // double Ael1 = 0; for (int it = 0;it < cell.ntype;it++) { - double RCS = GlobalC::solvent_model.GetAtom.atom_RCS[cell.atoms[it].ncpp.psd]; + double RCS = this->GetAtom.atom_RCS[cell.atoms[it].ncpp.psd]; double sigma_rc_k = RCS / 2.5; for (int ia = 0;ia < cell.atoms[it].na;ia++) { @@ -111,10 +112,10 @@ void force_cor_two(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, Mo gg = gg * cell.tpiba2; complex phase = exp( ModuleBase::NEG_IMAG_UNIT *ModuleBase::TWO_PI * ( rho_basis->gcar[ig] * cell.atoms[it].tau[ia])); - n_pseudo[ig].real((GlobalC::solvent_model.GetAtom.atom_Z[cell.atoms[it].ncpp.psd] - cell.atoms[it].ncpp.zv) * phase.real() - * exp(-0.5 * gg * (sigma_rc_k * sigma_rc_k))); - n_pseudo[ig].imag((GlobalC::solvent_model.GetAtom.atom_Z[cell.atoms[it].ncpp.psd] - cell.atoms[it].ncpp.zv) * phase.imag() - * exp(-0.5 * gg * (sigma_rc_k * sigma_rc_k))); + n_pseudo[ig].real((this->GetAtom.atom_Z[cell.atoms[it].ncpp.psd] - cell.atoms[it].ncpp.zv) + * phase.real() * exp(-0.5 * gg * (sigma_rc_k * sigma_rc_k))); + n_pseudo[ig].imag((this->GetAtom.atom_Z[cell.atoms[it].ncpp.psd] - cell.atoms[it].ncpp.zv) + * phase.imag() * exp(-0.5 * gg * (sigma_rc_k * sigma_rc_k))); } for (int ig = 0; ig < rho_basis->npw; ig++) diff --git a/source/module_hamilt_general/module_surchem/surchem.cpp b/source/module_hamilt_general/module_surchem/surchem.cpp index 97acd8de54..9fb3541d9a 100644 --- a/source/module_hamilt_general/module_surchem/surchem.cpp +++ b/source/module_hamilt_general/module_surchem/surchem.cpp @@ -1,9 +1,7 @@ #include "surchem.h" -namespace GlobalC -{ -surchem solvent_model; -} +double surchem::Acav = 0; +double surchem::Ael = 0; surchem::surchem() { diff --git a/source/module_hamilt_general/module_surchem/surchem.h b/source/module_hamilt_general/module_surchem/surchem.h index 60d6b7e62f..091a14ddec 100644 --- a/source/module_hamilt_general/module_surchem/surchem.h +++ b/source/module_hamilt_general/module_surchem/surchem.h @@ -8,7 +8,6 @@ #include "module_base/parallel_reduce.h" #include "module_basis/module_pw/pw_basis.h" #include "module_cell/unitcell.h" -#include "module_hamilt_pw/hamilt_pwdft/global.h" #include "module_hamilt_pw/hamilt_pwdft/structure_factor.h" class surchem @@ -24,8 +23,8 @@ class surchem ModuleBase::matrix Vel; double qs; - double Acav; - double Ael; + static double Acav; + static double Ael; // get atom info atom_in GetAtom; @@ -114,16 +113,18 @@ class surchem const ModuleBase::matrix& vloc, ModuleBase::matrix& forcesol); + void force_cor_one(const UnitCell& cell, + const ModulePW::PW_Basis* rho_basis, + const ModuleBase::matrix& vloc, + ModuleBase::matrix& forcesol); + + void force_cor_two(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, ModuleBase::matrix& forcesol); + void get_totn_reci(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, complex* totn_reci); - void induced_charge(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, double* induced_rho); + void induced_charge(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, double* induced_rho) const; private: }; -namespace GlobalC -{ -extern surchem solvent_model; -} - #endif diff --git a/source/module_hamilt_general/module_surchem/test/setcell.h b/source/module_hamilt_general/module_surchem/test/setcell.h index c6a4545438..5d3ccd8ede 100644 --- a/source/module_hamilt_general/module_surchem/test/setcell.h +++ b/source/module_hamilt_general/module_surchem/test/setcell.h @@ -7,6 +7,7 @@ #include "module_cell/module_neighbor/sltk_atom_arrange.h" #include "module_cell/module_neighbor/sltk_grid_driver.h" #include "module_cell/unitcell.h" +#include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" #include "module_hamilt_pw/hamilt_pwdft/structure_factor.h" namespace GlobalC diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp index edd8def7a8..9620a5f33c 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp @@ -50,6 +50,7 @@ void Force_Stress_LCAO::getForceStress(const bool isforce, const Structure_Factor& sf, const K_Vectors& kv, ModulePW::PW_Basis* rhopw, + surchem& solvent, #ifdef __EXX Exx_LRI& exx_lri_double, Exx_LRI>& exx_lri_complex, @@ -279,7 +280,7 @@ void Force_Stress_LCAO::getForceStress(const bool isforce, if (PARAM.inp.imp_sol && isforce) { fsol.create(nat, 3); - GlobalC::solvent_model.cal_force_sol(ucell, rhopw, nlpp.vloc, fsol); + solvent.cal_force_sol(ucell, rhopw, nlpp.vloc, fsol); } //! atomic forces from DFT+U (Quxin version) diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h index af6446ba7b..c995d57b09 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h @@ -48,6 +48,7 @@ class Force_Stress_LCAO const Structure_Factor& sf, const K_Vectors& kv, ModulePW::PW_Basis* rhopw, + surchem& solvent, #ifdef __EXX Exx_LRI& exx_lri_double, Exx_LRI>& exx_lri_complex, diff --git a/source/module_hamilt_pw/hamilt_pwdft/forces.cpp b/source/module_hamilt_pw/hamilt_pwdft/forces.cpp index dd24ce82c7..372836eaa9 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/forces.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/forces.cpp @@ -30,6 +30,7 @@ void Forces::cal_force(const UnitCell& ucell, ModulePW::PW_Basis* rho_basis, ModuleSymmetry::Symmetry* p_symm, Structure_Factor* p_sf, + surchem& solvent, const pseudopot_cell_vl* locpp, const pseudopot_cell_vnl* p_nlpp, K_Vectors* pkv, @@ -231,7 +232,7 @@ void Forces::cal_force(const UnitCell& ucell, if (PARAM.inp.imp_sol) { forcesol.create(this->nat, 3); - GlobalC::solvent_model.cal_force_sol(ucell, rho_basis, locpp->vloc, forcesol); + solvent.cal_force_sol(ucell, rho_basis, locpp->vloc, forcesol); if (PARAM.inp.test_force) { ModuleIO::print_force(GlobalV::ofs_running, ucell, "IMP_SOL FORCE (Ry/Bohr)", forcesol); diff --git a/source/module_hamilt_pw/hamilt_pwdft/forces.h b/source/module_hamilt_pw/hamilt_pwdft/forces.h index 90b419199d..a01aaa7f02 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/forces.h +++ b/source/module_hamilt_pw/hamilt_pwdft/forces.h @@ -39,6 +39,7 @@ class Forces ModulePW::PW_Basis* rho_basis, ModuleSymmetry::Symmetry* p_symm, Structure_Factor* p_sf, + surchem& solvent, const pseudopot_cell_vl* locpp, const pseudopot_cell_vnl* nlpp = nullptr, K_Vectors* pkv = nullptr, diff --git a/source/module_hamilt_pw/hamilt_pwdft/forces_cc.cpp b/source/module_hamilt_pw/hamilt_pwdft/forces_cc.cpp index 12162d88e4..3346724deb 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/forces_cc.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/forces_cc.cpp @@ -9,12 +9,13 @@ #include "module_base/mathzone.h" #include "module_base/timer.h" #include "module_base/tool_threading.h" +#include "module_elecstate/cal_ux.h" #include "module_elecstate/potentials/efield.h" #include "module_elecstate/potentials/gatefield.h" #include "module_hamilt_general/module_ewald/H_Ewald_pw.h" #include "module_hamilt_general/module_surchem/surchem.h" #include "module_hamilt_general/module_vdw/vdw.h" -#include "module_elecstate/cal_ux.h" +#include "module_hamilt_general/module_xc/xc_functional.h" #ifdef _OPENMP #include diff --git a/source/module_io/write_eband_terms.hpp b/source/module_io/write_eband_terms.hpp index 41f0a42112..eff46a20b9 100644 --- a/source/module_io/write_eband_terms.hpp +++ b/source/module_io/write_eband_terms.hpp @@ -6,30 +6,32 @@ #include "module_basis/module_nao/two_center_bundle.h" namespace ModuleIO { - template - void write_eband_terms(const int nspin, - const int nbasis, - const int drank, - const Parallel_Orbitals* pv, - const psi::Psi& psi, - const UnitCell& ucell, - Structure_Factor& sf, - const ModulePW::PW_Basis& rho_basis, - const ModulePW::PW_Basis& rhod_basis, - const ModuleBase::matrix& vloc, - const Charge& chg, - Gint_Gamma& gint_gamma, // mohan add 2024-04-01 - Gint_k& gint_k, // mohan add 2024-04-01 - const K_Vectors& kv, - const ModuleBase::matrix& wg, - Grid_Driver& gd, - const std::vector& orb_cutoff, - const TwoCenterBundle& two_center_bundle +template +void write_eband_terms(const int nspin, + const int nbasis, + const int drank, + const Parallel_Orbitals* pv, + const psi::Psi& psi, + const UnitCell& ucell, + Structure_Factor& sf, + surchem& solvent, + const ModulePW::PW_Basis& rho_basis, + const ModulePW::PW_Basis& rhod_basis, + const ModuleBase::matrix& vloc, + const Charge& chg, + Gint_Gamma& gint_gamma, // mohan add 2024-04-01 + Gint_k& gint_k, // mohan add 2024-04-01 + const K_Vectors& kv, + const ModuleBase::matrix& wg, + Grid_Driver& gd, + const std::vector& orb_cutoff, + const TwoCenterBundle& two_center_bundle #ifdef __EXX - , std::vector>>>* Hexxd = nullptr - , std::vector>>>>* Hexxc = nullptr + , + std::vector>>>* Hexxd = nullptr, + std::vector>>>>* Hexxc = nullptr #endif - ) +) { // 0. prepare const int& nbands = wg.nc; @@ -80,7 +82,7 @@ namespace ModuleIO // 2. pp: local if (PARAM.inp.vl_in_h) { - elecstate::Potential pot_local(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &etxc, &vtxc); + elecstate::Potential pot_local(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &solvent, &etxc, &vtxc); pot_local.pot_register({ "local" }); pot_local.update_from_charge(&chg, &ucell); hamilt::HS_Matrix_K v_pp_local_k_ao(pv, 1); @@ -128,7 +130,7 @@ namespace ModuleIO // 4. hartree if (PARAM.inp.vh_in_h) { - elecstate::Potential pot_hartree(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &etxc, &vtxc); + elecstate::Potential pot_hartree(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &solvent, &etxc, &vtxc); pot_hartree.pot_register({ "hartree" }); pot_hartree.update_from_charge(&chg, &ucell); std::vector> v_hartree_R_ao(nspin0, hamilt::HContainer(pv)); @@ -164,9 +166,28 @@ namespace ModuleIO // 5. xc (including exx) if (!PARAM.inp.out_mat_xc) // avoid duplicate output { - write_Vxc(nspin, nbasis, drank, pv, psi, ucell, sf, rho_basis, rhod_basis, vloc, chg, gint_gamma, gint_k, kv, orb_cutoff, wg, gd + write_Vxc(nspin, + nbasis, + drank, + pv, + psi, + ucell, + sf, + solvent, + rho_basis, + rhod_basis, + vloc, + chg, + gint_gamma, + gint_k, + kv, + orb_cutoff, + wg, + gd #ifdef __EXX - , Hexxd, Hexxc + , + Hexxd, + Hexxc #endif ); } diff --git a/source/module_io/write_elecstat_pot.cpp b/source/module_io/write_elecstat_pot.cpp index f4561bb606..6f9fb42a57 100644 --- a/source/module_io/write_elecstat_pot.cpp +++ b/source/module_io/write_elecstat_pot.cpp @@ -21,7 +21,8 @@ void write_elecstat_pot( ModulePW::PW_Basis* rho_basis, const Charge* const chr, const UnitCell* ucell, - const double* v_eff) + const double* v_eff, + const surchem& solvent) { ModuleBase::TITLE("ModuleIO", "write_elecstat_pot"); ModuleBase::timer::tick("ModuleIO", "write_elecstat_pot"); @@ -50,7 +51,7 @@ void write_elecstat_pot( const_cast(rho_basis), nspin, chr->rho, - GlobalC::solvent_model); + solvent); } //========================================== @@ -67,7 +68,7 @@ void write_elecstat_pot( } if(imp_sol == true) { - v_elecstat[ir] += GlobalC::solvent_model.delta_phi[ir]; + v_elecstat[ir] += solvent.delta_phi[ir]; } } diff --git a/source/module_io/write_elecstat_pot.h b/source/module_io/write_elecstat_pot.h index 14640d9e43..19541ee22f 100644 --- a/source/module_io/write_elecstat_pot.h +++ b/source/module_io/write_elecstat_pot.h @@ -1,9 +1,11 @@ #ifndef POTENTIAL_IO_H #define POTENTIAL_IO_H -#include -#include "module_cell/unitcell.h" #include "module_basis/module_pw/pw_basis.h" +#include "module_cell/unitcell.h" #include "module_elecstate/module_charge/charge.h" +#include "module_hamilt_general/module_surchem/surchem.h" + +#include namespace ModuleIO { @@ -27,7 +29,8 @@ void write_elecstat_pot( ModulePW::PW_Basis* rho_basis, const Charge* const chr, const UnitCell* ucell_, - const double* v_effective_fixed); + const double* v_effective_fixed, + const surchem& solvent); } // namespace ModuleIO diff --git a/source/module_io/write_vxc.hpp b/source/module_io/write_vxc.hpp index fcd03e07a3..fa9da0ec62 100644 --- a/source/module_io/write_vxc.hpp +++ b/source/module_io/write_vxc.hpp @@ -182,25 +182,27 @@ inline void write_orb_energy(const K_Vectors& kv, /// including terms: local/semi-local XC, EXX, DFTU template void write_Vxc(const int nspin, - const int nbasis, - const int drank, - const Parallel_Orbitals* pv, - const psi::Psi& psi, - const UnitCell& ucell, - Structure_Factor& sf, - const ModulePW::PW_Basis& rho_basis, - const ModulePW::PW_Basis& rhod_basis, - const ModuleBase::matrix& vloc, - const Charge& chg, - Gint_Gamma& gint_gamma, // mohan add 2024-04-01 - Gint_k& gint_k, // mohan add 2024-04-01 - const K_Vectors& kv, - const std::vector& orb_cutoff, - const ModuleBase::matrix& wg, - Grid_Driver& gd + const int nbasis, + const int drank, + const Parallel_Orbitals* pv, + const psi::Psi& psi, + const UnitCell& ucell, + Structure_Factor& sf, + surchem& solvent, + const ModulePW::PW_Basis& rho_basis, + const ModulePW::PW_Basis& rhod_basis, + const ModuleBase::matrix& vloc, + const Charge& chg, + Gint_Gamma& gint_gamma, // mohan add 2024-04-01 + Gint_k& gint_k, // mohan add 2024-04-01 + const K_Vectors& kv, + const std::vector& orb_cutoff, + const ModuleBase::matrix& wg, + Grid_Driver& gd #ifdef __EXX - , std::vector>>>* Hexxd = nullptr - , std::vector>>>>* Hexxc = nullptr + , + std::vector>>>* Hexxd = nullptr, + std::vector>>>>* Hexxc = nullptr #endif ) { @@ -212,7 +214,8 @@ void write_Vxc(const int nspin, double vtxc = 0.0; // elecstate::PotXC* potxc(&rho_basis, &etxc, vtxc, nullptr); // potxc.cal_v_eff(&chg, &ucell, vr_xc); - elecstate::Potential* potxc = new elecstate::Potential(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &etxc, &vtxc); + elecstate::Potential* potxc + = new elecstate::Potential(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &solvent, &etxc, &vtxc); std::vector compnents_list = {"xc"}; potxc->pot_register(compnents_list); potxc->update_from_charge(&chg, &ucell); diff --git a/source/module_io/write_vxc_lip.hpp b/source/module_io/write_vxc_lip.hpp index f3c30bd5e2..205fdbb057 100644 --- a/source/module_io/write_vxc_lip.hpp +++ b/source/module_io/write_vxc_lip.hpp @@ -84,21 +84,23 @@ namespace ModuleIO /// including terms: local/semi-local XC and EXX template void write_Vxc(int nspin, - int naos, - int drank, - const psi::Psi>& psi_pw, - // const psi::Psi& psi_lcao, - const UnitCell& ucell, - Structure_Factor& sf, - const ModulePW::PW_Basis_K& wfc_basis, - const ModulePW::PW_Basis& rho_basis, - const ModulePW::PW_Basis& rhod_basis, - const ModuleBase::matrix& vloc, - const Charge& chg, - const K_Vectors& kv, - const ModuleBase::matrix& wg + int naos, + int drank, + const psi::Psi>& psi_pw, + // const psi::Psi& psi_lcao, + const UnitCell& ucell, + Structure_Factor& sf, + surchem& solvent, + const ModulePW::PW_Basis_K& wfc_basis, + const ModulePW::PW_Basis& rho_basis, + const ModulePW::PW_Basis& rhod_basis, + const ModuleBase::matrix& vloc, + const Charge& chg, + const K_Vectors& kv, + const ModuleBase::matrix& wg #ifdef __EXX - , const Exx_Lip>& exx_lip + , + const Exx_Lip>& exx_lip #endif ) { @@ -111,7 +113,8 @@ namespace ModuleIO double vtxc = 0.0; // elecstate::PotXC* potxc(&rho_basis, &etxc, vtxc, nullptr); // potxc.cal_v_eff(&chg, &ucell, vr_xc); - elecstate::Potential* potxc = new elecstate::Potential(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &etxc, &vtxc); + elecstate::Potential* potxc + = new elecstate::Potential(&rhod_basis, &rho_basis, &ucell, &vloc, &sf, &solvent, &etxc, &vtxc); std::vector compnents_list = { "xc" }; potxc->pot_register(compnents_list); From 0317913490c8e3404a0cd50b0818106e9cee7ede Mon Sep 17 00:00:00 2001 From: Chen Nuo <49788094+Cstandardlib@users.noreply.github.com> Date: Tue, 17 Dec 2024 12:42:14 +0800 Subject: [PATCH 08/44] Docs: move doxygen to headers for DiagoDavid class and add some new (#5736) * Docs: move doxygen to .h for DiagoDavid class and add some new * Docs: class DiagoDavid --- source/module_hsolver/diago_david.cpp | 140 ++----------------------- source/module_hsolver/diago_david.h | 144 +++++++++++++++++++++++++- 2 files changed, 150 insertions(+), 134 deletions(-) diff --git a/source/module_hsolver/diago_david.cpp b/source/module_hsolver/diago_david.cpp index cb9b63c3a4..b4805a82fa 100644 --- a/source/module_hsolver/diago_david.cpp +++ b/source/module_hsolver/diago_david.cpp @@ -14,23 +14,6 @@ using namespace hsolver; -/** - * @brief Constructor for the DiagoDavid class. - * - * @param[in] precondition_in Pointer to the preconditioning matrix. - * @param[in] nband_in Number of eigenpairs required(i.e. bands). - * @param[in] dim_in Dimension of the matrix. - * @param[in] david_ndim_in Dimension of the reduced basis set of Davidson. - * `david_ndim_in` * `nband_in` is the maximum allowed size of - * the reduced basis set before \b restart of Davidson. - * @param[in] use_paw_in Flag indicating whether to use PAW. - * @param[in] diag_comm_in Communication information for diagonalization. - * - * @tparam T The data type of the matrices and arrays. - * @tparam Device The device type (base_device::DEVICE_CPU or DEVICE_GPU). - * - * @note Auxiliary memory is allocated in the constructor and deallocated in the destructor. - */ template DiagoDavid::DiagoDavid(const Real* precondition_in, const int nband_in, @@ -121,13 +104,6 @@ DiagoDavid::DiagoDavid(const Real* precondition_in, #endif } -/** - * @brief Destructor for the DiagoDavid class. - * - * This destructor releases the dynamically allocated memory used by the class members. - * It deletes the basis, hpsi, spsi, hcc, scc, vcc, lagrange_matrix, and eigenvalue arrays. - * - */ template DiagoDavid::~DiagoDavid() { @@ -343,21 +319,7 @@ int DiagoDavid::diag_once(const HPsiFunc& hpsi_func, return dav_iter; } -/** - * Calculates the preconditioned gradient of the eigenvectors in Davidson method. - * - * @param hpsi_func The function to calculate the matrix-blockvector product H * psi. - * @param spsi_func The function to calculate the matrix-blockvector product overlap S * psi. - * @param dim The dimension of the blockvector. - * @param nbase The current dimension of the reduced basis. - * @param nbase_x The maximum dimension of the reduced basis set. - * @param notconv The number of unconverged eigenpairs. - * @param hpsi The output array for the Hamiltonian H times blockvector psi. - * @param spsi The output array for the overlap matrix S times blockvector psi. - * @param vcc The input array for the eigenvector coefficients. - * @param unconv The array of indices for the unconverged eigenpairs. - * @param eigenvalue The array of eigenvalues. - */ + template void DiagoDavid::cal_grad(const HPsiFunc& hpsi_func, const SPsiFunc& spsi_func, @@ -614,18 +576,7 @@ void DiagoDavid::cal_grad(const HPsiFunc& hpsi_func, return; } -/** - * Calculates the elements of the diagonalization matrix for the DiagoDavid class. - * - * @param dim The dimension of the problem. - * @param nbase The current dimension of the reduced basis. - * @param nbase_x The maximum dimension of the reduced basis set. - * @param notconv The number of newly added basis vectors. - * @param hpsi The output array for the Hamiltonian H times blockvector psi. - * @param spsi The output array for the overlap matrix S times blockvector psi. - * @param hcc Pointer to the array where the calculated Hamiltonian matrix elements will be stored. - * @param scc Pointer to the array where the calculated overlap matrix elements will be stored. - */ + template void DiagoDavid::cal_elem(const int& dim, int& nbase, // current dimension of the reduced basis @@ -780,23 +731,7 @@ void DiagoDavid::diag_zhegvx(const int& nbase, return; } -/** - * Refreshes the diagonalization solver by updating the basis and the reduced Hamiltonian. - * - * @param dim The dimension of the problem. - * @param nband The number of bands. - * @param nbase The number of basis states. - * @param nbase_x The maximum dimension of the reduced basis set. - * @param eigenvalue_in Pointer to the array of eigenvalues. - * @param psi_in Pointer to the array of wavefunctions. - * @param ld_psi The leading dimension of the wavefunction array. - * @param hpsi Pointer to the output array for the updated basis set. - * @param spsi Pointer to the output array for the updated basis set (nband-th column). - * @param hcc Pointer to the output array for the updated reduced Hamiltonian. - * @param scc Pointer to the output array for the updated overlap matrix. - * @param vcc Pointer to the output array for the updated eigenvector matrix. - * - */ + template void DiagoDavid::refresh(const int& dim, const int& nband, @@ -937,19 +872,7 @@ void DiagoDavid::refresh(const int& dim, return; } -/** - * SchmidtOrth function performs orthogonalization of the starting eigenfunction to those already calculated. - * It takes the dimension of the basis, number of bands, index of the current band, starting eigenfunction psi_m, - * lagrange_m array, mm_size, and mv_size as input parameters. - * - * @param dim The dimension of the basis. - * @param nband The number of bands. - * @param m The index of the current band. - * @param spsi Pointer to the starting eigenfunction psi_m. - * @param lagrange_m Pointer to the lagrange_m array. - * @param mm_size The size of the square matrix for future lagranges. - * @param mv_size The size of the lagrange_m array. - */ + template void DiagoDavid::SchmidtOrth(const int& dim, const int nband, @@ -1078,21 +1001,13 @@ void DiagoDavid::SchmidtOrth(const int& dim, return; } -/** - * @brief Plans the Schmidt orthogonalization for a given number of bands. - * - * @tparam T The type of the elements in the vectors. - * @tparam Device The device on which the computation will be performed. - * @param nband The number of bands. - * @param pre_matrix_mm_m The vector to store the matrix sizes. - * @param pre_matrix_mv_m The vector to store the number of matrix-vector multiplications. - */ + template void DiagoDavid::planSchmidtOrth(const int nband, std::vector& pre_matrix_mm_m, std::vector& pre_matrix_mv_m) { if (nband <= 0) { return; -} + } std::fill(pre_matrix_mm_m.begin(), pre_matrix_mm_m.end(), 0); std::fill(pre_matrix_mv_m.begin(), pre_matrix_mv_m.end(), 0); int last_matrix_size = nband; @@ -1150,27 +1065,7 @@ void DiagoDavid::planSchmidtOrth(const int nband, std::vector& p } } -/** - * @brief Performs iterative diagonalization using the David algorithm. - * - * @warning Please see docs of `HPsiFunc` for more information about the hpsi mat-vec interface. - * - * @tparam T The type of the elements in the matrix. - * @tparam Device The device type (CPU or GPU). - * @param hpsi_func The function object that computes the matrix-blockvector product H * psi. - * @param spsi_func The function object that computes the matrix-blockvector product overlap S * psi. - * @param ld_psi The leading dimension of the psi_in array. - * @param psi_in The input wavefunction. - * @param eigenvalue_in The array to store the eigenvalues. - * @param david_diag_thr The convergence threshold for the diagonalization. - * @param david_maxiter The maximum number of iterations for the diagonalization. - * @param ntry_max The maximum number of attempts for the diagonalization restart. - * @param notconv_max The maximum number of bands unconverged allowed. - * @return The total number of iterations performed during the diagonalization. - * - * @note ntry_max is an empirical parameter that should be specified in external routine, default 5 - * notconv_max is determined by the accuracy required for the calculation, default 0 - */ + template int DiagoDavid::diag(const HPsiFunc& hpsi_func, const SPsiFunc& spsi_func, @@ -1201,26 +1096,7 @@ int DiagoDavid::diag(const HPsiFunc& hpsi_func, return sum_dav_iter; } -/** - * @brief Check the convergence of block eigenvectors in the Davidson iteration. - * - * This function determines whether the block eigenvectors have reached convergence - * during the iterative diagonalization process. Convergence is judged based on - * the number of eigenvectors that have not converged and the maximum allowed - * number of such eigenvectors. - * - * @tparam T The data type for the eigenvalues and eigenvectors (e.g., float, double). - * @tparam Device The device type (e.g., base_device::DEVICE_CPU). - * @param ntry The current number of tries for diagonalization. - * @param notconv The current number of eigenvectors that have not converged. - * @param ntry_max The maximum allowed number of tries for diagonalization. - * @param notconv_max The maximum allowed number of eigenvectors that can fail to converge. - * @return true if the eigenvectors are considered converged or the maximum number - * of tries has been reached, false otherwise. - * - * @note Exits the diagonalization loop if either the convergence criteria - * are met or the maximum number of tries is exceeded. - */ + template inline bool DiagoDavid::check_block_conv(const int& ntry, const int& notconv, diff --git a/source/module_hsolver/diago_david.h b/source/module_hsolver/diago_david.h index 3a13c6b860..7a12b625fe 100644 --- a/source/module_hsolver/diago_david.h +++ b/source/module_hsolver/diago_david.h @@ -12,7 +12,16 @@ namespace hsolver { - +/** + * @class DiagoDavid + * @brief A class that implements the block-Davidson algorithm for solving generalized eigenvalue problems. + * + * The DiagoDavid class provides methods for performing iterative diagonalization using the Davidson algorithm. + * It supports both real and complex data types and can be executed on different devices (CPU or GPU). + * + * @tparam T The data type of the matrices and arrays (e.g., float, double, std::complex, std::complex). + * @tparam Device The device type (e.g., base_device::DEVICE_CPU or DEVICE_GPU). + */ template , typename Device = base_device::DEVICE_CPU> class DiagoDavid { @@ -24,6 +33,23 @@ class DiagoDavid public: + /** + * @brief Constructor for the DiagoDavid class. + * + * @param[in] precondition_in Pointer to the preconditioning matrix. + * @param[in] nband_in Number of eigenpairs required(i.e. bands). + * @param[in] dim_in Dimension of the matrix. + * @param[in] david_ndim_in Dimension of the reduced basis set of Davidson. + * `david_ndim_in` * `nband_in` is the maximum allowed size of + * the reduced basis set before \b restart of Davidson. + * @param[in] use_paw_in Flag indicating whether to use PAW. + * @param[in] diag_comm_in Communication information for diagonalization. + * + * @tparam T The data type of the matrices and arrays. + * @tparam Device The device type (base_device::DEVICE_CPU or DEVICE_GPU). + * + * @note Auxiliary memory is allocated in the constructor and deallocated in the destructor. + */ DiagoDavid(const Real* precondition_in, const int nband_in, const int dim_in, @@ -31,7 +57,14 @@ class DiagoDavid const bool use_paw_in, const diag_comm_info& diag_comm_in); - ~DiagoDavid(); + /** + * @brief Destructor for the DiagoDavid class. + * + * This destructor releases the dynamically allocated memory used by the class members. + * It deletes the basis, hpsi, spsi, hcc, scc, vcc, lagrange_matrix, and eigenvalue arrays. + * + */ + ~DiagoDavid(); // declare type of matrix-blockvector functions. @@ -73,6 +106,27 @@ class DiagoDavid */ using SPsiFunc = std::function; + /** + * @brief Performs iterative diagonalization using the David algorithm. + * + * @warning Please see docs of `HPsiFunc` for more information about the hpsi mat-vec interface. + * + * @tparam T The type of the elements in the matrix. + * @tparam Device The device type (CPU or GPU). + * @param hpsi_func The function object that computes the matrix-blockvector product H * psi. + * @param spsi_func The function object that computes the matrix-blockvector product overlap S * psi. + * @param ld_psi The leading dimension of the psi_in array. + * @param psi_in The input wavefunction. + * @param eigenvalue_in The array to store the eigenvalues. + * @param david_diag_thr The convergence threshold for the diagonalization. + * @param david_maxiter The maximum number of iterations for the diagonalization. + * @param ntry_max The maximum number of attempts for the diagonalization restart. + * @param notconv_max The maximum number of bands unconverged allowed. + * @return The total number of iterations performed during the diagonalization. + * + * @note ntry_max is an empirical parameter that should be specified in external routine, default 5 + * notconv_max is determined by the accuracy required for the calculation, default 0 + */ int diag( const HPsiFunc& hpsi_func, // function void hpsi(T*, T*, const int, const int) const SPsiFunc& spsi_func, // function void spsi(T*, T*, const int, const int, const int) @@ -137,6 +191,21 @@ class DiagoDavid const std::vector& ethr_band, const int david_maxiter); + /** + * Calculates the preconditioned gradient of the eigenvectors in Davidson method. + * + * @param hpsi_func The function to calculate the matrix-blockvector product H * psi. + * @param spsi_func The function to calculate the matrix-blockvector product overlap S * psi. + * @param dim The dimension of the blockvector. + * @param nbase The current dimension of the reduced basis. + * @param nbase_x The maximum dimension of the reduced basis set. + * @param notconv The number of unconverged eigenpairs. + * @param hpsi The output array for the Hamiltonian H times blockvector psi. + * @param spsi The output array for the overlap matrix S times blockvector psi. + * @param vcc The input array for the eigenvector coefficients. + * @param unconv The array of indices for the unconverged eigenpairs. + * @param eigenvalue The array of eigenvalues. + */ void cal_grad(const HPsiFunc& hpsi_func, const SPsiFunc& spsi_func, const int& dim, @@ -149,6 +218,18 @@ class DiagoDavid const int* unconv, const Real* eigenvalue); + /** + * Calculates the elements of the diagonalization matrix for the DiagoDavid class. + * + * @param dim The dimension of the problem. + * @param nbase The current dimension of the reduced basis. + * @param nbase_x The maximum dimension of the reduced basis set. + * @param notconv The number of newly added basis vectors. + * @param hpsi The output array for the Hamiltonian H times blockvector psi. + * @param spsi The output array for the overlap matrix S times blockvector psi. + * @param hcc Pointer to the array where the calculated Hamiltonian matrix elements will be stored. + * @param scc Pointer to the array where the calculated overlap matrix elements will be stored. + */ void cal_elem(const int& dim, int& nbase, const int nbase_x, @@ -158,6 +239,23 @@ class DiagoDavid T* hcc, T* scc); + /** + * Refreshes the diagonalization solver by updating the basis and the reduced Hamiltonian. + * + * @param dim The dimension of the problem. + * @param nband The number of bands. + * @param nbase The number of basis states. + * @param nbase_x The maximum dimension of the reduced basis set. + * @param eigenvalue_in Pointer to the array of eigenvalues. + * @param psi_in Pointer to the array of wavefunctions. + * @param ld_psi The leading dimension of the wavefunction array. + * @param hpsi Pointer to the output array for the updated basis set. + * @param spsi Pointer to the output array for the updated basis set (nband-th column). + * @param hcc Pointer to the output array for the updated reduced Hamiltonian. + * @param scc Pointer to the output array for the updated overlap matrix. + * @param vcc Pointer to the output array for the updated eigenvector matrix. + * + */ void refresh(const int& dim, const int& nband, int& nbase, @@ -171,6 +269,19 @@ class DiagoDavid T* scc, T* vcc); + /** + * SchmidtOrth function performs orthogonalization of the starting eigenfunction to those already calculated. + * It takes the dimension of the basis, number of bands, index of the current band, starting eigenfunction psi_m, + * lagrange_m array, mm_size, and mv_size as input parameters. + * + * @param dim The dimension of the basis. + * @param nband The number of bands. + * @param m The index of the current band. + * @param spsi Pointer to the starting eigenfunction psi_m. + * @param lagrange_m Pointer to the lagrange_m array. + * @param mm_size The size of the square matrix for future lagranges. + * @param mv_size The size of the lagrange_m array. + */ void SchmidtOrth(const int& dim, const int nband, const int m, @@ -179,6 +290,15 @@ class DiagoDavid const int mm_size, const int mv_size); + /** + * @brief Plans the Schmidt orthogonalization for a given number of bands. + * + * @tparam T The type of the elements in the vectors. + * @tparam Device The device on which the computation will be performed. + * @param nband The number of bands. + * @param pre_matrix_mm_m The vector to store the matrix sizes. + * @param pre_matrix_mv_m The vector to store the number of matrix-vector multiplications. + */ void planSchmidtOrth(const int nband, std::vector& pre_matrix_mm_m, std::vector& pre_matrix_mv_m); void diag_zhegvx(const int& nbase, @@ -189,6 +309,26 @@ class DiagoDavid Real* eigenvalue, T* vcc); + /** + * @brief Check the convergence of block eigenvectors in the Davidson iteration. + * + * This function determines whether the block eigenvectors have reached convergence + * during the iterative diagonalization process. Convergence is judged based on + * the number of eigenvectors that have not converged and the maximum allowed + * number of such eigenvectors. + * + * @tparam T The data type for the eigenvalues and eigenvectors (e.g., float, double). + * @tparam Device The device type (e.g., base_device::DEVICE_CPU). + * @param ntry The current number of tries for diagonalization. + * @param notconv The current number of eigenvectors that have not converged. + * @param ntry_max The maximum allowed number of tries for diagonalization. + * @param notconv_max The maximum allowed number of eigenvectors that can fail to converge. + * @return true if the eigenvectors are considered converged or the maximum number + * of tries has been reached, false otherwise. + * + * @note Exits the diagonalization loop if either the convergence criteria + * are met or the maximum number of tries is exceeded. + */ bool check_block_conv(const int &ntry, const int ¬conv, const int &ntry_max, const int ¬conv_max); using resmem_complex_op = base_device::memory::resize_memory_op; From f0ff82be2844d0346af54f1b6bef147c0ce23778 Mon Sep 17 00:00:00 2001 From: Qianrui Liu <76200646+Qianruipku@users.noreply.github.com> Date: Wed, 18 Dec 2024 11:05:12 +0800 Subject: [PATCH 09/44] Fix: Segment Fault of PAW (#5738) * update version * Fix: segment fault of paw * [pre-commit.ci lite] apply automatic fixes * fix UTs * [pre-commit.ci lite] apply automatic fixes * fix UTs * [pre-commit.ci lite] apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/module_cell/atom_spec.cpp | 13 +--- source/module_cell/atom_spec.h | 57 ++++++++-------- .../test/support/mock_unitcell.cpp | 40 ----------- source/module_cell/unitcell.cpp | 39 ----------- source/module_cell/unitcell.h | 38 +++++------ source/module_cell/unitcell_data.h | 67 +++++++++++-------- .../module_dm/test/test_cal_dm_R.cpp | 2 - .../module_dm/test/test_cal_dmk_psi.cpp | 2 - .../module_dm/test/test_dm_R_init.cpp | 2 - .../module_dm/test/test_dm_constructor.cpp | 2 - .../module_esolver/test/esolver_dp_test.cpp | 2 - .../operator_lcao/test/test_T_NL_cd.cpp | 2 - .../operator_lcao/test/test_dftu.cpp | 2 - .../operator_lcao/test/test_ekineticnew.cpp | 2 - .../operator_lcao/test/test_nonlocalnew.cpp | 2 - .../operator_lcao/test/test_overlapnew.cpp | 2 - .../operator_lcao/test/test_overlapnew_cd.cpp | 2 - .../test/test_func_folding.cpp | 1 - .../test/test_hcontainer.cpp | 1 - .../test/test_hcontainer_complex.cpp | 1 - .../test/test_hcontainer_output.cpp | 4 -- .../test/test_hcontainer_time.cpp | 9 ++- .../module_hcontainer/test/test_transfer.cpp | 2 - .../module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h | 24 +++---- .../module_io/test/for_testing_input_conv.h | 37 ---------- .../ri_benchmark/test/ri_benchmark_test.cpp | 6 +- 26 files changed, 105 insertions(+), 256 deletions(-) diff --git a/source/module_cell/atom_spec.cpp b/source/module_cell/atom_spec.cpp index 0bf5045f2d..db6e9086e5 100644 --- a/source/module_cell/atom_spec.cpp +++ b/source/module_cell/atom_spec.cpp @@ -4,22 +4,13 @@ Atom::Atom() { - na = 0; - label = "\0"; - label_orb = "\0"; - nw = 0; - nwl = 0; - Rcut = 0.0; // pengfei Li 16-2-29 - type = 0; - stapos_wf = 0; - mass = 0.0; } Atom::~Atom() { } -void Atom::set_index(void) +void Atom::set_index() { assert(nw != 0); this->iw2l.resize(nw, 0); @@ -84,7 +75,7 @@ void Atom::print_Atom(std::ofstream& ofs) #include "module_base/parallel_common.h" #ifdef __MPI -void Atom::bcast_atom(void) +void Atom::bcast_atom() { Parallel_Common::bcast_int(type); Parallel_Common::bcast_int(na); diff --git a/source/module_cell/atom_spec.h b/source/module_cell/atom_spec.h index 17d49296f5..d2deffebf8 100644 --- a/source/module_cell/atom_spec.h +++ b/source/module_cell/atom_spec.h @@ -1,63 +1,62 @@ #ifndef ATOM_H #define ATOM_H -#include "atom_pseudo.h" #include "../module_io/output.h" +#include "atom_pseudo.h" class Atom { -public: - + public: // constructor and destructor Atom(); ~Atom(); Atom_pseudo ncpp; - double mass; // the mass of atom + double mass = 0.0; // the mass of atom std::vector> mbl; // whether the atoms can move or not - bool flag_empty_element = false; // whether is the empty element for bsse. Peize Lin add 2021.04.07 + bool flag_empty_element = false; // whether is the empty element for bsse. Peize Lin add 2021.04.07 std::vector iw2m; // use iw to find m std::vector iw2n; // use iw to find n std::vector iw2l; // use iw to find L - std::vector iw2_ylm; - std::vector iw2_new; - int nw; // number of local orbitals (l,n,m) of this type + std::vector iw2_ylm; + std::vector iw2_new; + int nw = 0; // number of local orbitals (l,n,m) of this type void set_index(void); - int type; // Index of atom type - int na; // Number of atoms in this type. + int type = 0; // Index of atom type + int na = 0; // Number of atoms in this type. - int nwl; // max L(Angular momentum) (for local basis) - double Rcut; //pengfei Li 16-2-29 + int nwl = 0; // max L(Angular momentum) (for local basis) + double Rcut = 0.0; // pengfei Li 16-2-29 std::vector l_nchi; // number of chi for each L - int stapos_wf; // start position of wave functions - - std::string label; // atomic symbol - std::vector> tau;// Cartesian coordinates of each atom in this type. - std::vector> dis;// direct displacements of each atom in this type in current step liuyu modift 2023-03-22 - std::vector> taud;// Direct coordinates of each atom in this type. - std::vector> vel;// velocities of each atom in this type. + int stapos_wf = 0; // start position of wave functions + + std::string label = "\0"; // atomic symbol + std::vector> tau; // Cartesian coordinates of each atom in this type. + std::vector> + dis; // direct displacements of each atom in this type in current step liuyu modift 2023-03-22 + std::vector> taud; // Direct coordinates of each atom in this type. + std::vector> vel; // velocities of each atom in this type. std::vector> force; // force acting on each atom in this type. - std::vector> lambda; // Lagrange multiplier for each atom in this type. used in deltaspin + std::vector> + lambda; // Lagrange multiplier for each atom in this type. used in deltaspin std::vector> constrain; // constrain for each atom in this type. used in deltaspin - std::string label_orb; // atomic Element symbol in the orbital file of lcao + std::string label_orb = "\0"; // atomic Element symbol in the orbital file of lcao - std::vector mag; - std::vector angle1;//spin angle, added by zhengdy-soc - std::vector angle2; + std::vector mag; + std::vector angle1; // spin angle, added by zhengdy-soc + std::vector angle2; std::vector> m_loc_; // Coulomb potential v(r) = z/r // It is a local potentail, and has no non-local potential parts. bool coulomb_potential = false; - void print_Atom(std::ofstream &ofs); - void update_force(ModuleBase::matrix &fcs); + void print_Atom(std::ofstream& ofs); + void update_force(ModuleBase::matrix& fcs); #ifdef __MPI void bcast_atom(void); void bcast_atom2(void); #endif - }; -#endif //Atomspec - +#endif // Atomspec diff --git a/source/module_cell/test/support/mock_unitcell.cpp b/source/module_cell/test/support/mock_unitcell.cpp index b0e4e204ac..9a4c28bb65 100644 --- a/source/module_cell/test/support/mock_unitcell.cpp +++ b/source/module_cell/test/support/mock_unitcell.cpp @@ -10,42 +10,7 @@ */ void UnitCell::set_iat2iwt(const int& npol_in) {} UnitCell::UnitCell() { - Coordinate = "Direct"; - latName = "none"; - lat0 = 0.0; - lat0_angstrom = 0.0; - - ntype = 0; - nat = 0; - namax = 0; - nwmax = 0; - - iat2it = nullptr; - iat2ia = nullptr; - iwt2iat = nullptr; - iwt2iw = nullptr; - itia2iat.create(1, 1); - lc = new int[3]; - - latvec = ModuleBase::Matrix3(); - latvec_supercell = ModuleBase::Matrix3(); - G = ModuleBase::Matrix3(); - GT = ModuleBase::Matrix3(); - GGT = ModuleBase::Matrix3(); - invGGT = ModuleBase::Matrix3(); - - tpiba = 0.0; - tpiba2 = 0.0; - omega = 0.0; - - atom_label = new std::string[1]; - atom_mass = nullptr; - pseudo_fn = new std::string[1]; - pseudo_type = new std::string[1]; - orbital_fn = new std::string[1]; - - set_atom_flag = false; } UnitCell::~UnitCell() { delete[] atom_label; @@ -53,11 +18,6 @@ UnitCell::~UnitCell() { delete[] pseudo_fn; delete[] pseudo_type; delete[] orbital_fn; - delete[] iat2it; - delete[] iat2ia; - delete[] iwt2iat; - delete[] iwt2iw; - delete[] lc; if (set_atom_flag) { delete[] atoms; } diff --git a/source/module_cell/unitcell.cpp b/source/module_cell/unitcell.cpp index 9f2b8bdbca..8cabc76149 100755 --- a/source/module_cell/unitcell.cpp +++ b/source/module_cell/unitcell.cpp @@ -31,41 +31,7 @@ UnitCell::UnitCell() { if (test_unitcell) { ModuleBase::TITLE("unitcell", "Constructor"); } - Coordinate = "Direct"; - latName = "none"; - lat0 = 0.0; - lat0_angstrom = 0.0; - - ntype = 0; - nat = 0; - namax = 0; - nwmax = 0; - - iat2it = nullptr; - iat2ia = nullptr; - iwt2iat = nullptr; - iwt2iw = nullptr; - itia2iat.create(1, 1); - lc = new int[3]; - - latvec = ModuleBase::Matrix3(); - latvec_supercell = ModuleBase::Matrix3(); - G = ModuleBase::Matrix3(); - GT = ModuleBase::Matrix3(); - GGT = ModuleBase::Matrix3(); - invGGT = ModuleBase::Matrix3(); - - tpiba = 0.0; - tpiba2 = 0.0; - omega = 0.0; - - atom_label = new std::string[1]; - atom_mass = nullptr; - pseudo_fn = new std::string[1]; - pseudo_type = new std::string[1]; - - set_atom_flag = false; } UnitCell::~UnitCell() { @@ -74,11 +40,6 @@ UnitCell::~UnitCell() { delete[] pseudo_fn; delete[] pseudo_type; delete[] orbital_fn; - delete[] iat2it; - delete[] iat2ia; - delete[] iwt2iat; - delete[] iwt2iw; - delete[] lc; if (set_atom_flag) { delete[] atoms; } diff --git a/source/module_cell/unitcell.h b/source/module_cell/unitcell.h index af0d79a5c1..d99eb91b5a 100644 --- a/source/module_cell/unitcell.h +++ b/source/module_cell/unitcell.h @@ -15,13 +15,14 @@ // provide the basic information about unitcell. class UnitCell { public: - Atom* atoms; + Atom* atoms = nullptr; - bool set_atom_flag; // added on 2009-3-8 by mohan - Magnetism magnet; // magnetism Yu Liu 2021-07-03 + bool set_atom_flag = false; // added on 2009-3-8 by mohan + Magnetism magnet; // magnetism Yu Liu 2021-07-03 std::vector> atom_mulliken; //[nat][nspin] - int n_mag_at; + int n_mag_at = 0; + Lattice lat; std::string& Coordinate = lat.Coordinate; std::string& latName = lat.latName; double& lat0 = lat.lat0; @@ -31,7 +32,6 @@ class UnitCell { double& omega = lat.omega; int*& lc = lat.lc; - Lattice lat; ModuleBase::Matrix3& latvec = lat.latvec; ModuleBase::Vector3&a1 = lat.a1, &a2 = lat.a2, &a3 = lat.a3; ModuleBase::Vector3& latcenter = lat.latcenter; @@ -181,15 +181,15 @@ class UnitCell { // nelec : total number of electrons // lmaxmax : revert from INPUT //============================================================ - int meshx; - int natomwfc; - int lmax; - int nmax; - int nmax_total; // mohan add 2009-09-10 - int lmax_ppwf; - int lmaxmax; // liuyu 2021-07-04 - bool init_vel; // liuyu 2021-07-15 - // double nelec; + int meshx = 0; + int natomwfc = 0; + int lmax = 0; + int nmax = 0; + int nmax_total = 0; // mohan add 2009-09-10 + int lmax_ppwf = 0; + int lmaxmax = 0; // liuyu 2021-07-04 + bool init_vel = false; // liuyu 2021-07-15 + // double nelec; private: ModuleBase::Matrix3 stress; // calculate stress on the cell @@ -211,11 +211,11 @@ class UnitCell { void update_stress(ModuleBase::matrix& scs); // updates stress void update_force(ModuleBase::matrix& fcs); // updates force in Atom - double* atom_mass; - std::string* atom_label; - std::string* pseudo_fn; - std::string* pseudo_type; // pseudopotential types for each elements, - // sunliang added 2022-09-15. + double* atom_mass = nullptr; + std::string* atom_label = new std::string[1]; + std::string* pseudo_fn = new std::string[1]; + std::string* pseudo_type = new std::string[1]; // pseudopotential types for each elements, + // sunliang added 2022-09-15. std::string* orbital_fn = nullptr; // filenames of orbitals, liuyu add 2022-10-19 std::string descriptor_file; // filenames of descriptor_file, liuyu add 2023-04-06 diff --git a/source/module_cell/unitcell_data.h b/source/module_cell/unitcell_data.h index 4ed8debd28..57f81bcd4e 100644 --- a/source/module_cell/unitcell_data.h +++ b/source/module_cell/unitcell_data.h @@ -1,25 +1,30 @@ -#include "module_base/matrix3.h" #include "module_base/intarray.h" -/// @brief info of lattice +#include "module_base/matrix3.h" +/// @brief info of lattice struct Lattice { - std::string Coordinate; // "Direct" or "Cartesian" or "Cartesian_angstrom" - std::string latName; // Lattice name - double lat0; // Lattice constant(bohr)(a.u.) - double lat0_angstrom;// Lattice constant(angstrom) - double tpiba;// 2*pi / lat0; - double tpiba2; // tpiba ^ 2 - double omega;// the volume of the unit cell - int* lc; // Change the lattice vectors or not + std::string Coordinate = "Direct"; // "Direct" or "Cartesian" or "Cartesian_angstrom" + std::string latName = "none"; // Lattice name + double lat0 = 0.0; // Lattice constant(bohr)(a.u.) + double lat0_angstrom = 0.0; // Lattice constant(angstrom) + double tpiba = 0.0; // 2*pi / lat0; + double tpiba2 = 0.0; // tpiba ^ 2 + double omega = 0.0; // the volume of the unit cell + int* lc = new int[3]; // Change the lattice vectors or not - ModuleBase::Matrix3 latvec; // Unitcell lattice vectors - ModuleBase::Vector3 a1, a2, a3; // Same as latvec, just at another form. - ModuleBase::Vector3 latcenter; // (a1+a2+a3)/2 the center of vector - ModuleBase::Matrix3 latvec_supercell; // Supercell lattice vectors - ModuleBase::Matrix3 G; // reciprocal lattice vector (2pi*inv(R) ) - ModuleBase::Matrix3 GT; // traspose of G - ModuleBase::Matrix3 GGT; // GGT = G*GT - ModuleBase::Matrix3 invGGT; // inverse G + ModuleBase::Matrix3 latvec = ModuleBase::Matrix3(); // Unitcell lattice vectors + ModuleBase::Vector3 a1, a2, a3; // Same as latvec, just at another form. + ModuleBase::Vector3 latcenter; // (a1+a2+a3)/2 the center of vector + ModuleBase::Matrix3 latvec_supercell = ModuleBase::Matrix3(); // Supercell lattice vectors + ModuleBase::Matrix3 G = ModuleBase::Matrix3(); // reciprocal lattice vector (2pi*inv(R) ) + ModuleBase::Matrix3 GT = ModuleBase::Matrix3(); // traspose of G + ModuleBase::Matrix3 GGT = ModuleBase::Matrix3(); // GGT = G*GT + ModuleBase::Matrix3 invGGT = ModuleBase::Matrix3(); // inverse G + + ~Lattice() + { + delete[] lc; + } }; //======================================================== @@ -37,13 +42,21 @@ struct Lattice /// @brief usefull data and index maps struct Statistics { - int ntype;// number of atom species in UnitCell - int nat; // total number of atoms of all species in unitcell - int* iat2it; //iat==>it, distinguish a atom belong to which type - int* iat2ia; //iat==>ia - int* iwt2iat; // iwt ==> iat. - int* iwt2iw; // iwt ==> iw, Peize Lin add 2018-07-02 - ModuleBase::IntArray itia2iat;//(it, ia)==>iat, the index in nat, add 2009-3-2 by mohan - int namax;// the max na among all atom species - int nwmax;// the max nw among all atom species + int ntype = 0; // number of atom species in UnitCell + int nat = 0; // total number of atoms of all species in unitcell + int* iat2it = nullptr; // iat==>it, distinguish a atom belong to which type + int* iat2ia = nullptr; // iat==>ia + int* iwt2iat = nullptr; // iwt ==> iat. + int* iwt2iw = nullptr; // iwt ==> iw, Peize Lin add 2018-07-02 + ModuleBase::IntArray itia2iat; //(it, ia)==>iat, the index in nat, add 2009-3-2 by mohan + int namax = 0; // the max na among all atom species + int nwmax = 0; // the max nw among all atom species + + ~Statistics() + { + delete[] iat2it; + delete[] iat2ia; + delete[] iwt2iat; + delete[] iwt2iw; + } }; \ No newline at end of file diff --git a/source/module_elecstate/module_dm/test/test_cal_dm_R.cpp b/source/module_elecstate/module_dm/test/test_cal_dm_R.cpp index 809a9e42ff..1557b5dde8 100644 --- a/source/module_elecstate/module_dm/test/test_cal_dm_R.cpp +++ b/source/module_elecstate/module_dm/test/test_cal_dm_R.cpp @@ -78,8 +78,6 @@ class DMTest : public testing::Test { delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_elecstate/module_dm/test/test_cal_dmk_psi.cpp b/source/module_elecstate/module_dm/test/test_cal_dmk_psi.cpp index 67a0ccb1c8..f15bf74cc8 100644 --- a/source/module_elecstate/module_dm/test/test_cal_dmk_psi.cpp +++ b/source/module_elecstate/module_dm/test/test_cal_dmk_psi.cpp @@ -74,8 +74,6 @@ class DMTest : public testing::Test delete[] ucell.atoms[0].iw2m; delete[] ucell.atoms[0].iw2n; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_elecstate/module_dm/test/test_dm_R_init.cpp b/source/module_elecstate/module_dm/test/test_dm_R_init.cpp index ef4ccef8ce..181f20266d 100644 --- a/source/module_elecstate/module_dm/test/test_dm_R_init.cpp +++ b/source/module_elecstate/module_dm/test/test_dm_R_init.cpp @@ -78,8 +78,6 @@ class DMTest : public testing::Test { delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_elecstate/module_dm/test/test_dm_constructor.cpp b/source/module_elecstate/module_dm/test/test_dm_constructor.cpp index 9fae03cacd..e31483bf84 100644 --- a/source/module_elecstate/module_dm/test/test_dm_constructor.cpp +++ b/source/module_elecstate/module_dm/test/test_dm_constructor.cpp @@ -75,8 +75,6 @@ class DMTest : public testing::Test { delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_esolver/test/esolver_dp_test.cpp b/source/module_esolver/test/esolver_dp_test.cpp index 9580b918e0..db1ca22d9c 100644 --- a/source/module_esolver/test/esolver_dp_test.cpp +++ b/source/module_esolver/test/esolver_dp_test.cpp @@ -65,8 +65,6 @@ class ESolverDPTest : public ::testing::Test { // Clean up after each test delete esolver; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; delete[] ucell.atoms; delete[] ucell.atom_label; } diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_T_NL_cd.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_T_NL_cd.cpp index a24234a516..5f3aa117ec 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_T_NL_cd.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_T_NL_cd.cpp @@ -92,8 +92,6 @@ class TNLTest : public ::testing::Test delete HR; delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; delete[] ucell.infoNL.Beta; } diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_dftu.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_dftu.cpp index 64a4680ba1..d1838bdb0a 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_dftu.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_dftu.cpp @@ -106,8 +106,6 @@ class DFTUTest : public ::testing::Test delete DMR; delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_ekineticnew.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_ekineticnew.cpp index 8c1765db90..dd81b95464 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_ekineticnew.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_ekineticnew.cpp @@ -66,8 +66,6 @@ class EkineticNewTest : public ::testing::Test delete HR; delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_nonlocalnew.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_nonlocalnew.cpp index 270cd8161a..e137f7ac73 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_nonlocalnew.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_nonlocalnew.cpp @@ -90,8 +90,6 @@ class NonlocalNewTest : public ::testing::Test delete HR; delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; delete[] ucell.infoNL.Beta; } diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_overlapnew.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_overlapnew.cpp index cb7fadc0db..19d5e57737 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_overlapnew.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_overlapnew.cpp @@ -66,8 +66,6 @@ class OverlapNewTest : public ::testing::Test delete SR; delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_overlapnew_cd.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_overlapnew_cd.cpp index b07a4a1b43..d29c0cd840 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_overlapnew_cd.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/test/test_overlapnew_cd.cpp @@ -65,8 +65,6 @@ class OverlapNewTest : public ::testing::Test delete SR; delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_hamilt_lcao/module_hcontainer/test/test_func_folding.cpp b/source/module_hamilt_lcao/module_hcontainer/test/test_func_folding.cpp index 9ee8472f57..fa3499775b 100644 --- a/source/module_hamilt_lcao/module_hcontainer/test/test_func_folding.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/test/test_func_folding.cpp @@ -36,7 +36,6 @@ class FoldingTest : public ::testing::Test void TearDown() override { delete[] ucell.atoms; - delete[] ucell.iat2it; } UnitCell ucell; diff --git a/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer.cpp b/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer.cpp index b76b10db09..6d6b0fe39d 100644 --- a/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer.cpp @@ -40,7 +40,6 @@ class HContainerTest : public ::testing::Test { delete HR; delete[] ucell.atoms; - delete[] ucell.iat2it; } UnitCell ucell; diff --git a/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_complex.cpp b/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_complex.cpp index b0aa7a22b1..60a87eedec 100644 --- a/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_complex.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_complex.cpp @@ -40,7 +40,6 @@ class HContainerTest : public ::testing::Test { delete HR; delete[] ucell.atoms; - delete[] ucell.iat2it; } UnitCell ucell; diff --git a/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_output.cpp b/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_output.cpp index 7ed0f02703..97129d0a12 100644 --- a/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_output.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_output.cpp @@ -56,10 +56,6 @@ class OutputHContainerTest : public testing::Test void TearDown() override { delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; - delete[] ucell.iwt2iat; - delete[] ucell.iwt2iw; } }; diff --git a/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_time.cpp b/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_time.cpp index db51f21d7e..4f5a5b5fc4 100644 --- a/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_time.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/test/test_hcontainer_time.cpp @@ -1,6 +1,6 @@ #include "gtest/gtest.h" #include "module_hamilt_lcao/module_hcontainer/hcontainer.h" -#include "time.h" +#include // test_size is the number of atoms in the unitcell // modify test_size to test different size of unitcell @@ -39,7 +39,6 @@ class HContainerTest : public ::testing::Test { delete HR; delete[] ucell.atoms; - delete[] ucell.iat2it; } UnitCell ucell; @@ -53,7 +52,7 @@ TEST(single_test_hcontainer, insert_pair) // print current used memory of system auto memory_start = ModuleBase::GlobalFunc::MemAvailable() / 1024.0; // get random number between (0, 100000000) by rand() - srand((unsigned)time(NULL)); + srand((unsigned)time(nullptr)); hamilt::HContainer HR_test(test_size); clock_t start, end; start = clock(); @@ -86,7 +85,7 @@ TEST(single_test_hcontainer, insert_pair) TEST(single_test_IJR, insert_pair) { // get random number between (0, 100000000) by rand() - srand((unsigned)time(NULL)); + srand((unsigned)time(nullptr)); hamilt::HContainer HR_test(test_size); clock_t start, end; start = clock(); @@ -122,7 +121,7 @@ TEST(single_test_IJR, insert_pair) TEST_F(HContainerTest, find_pair) { // find_pair 1000000 times with random iat1 and iat2 - srand((unsigned)time(NULL)); + srand((unsigned)time(nullptr)); clock_t start, end; start = clock(); for (int i = 0; i < test_size * 100; i++) diff --git a/source/module_hamilt_lcao/module_hcontainer/test/test_transfer.cpp b/source/module_hamilt_lcao/module_hcontainer/test/test_transfer.cpp index 78aa125613..b34de091a7 100644 --- a/source/module_hamilt_lcao/module_hcontainer/test/test_transfer.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/test/test_transfer.cpp @@ -49,8 +49,6 @@ class TransferTest : public ::testing::Test delete HR_para; delete paraV; delete[] ucell.atoms; - delete[] ucell.iat2it; - delete[] ucell.iat2ia; } #ifdef __MPI diff --git a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h index e647675e87..505e479adc 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h +++ b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h @@ -29,23 +29,18 @@ class pseudopot_cell_vnl : public pseudopot_cell_vl const ModulePW::PW_Basis_K* wfc_basis = nullptr, const bool allocate_vkb = true); - double cell_factor; // LiuXh add 20180619 + double cell_factor = 0.0; // LiuXh add 20180619 - int nkb; // total number of beta functions considering all atoms + int nkb = 0; // total number of beta functions considering all atoms - int lmaxkb; // max angular momentum for non-local projectors + int lmaxkb = 0; // max angular momentum for non-local projectors void init_vnl(UnitCell& cell, const ModulePW::PW_Basis* rho_basis); template - void getvnl(Device* ctx, - const UnitCell& ucell, - const int& ik, - std::complex* vkb_in) const; + void getvnl(Device* ctx, const UnitCell& ucell, const int& ik, std::complex* vkb_in) const; - void getvnl(const int& ik, - const UnitCell& ucell, - ModuleBase::ComplexMatrix& vkb_in) const; + void getvnl(const int& ik, const UnitCell& ucell, ModuleBase::ComplexMatrix& vkb_in) const; // void getvnl_alpha(const int &ik); @@ -53,8 +48,7 @@ class pseudopot_cell_vnl : public pseudopot_cell_vl void initgradq_vnl(const UnitCell& cell); - void getgradq_vnl(const UnitCell& ucell, - const int ik); + void getgradq_vnl(const UnitCell& ucell, const int ik); //=============================================================== // MEMBER VARIABLES : @@ -66,10 +60,10 @@ class pseudopot_cell_vnl : public pseudopot_cell_vl //=============================================================== // private: - int nhm; - int nbetam; // max number of beta functions + int nhm = 0; + int nbetam = 0; // max number of beta functions - int lmaxq; + int lmaxq = 0; ModuleBase::matrix indv; // indes linking atomic beta's to beta's in the solid ModuleBase::matrix nhtol; // correspondence n <-> angular momentum l diff --git a/source/module_io/test/for_testing_input_conv.h b/source/module_io/test/for_testing_input_conv.h index 8ec1791995..7394ded26f 100644 --- a/source/module_io/test/for_testing_input_conv.h +++ b/source/module_io/test/for_testing_input_conv.h @@ -180,44 +180,7 @@ wavefunc::~wavefunc() } UnitCell::UnitCell() { - Coordinate = "Direct"; - latName = "none"; - lat0 = 0.0; - lat0_angstrom = 0.0; - - bool init_vel; - - ntype = 0; - nat = 0; - namax = 0; - nwmax = 0; - - iat2it = nullptr; - iat2ia = nullptr; - iwt2iat = nullptr; - iwt2iw = nullptr; - itia2iat.create(1, 1); - lc = new int[3]; - - latvec = ModuleBase::Matrix3(); - latvec_supercell = ModuleBase::Matrix3(); - G = ModuleBase::Matrix3(); - GT = ModuleBase::Matrix3(); - GGT = ModuleBase::Matrix3(); - invGGT = ModuleBase::Matrix3(); - - tpiba = 0.0; - tpiba2 = 0.0; - omega = 0.0; - - atom_label = new std::string[1]; - atom_mass = nullptr; - pseudo_fn = new std::string[1]; - pseudo_type = new std::string[1]; - orbital_fn = new std::string[1]; - - set_atom_flag = false; } UnitCell::~UnitCell() {} #ifdef __LCAO diff --git a/source/module_lr/ri_benchmark/test/ri_benchmark_test.cpp b/source/module_lr/ri_benchmark/test/ri_benchmark_test.cpp index 285dc80a0e..71b4fdcbd7 100644 --- a/source/module_lr/ri_benchmark/test/ri_benchmark_test.cpp +++ b/source/module_lr/ri_benchmark/test/ri_benchmark_test.cpp @@ -17,7 +17,6 @@ UnitCell::UnitCell() { } UnitCell::~UnitCell() { delete[] atoms; - delete[] iat2it; } // inline const int* UnitCell::get_iat2iwt(int iat) { return iat2iwt; } @@ -25,8 +24,9 @@ TEST(RI_Benchmark, SlicePsi) { const int nk = 1, nbands = 2, nbasis = 3; psi::Psi psi(nk, nbands, nbasis); - for (int i = 0; i < nk * nbands * nbasis; i++) + for (int i = 0; i < nk * nbands * nbasis; i++) { psi.get_pointer()[i] = i; +} std::vector psi_slice = RI_Benchmark::slice_psi(psi, 1, 1, 1, 2); EXPECT_DOUBLE_EQ(psi_slice[0], 4); EXPECT_DOUBLE_EQ(psi_slice[1], 5); @@ -62,7 +62,7 @@ TEST(RI_Benchmark, CalCsMO) int main(int argc, char** argv) { - srand(time(NULL)); // for random number generator + srand(time(nullptr)); // for random number generator MPI_Init(&argc, &argv); testing::InitGoogleTest(&argc, argv); int result = RUN_ALL_TESTS(); From c61110069fe440e82e1bb6e487c823a1165f16ab Mon Sep 17 00:00:00 2001 From: liiutao <74701833+A-006@users.noreply.github.com> Date: Wed, 18 Dec 2024 19:29:29 +0800 Subject: [PATCH 10/44] Refactor:Remove GlobalC::ucell (#5737) * change ucell in force_stress.cpp * change ucell in force.cpp * change ucell in stress_func_cc.cpp * change ucell in rdmft_pot.cpp * change ucell in state_rmdft.cpp * change dftu_tools of ucell * remove GlobalC::ucell --- source/driver.cpp | 5 +- source/driver.h | 2 +- source/driver_run.cpp | 12 ++- source/module_esolver/esolver_ks_lcao.cpp | 4 +- .../hamilt_lcaodft/FORCE_STRESS.cpp | 12 +-- .../hamilt_lcaodft/FORCE_STRESS.h | 8 +- .../module_hamilt_lcao/module_dftu/dftu.cpp | 1 + source/module_hamilt_lcao/module_dftu/dftu.h | 1 + .../module_dftu/dftu_tools.cpp | 84 ++++++++++--------- .../hamilt_ofdft/of_stress_pw.cpp | 2 +- .../module_hamilt_pw/hamilt_pwdft/forces.cpp | 6 +- source/module_hamilt_pw/hamilt_pwdft/forces.h | 2 +- source/module_hamilt_pw/hamilt_pwdft/global.h | 1 - .../hamilt_pwdft/hamilt_pw.cpp | 2 +- .../hamilt_pwdft/stress_func.h | 3 + .../hamilt_pwdft/stress_func_cc.cpp | 47 ++++++----- .../hamilt_pwdft/stress_pw.cpp | 2 +- .../hamilt_stodft/sto_stress_pw.cpp | 4 +- .../hamilt_stodft/sto_stress_pw.h | 2 +- source/module_io/input_conv.cpp | 5 -- source/module_rdmft/rdmft.h | 4 +- source/module_rdmft/rdmft_pot.cpp | 18 ++-- source/module_rdmft/update_state_rdmft.cpp | 12 +-- 23 files changed, 129 insertions(+), 110 deletions(-) diff --git a/source/driver.cpp b/source/driver.cpp index 67476ddd5c..250ac12707 100644 --- a/source/driver.cpp +++ b/source/driver.cpp @@ -43,9 +43,6 @@ void Driver::init() // (4) close all of the running logs ModuleBase::Global_File::close_all_log(GlobalV::MY_RANK, PARAM.inp.out_alllog,PARAM.inp.calculation); - // (5) output the json file - // Json::create_Json(&GlobalC::ucell.symm,GlobalC::ucell.atoms,&INPUT); - Json::create_Json(&GlobalC::ucell, PARAM); } void Driver::print_start_info() @@ -180,7 +177,7 @@ void Driver::atomic_world() //-------------------------------------------------- // where the actual stuff is done - this->driver_run(GlobalC::ucell); + this->driver_run(); ModuleBase::timer::finish(GlobalV::ofs_running); ModuleBase::Memory::print_all(GlobalV::ofs_running); diff --git a/source/driver.h b/source/driver.h index fdcb83fade..24669e6e97 100644 --- a/source/driver.h +++ b/source/driver.h @@ -36,7 +36,7 @@ class Driver void atomic_world(); // the actual calculations - void driver_run(UnitCell& ucell); + void driver_run(); }; #endif diff --git a/source/driver_run.cpp b/source/driver_run.cpp index 90d2c505f5..8084106fe6 100644 --- a/source/driver_run.cpp +++ b/source/driver_run.cpp @@ -24,13 +24,12 @@ * the configuration-changing subroutine takes force and stress and updates the * configuration */ -void Driver::driver_run(UnitCell& ucell) +void Driver::driver_run() { ModuleBase::TITLE("Driver", "driver_line"); ModuleBase::timer::tick("Driver", "driver_line"); //! 1: setup cell and atom information - // this warning should not be here, mohan 2024-05-22 #ifndef __LCAO if (PARAM.inp.basis_type == "lcao_in_pw" || PARAM.inp.basis_type == "lcao") { @@ -40,6 +39,13 @@ void Driver::driver_run(UnitCell& ucell) #endif // the life of ucell should begin here, mohan 2024-05-12 + UnitCell ucell; + ucell.setup(PARAM.inp.latname, + PARAM.inp.ntype, + PARAM.inp.lmaxmax, + PARAM.inp.init_vel, + PARAM.inp.fixed_axes); + ucell.setup_cell(PARAM.globalv.global_in_stru, GlobalV::ofs_running); Check_Atomic_Stru::check_atomic_stru(ucell, PARAM.inp.min_dist_coef); @@ -86,6 +92,8 @@ void Driver::driver_run(UnitCell& ucell) ModuleESolver::clean_esolver(p_esolver); + //! 6: output the json file + Json::create_Json(&ucell, PARAM); ModuleBase::timer::tick("Driver", "driver_line"); return; } diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index 712617948a..21e2f3356e 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -302,11 +302,11 @@ void ESolver_KS_LCAO::cal_force(UnitCell& ucell, ModuleBase::matrix& for Force_Stress_LCAO fsl(this->RA, ucell.nat); - fsl.getForceStress(PARAM.inp.cal_force, + fsl.getForceStress(ucell, + PARAM.inp.cal_force, PARAM.inp.cal_stress, PARAM.inp.test_force, PARAM.inp.test_stress, - ucell, this->gd, this->pv, this->pelec, diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp index 9620a5f33c..5afa1aeec7 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp @@ -31,11 +31,11 @@ Force_Stress_LCAO::~Force_Stress_LCAO() { } template -void Force_Stress_LCAO::getForceStress(const bool isforce, +void Force_Stress_LCAO::getForceStress(UnitCell& ucell, + const bool isforce, const bool isstress, const bool istestf, const bool istests, - const UnitCell& ucell, const Grid_Driver& gd, Parallel_Orbitals& pv, const elecstate::ElecState* pelec, @@ -830,7 +830,7 @@ void Force_Stress_LCAO::getForceStress(const bool isforce, // local pseudopotential, ewald, core correction, scc terms in force template -void Force_Stress_LCAO::calForcePwPart(const UnitCell& ucell, +void Force_Stress_LCAO::calForcePwPart(UnitCell& ucell, ModuleBase::matrix& fvl_dvl, ModuleBase::matrix& fewalds, ModuleBase::matrix& fcc, @@ -857,7 +857,7 @@ void Force_Stress_LCAO::calForcePwPart(const UnitCell& ucell, //-------------------------------------------------------- // force due to core correlation. //-------------------------------------------------------- - f_pw.cal_force_cc(fcc, rhopw, chr, nlpp.numeric, GlobalC::ucell); + f_pw.cal_force_cc(fcc, rhopw, chr, nlpp.numeric, ucell); //-------------------------------------------------------- // force due to self-consistent charge. //-------------------------------------------------------- @@ -975,7 +975,7 @@ void Force_Stress_LCAO>::integral_part(const bool isGammaOn // vlocal, hartree, ewald, core correction, exchange-correlation terms in stress template -void Force_Stress_LCAO::calStressPwPart(const UnitCell& ucell, +void Force_Stress_LCAO::calStressPwPart(UnitCell& ucell, ModuleBase::matrix& sigmadvl, ModuleBase::matrix& sigmahar, ModuleBase::matrix& sigmaewa, @@ -1007,7 +1007,7 @@ void Force_Stress_LCAO::calStressPwPart(const UnitCell& ucell, //-------------------------------------------------------- // stress due to core correlation. //-------------------------------------------------------- - sc_pw.stress_cc(sigmacc, rhopw, &sf, 0, nlpp.numeric, chr); + sc_pw.stress_cc(sigmacc, rhopw, ucell, &sf, 0, nlpp.numeric, chr); //-------------------------------------------------------- // stress due to self-consistent charge. diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h index c995d57b09..ecc58473a0 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h @@ -29,11 +29,11 @@ class Force_Stress_LCAO Force_Stress_LCAO(Record_adj& ra, const int nat_in); ~Force_Stress_LCAO(); - void getForceStress(const bool isforce, + void getForceStress(UnitCell& ucell, + const bool isforce, const bool isstress, const bool istestf, const bool istests, - const UnitCell& ucell, const Grid_Driver& gd, Parallel_Orbitals& pv, const elecstate::ElecState* pelec, @@ -66,7 +66,7 @@ class Force_Stress_LCAO ModuleBase::matrix& fcs, ModuleSymmetry::Symmetry* symm); - void calForcePwPart(const UnitCell& ucell, + void calForcePwPart(UnitCell& ucell, ModuleBase::matrix& fvl_dvl, ModuleBase::matrix& fewalds, ModuleBase::matrix& fcc, @@ -105,7 +105,7 @@ class Force_Stress_LCAO const Parallel_Orbitals& pv, const K_Vectors& kv); - void calStressPwPart(const UnitCell& ucell, + void calStressPwPart(UnitCell& ucell, ModuleBase::matrix& sigmadvl, ModuleBase::matrix& sigmahar, ModuleBase::matrix& sigmaewa, diff --git a/source/module_hamilt_lcao/module_dftu/dftu.cpp b/source/module_hamilt_lcao/module_dftu/dftu.cpp index 2dd705a03c..751a9f05fd 100644 --- a/source/module_hamilt_lcao/module_dftu/dftu.cpp +++ b/source/module_hamilt_lcao/module_dftu/dftu.cpp @@ -59,6 +59,7 @@ void DFTU::init(UnitCell& cell, // unitcell class { orb_cutoff_ = orb->cutoffs(); } + ucell = &cell; #endif // needs reconstructions in future diff --git a/source/module_hamilt_lcao/module_dftu/dftu.h b/source/module_hamilt_lcao/module_dftu/dftu.h index 03a97a4905..a885340cf1 100644 --- a/source/module_hamilt_lcao/module_dftu/dftu.h +++ b/source/module_hamilt_lcao/module_dftu/dftu.h @@ -300,6 +300,7 @@ class DFTU void set_dmr(const elecstate::DensityMatrix, double>* dm_in_dftu_cd); private: + const UnitCell* ucell = nullptr; const elecstate::DensityMatrix* dm_in_dftu_d = nullptr; const elecstate::DensityMatrix, double>* dm_in_dftu_cd = nullptr; #endif diff --git a/source/module_hamilt_lcao/module_dftu/dftu_tools.cpp b/source/module_hamilt_lcao/module_dftu/dftu_tools.cpp index 363c84da89..e7d78704d7 100644 --- a/source/module_hamilt_lcao/module_dftu/dftu_tools.cpp +++ b/source/module_hamilt_lcao/module_dftu/dftu_tools.cpp @@ -12,34 +12,38 @@ void DFTU::cal_VU_pot_mat_complex(const int spin, const bool newlocale, std::com ModuleBase::TITLE("DFTU", "cal_VU_pot_mat_complex"); ModuleBase::GlobalFunc::ZEROS(VU, this->paraV->nloc); - for (int it = 0; it < GlobalC::ucell.ntype; ++it) + for (int it = 0; it < this->ucell->ntype; ++it) { - if (PARAM.inp.orbital_corr[it] == -1) { + if (PARAM.inp.orbital_corr[it] == -1) + { continue; -} - for (int ia = 0; ia < GlobalC::ucell.atoms[it].na; ia++) + } + for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) { - const int iat = GlobalC::ucell.itia2iat(it, ia); - for (int L = 0; L <= GlobalC::ucell.atoms[it].nwl; L++) + const int iat = this->ucell->itia2iat(it, ia); + for (int L = 0; L <= this->ucell->atoms[it].nwl; L++) { - if (L != PARAM.inp.orbital_corr[it]) { + if (L != PARAM.inp.orbital_corr[it]) + { continue; -} + } - for (int n = 0; n < GlobalC::ucell.atoms[it].l_nchi[L]; n++) + for (int n = 0; n < this->ucell->atoms[it].l_nchi[L]; n++) { - if (n != 0) { + if (n != 0) + { continue; -} + } for (int m1 = 0; m1 < 2 * L + 1; m1++) { for (int ipol1 = 0; ipol1 < PARAM.globalv.npol; ipol1++) { const int mu = this->paraV->global2local_row(this->iatlnmipol2iwt[iat][L][n][m1][ipol1]); - if (mu < 0) { + if (mu < 0) + { continue; -} + } for (int m2 = 0; m2 < 2 * L + 1; m2++) { @@ -47,13 +51,12 @@ void DFTU::cal_VU_pot_mat_complex(const int spin, const bool newlocale, std::com { const int nu = this->paraV->global2local_col(this->iatlnmipol2iwt[iat][L][n][m2][ipol2]); - if (nu < 0) { + if (nu < 0) + { continue; -} - + } int m1_all = m1 + (2 * L + 1) * ipol1; int m2_all = m2 + (2 * L + 1) * ipol2; - double val = get_onebody_eff_pot(it, iat, L, n, spin, m1_all, m2_all, newlocale); VU[nu * this->paraV->nrow + mu] = std::complex(val, 0.0); } // ipol2 @@ -73,43 +76,47 @@ void DFTU::cal_VU_pot_mat_real(const int spin, const bool newlocale, double* VU) ModuleBase::TITLE("DFTU", "cal_VU_pot_mat_real"); ModuleBase::GlobalFunc::ZEROS(VU, this->paraV->nloc); - for (int it = 0; it < GlobalC::ucell.ntype; ++it) + for (int it = 0; it < this->ucell->ntype; ++it) { - if (PARAM.inp.orbital_corr[it] == -1) { + if (PARAM.inp.orbital_corr[it] == -1) + { continue; -} - for (int ia = 0; ia < GlobalC::ucell.atoms[it].na; ia++) + } + for (int ia = 0; ia < this->ucell->atoms[it].na; ia++) { - const int iat = GlobalC::ucell.itia2iat(it, ia); - for (int L = 0; L <= GlobalC::ucell.atoms[it].nwl; L++) + const int iat = this->ucell->itia2iat(it, ia); + for (int L = 0; L <= this->ucell->atoms[it].nwl; L++) { - if (L != PARAM.inp.orbital_corr[it]) { + if (L != PARAM.inp.orbital_corr[it]) + { continue; -} + } - for (int n = 0; n < GlobalC::ucell.atoms[it].l_nchi[L]; n++) + for (int n = 0; n < this->ucell->atoms[it].l_nchi[L]; n++) { - if (n != 0) { + if (n != 0) + { continue; -} - + } for (int m1 = 0; m1 < 2 * L + 1; m1++) { for (int ipol1 = 0; ipol1 < PARAM.globalv.npol; ipol1++) { const int mu = this->paraV->global2local_row(this->iatlnmipol2iwt[iat][L][n][m1][ipol1]); - if (mu < 0) { + if (mu < 0) + { continue; -} + } for (int m2 = 0; m2 < 2 * L + 1; m2++) { for (int ipol2 = 0; ipol2 < PARAM.globalv.npol; ipol2++) { const int nu = this->paraV->global2local_col(this->iatlnmipol2iwt[iat][L][n][m2][ipol2]); - if (nu < 0) { + if (nu < 0) + { continue; -} + } int m1_all = m1 + (2 * L + 1) * ipol1; int m2_all = m2 + (2 * L + 1) * ipol2; @@ -157,12 +164,13 @@ double DFTU::get_onebody_eff_pot(const int T, { if (Yukawa) { - if (m0 == m1) { + if (m0 == m1) + { VU = (this->U_Yukawa[T][L][N] - this->J_Yukawa[T][L][N]) * (0.5 - this->locale[iat][L][N][spin](m0, m1)); } else { VU = -(this->U_Yukawa[T][L][N] - this->J_Yukawa[T][L][N]) * this->locale[iat][L][N][spin](m0, m1); -} + } } else { @@ -170,7 +178,7 @@ double DFTU::get_onebody_eff_pot(const int T, VU = (this->U[T]) * (0.5 - this->locale[iat][L][N][spin](m0, m1)); } else { VU = -(this->U[T]) * this->locale[iat][L][N][spin](m0, m1); -} + } } } else @@ -183,7 +191,7 @@ double DFTU::get_onebody_eff_pot(const int T, } else { VU = -(this->U_Yukawa[T][L][N] - this->J_Yukawa[T][L][N]) * this->locale_save[iat][L][N][spin](m0, m1); -} + } } else { @@ -191,7 +199,7 @@ double DFTU::get_onebody_eff_pot(const int T, VU = (this->U[T]) * (0.5 - this->locale_save[iat][L][N][spin](m0, m1)); } else { VU = -(this->U[T]) * this->locale_save[iat][L][N][spin](m0, m1); -} + } } } diff --git a/source/module_hamilt_pw/hamilt_ofdft/of_stress_pw.cpp b/source/module_hamilt_pw/hamilt_ofdft/of_stress_pw.cpp index d0f791d34c..c3964be8b3 100644 --- a/source/module_hamilt_pw/hamilt_ofdft/of_stress_pw.cpp +++ b/source/module_hamilt_pw/hamilt_ofdft/of_stress_pw.cpp @@ -79,7 +79,7 @@ void OF_Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, stress_loc(ucell,sigmaloc, this->rhopw, locpp.vloc, p_sf, true, pelec->charge); // nlcc - stress_cc(sigmaxcc, this->rhopw, p_sf, true, locpp.numeric, pelec->charge); + stress_cc(sigmaxcc, this->rhopw, ucell, p_sf, true, locpp.numeric, pelec->charge); // vdw term stress_vdw(sigmavdw, ucell); diff --git a/source/module_hamilt_pw/hamilt_pwdft/forces.cpp b/source/module_hamilt_pw/hamilt_pwdft/forces.cpp index 372836eaa9..df29f88989 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/forces.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/forces.cpp @@ -24,7 +24,7 @@ #endif template -void Forces::cal_force(const UnitCell& ucell, +void Forces::cal_force(UnitCell& ucell, ModuleBase::matrix& force, const elecstate::ElecState& elec, ModulePW::PW_Basis* rho_basis, @@ -161,7 +161,7 @@ void Forces::cal_force(const UnitCell& ucell, // DFT+U and DeltaSpin if(PARAM.inp.dft_plus_u || PARAM.inp.sc_mag_switch) { - this->cal_force_onsite(forceonsite, wg, wfc_basis, GlobalC::ucell, psi_in); + this->cal_force_onsite(forceonsite, wg, wfc_basis, ucell, psi_in); } } @@ -169,7 +169,7 @@ void Forces::cal_force(const UnitCell& ucell, // not relevant for PAW if (!PARAM.inp.use_paw) { - Forces::cal_force_cc(forcecc, rho_basis, chr, locpp->numeric, GlobalC::ucell); + Forces::cal_force_cc(forcecc, rho_basis, chr, locpp->numeric, ucell); } else { diff --git a/source/module_hamilt_pw/hamilt_pwdft/forces.h b/source/module_hamilt_pw/hamilt_pwdft/forces.h index a01aaa7f02..a300f1fba5 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/forces.h +++ b/source/module_hamilt_pw/hamilt_pwdft/forces.h @@ -33,7 +33,7 @@ class Forces Forces(const int nat_in) : nat(nat_in){}; ~Forces(){}; - void cal_force(const UnitCell& ucell, + void cal_force(UnitCell& ucell, ModuleBase::matrix& force, const elecstate::ElecState& elec, ModulePW::PW_Basis* rho_basis, diff --git a/source/module_hamilt_pw/hamilt_pwdft/global.h b/source/module_hamilt_pw/hamilt_pwdft/global.h index bed170b32b..212e1e51c4 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/global.h +++ b/source/module_hamilt_pw/hamilt_pwdft/global.h @@ -265,7 +265,6 @@ namespace GlobalC #include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" namespace GlobalC { -extern UnitCell ucell; extern Parallel_Grid Pgrid; extern Parallel_Kpoints Pkpoints; extern Restart restart; // Peize Lin add 2020.04.04 diff --git a/source/module_hamilt_pw/hamilt_pwdft/hamilt_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/hamilt_pw.cpp index 7fe256b23d..38ccd9632c 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/hamilt_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/hamilt_pw.cpp @@ -118,7 +118,7 @@ HamiltPW::HamiltPW(elecstate::Potential* pot_in, if(PARAM.inp.sc_mag_switch || PARAM.inp.dft_plus_u) { Operator* onsite_proj - = new OnsiteProj>(isk, &GlobalC::ucell, PARAM.inp.sc_mag_switch, (PARAM.inp.dft_plus_u>0)); + = new OnsiteProj>(isk, ucell, PARAM.inp.sc_mag_switch, (PARAM.inp.dft_plus_u>0)); this->ops->add(onsite_proj); } return; diff --git a/source/module_hamilt_pw/hamilt_pwdft/stress_func.h b/source/module_hamilt_pw/hamilt_pwdft/stress_func.h index a81dbc9d93..878206ad38 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/stress_func.h +++ b/source/module_hamilt_pw/hamilt_pwdft/stress_func.h @@ -114,12 +114,15 @@ class Stress_Func // 5) the stress from the non-linear core correction (if any) void stress_cc(ModuleBase::matrix& sigma, ModulePW::PW_Basis* rho_basis, + UnitCell& ucell, const Structure_Factor* p_sf, const bool is_pw, const bool *numeric, const Charge* const chr); // nonlinear core correction stress in PW or LCAO basis void deriv_drhoc(const bool& numeric, + const double& omega, + const double& tpiba2, const int mesh, const FPTYPE* r, const FPTYPE* rab, diff --git a/source/module_hamilt_pw/hamilt_pwdft/stress_func_cc.cpp b/source/module_hamilt_pw/hamilt_pwdft/stress_func_cc.cpp index 63f892c0c2..ab8d9b3fa1 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/stress_func_cc.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/stress_func_cc.cpp @@ -15,6 +15,7 @@ template void Stress_Func::stress_cc(ModuleBase::matrix& sigma, ModulePW::PW_Basis* rho_basis, + UnitCell& ucell, const Structure_Factor* p_sf, const bool is_pw, const bool *numeric, @@ -34,9 +35,9 @@ void Stress_Func::stress_cc(ModuleBase::matrix& sigma, FPTYPE* rhocg; int judge=0; - for(int nt=0;nt::stress_cc(ModuleBase::matrix& sigma, { #ifdef USE_LIBXC const auto etxc_vtxc_v - = XC_Functional_Libxc::v_xc_meta(XC_Functional::get_func_id(), rho_basis->nrxx, GlobalC::ucell.omega, GlobalC::ucell.tpiba, chr); + = XC_Functional_Libxc::v_xc_meta(XC_Functional::get_func_id(), rho_basis->nrxx, ucell.omega, ucell.tpiba, chr); // etxc = std::get<0>(etxc_vtxc_v); // vtxc = std::get<1>(etxc_vtxc_v); @@ -65,8 +66,8 @@ void Stress_Func::stress_cc(ModuleBase::matrix& sigma, } else { - elecstate::cal_ux(GlobalC::ucell); - const auto etxc_vtxc_v = XC_Functional::v_xc(rho_basis->nrxx, chr, &GlobalC::ucell); + elecstate::cal_ux(ucell); + const auto etxc_vtxc_v = XC_Functional::v_xc(rho_basis->nrxx, chr, &ucell); // etxc = std::get<0>(etxc_vtxc_v); // may delete? // vtxc = std::get<1>(etxc_vtxc_v); // may delete? vxc = std::get<2>(etxc_vtxc_v); @@ -103,17 +104,19 @@ void Stress_Func::stress_cc(ModuleBase::matrix& sigma, rhocg= new FPTYPE [rho_basis->ngg]; sigmadiag=0.0; - for(int nt=0;ntderiv_drhoc( numeric, - GlobalC::ucell.atoms[nt].ncpp.msh, - GlobalC::ucell.atoms[nt].ncpp.r.data(), - GlobalC::ucell.atoms[nt].ncpp.rab.data(), - GlobalC::ucell.atoms[nt].ncpp.rho_atc.data(), + ucell.omega, + ucell.tpiba2, + ucell.atoms[nt].ncpp.msh, + ucell.atoms[nt].ncpp.r.data(), + ucell.atoms[nt].ncpp.rab.data(), + ucell.atoms[nt].ncpp.rho_atc.data(), rhocg, rho_basis, 1); @@ -135,10 +138,12 @@ void Stress_Func::stress_cc(ModuleBase::matrix& sigma, } this->deriv_drhoc ( numeric, - GlobalC::ucell.atoms[nt].ncpp.msh, - GlobalC::ucell.atoms[nt].ncpp.r.data(), - GlobalC::ucell.atoms[nt].ncpp.rab.data(), - GlobalC::ucell.atoms[nt].ncpp.rho_atc.data(), + ucell.omega, + ucell.tpiba2, + ucell.atoms[nt].ncpp.msh, + ucell.atoms[nt].ncpp.r.data(), + ucell.atoms[nt].ncpp.rab.data(), + ucell.atoms[nt].ncpp.rho_atc.data(), rhocg, rho_basis, 0); @@ -162,7 +167,7 @@ void Stress_Func::stress_cc(ModuleBase::matrix& sigma, { const std::complex t = conj(psic[ig]) * p_sf->strucFac(nt, ig) * rhocg[rho_basis->ig2igg[ig]] - * GlobalC::ucell.tpiba * rho_basis->gcar[ig][l] * rho_basis->gcar[ig][m] / norm_g * fact; + * ucell.tpiba * rho_basis->gcar[ig][l] * rho_basis->gcar[ig][m] / norm_g * fact; // sigmacc [l][ m] += t.real(); local_sigma(l,m) += t.real(); }//end m @@ -209,6 +214,8 @@ template void Stress_Func::deriv_drhoc ( const bool &numeric, + const double& omega, + const double& tpiba2, const int mesh, const FPTYPE *r, const FPTYPE *rab, @@ -254,7 +261,7 @@ void Stress_Func::deriv_drhoc aux [ir] = r [ir] * r [ir] * rhoc [ir]; } ModuleBase::Integral::Simpson_Integral(mesh, aux.data(), rab, rhocg1); - drhocg [0] = ModuleBase::FOUR_PI * rhocg1 / GlobalC::ucell.omega; + drhocg [0] = ModuleBase::FOUR_PI * rhocg1 / omega; igl0 = 1; } else @@ -273,7 +280,7 @@ void Stress_Func::deriv_drhoc #endif for(int igl = igl0;igl< rho_basis->ngg;igl++) { - gx_arr[igl] = sqrt(rho_basis->gg_uniq[igl] * GlobalC::ucell.tpiba2); + gx_arr[igl] = sqrt(rho_basis->gg_uniq[igl] * tpiba2); } double *r_d = nullptr; @@ -298,12 +305,12 @@ void Stress_Func::deriv_drhoc if(this->device == base_device::GpuDevice) { hamilt::cal_stress_drhoc_aux_op()( - r_d,rhoc_d,gx_arr_d+igl0,rab_d,drhocg_d+igl0,mesh,igl0,rho_basis->ngg-igl0,GlobalC::ucell.omega,type); + r_d,rhoc_d,gx_arr_d+igl0,rab_d,drhocg_d+igl0,mesh,igl0,rho_basis->ngg-igl0,omega,type); syncmem_var_d2h_op()(this->cpu_ctx, this->ctx, drhocg+igl0, drhocg_d+igl0, rho_basis->ngg-igl0); } else { hamilt::cal_stress_drhoc_aux_op()( - r,rhoc,gx_arr.data()+igl0,rab,drhocg+igl0,mesh,igl0,rho_basis->ngg-igl0,GlobalC::ucell.omega,type); + r,rhoc,gx_arr.data()+igl0,rab,drhocg+igl0,mesh,igl0,rho_basis->ngg-igl0,omega,type); } delmem_var_op()(this->ctx, r_d); diff --git a/source/module_hamilt_pw/hamilt_pwdft/stress_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/stress_pw.cpp index e9cc5ded2b..33bf039a62 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/stress_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/stress_pw.cpp @@ -97,7 +97,7 @@ void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, this->stress_loc(ucell,sigmaloc, rho_basis, nlpp.vloc, p_sf, 1, pelec->charge); // nlcc - this->stress_cc(sigmaxcc, rho_basis, p_sf, 1, nlpp.numeric, pelec->charge); + this->stress_cc(sigmaxcc, rho_basis, ucell, p_sf, 1, nlpp.numeric, pelec->charge); // nonlocal this->stress_nl(sigmanl, this->pelec->wg, this->pelec->ekb, p_sf, p_kv, p_symm, wfc_basis, d_psi_in, nlpp, ucell); diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.cpp b/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.cpp index f44172c52a..9115b5a053 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.cpp +++ b/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.cpp @@ -20,7 +20,7 @@ void Sto_Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, const Stochastic_WF, Device>& stowf, const Charge* const chr, pseudopot_cell_vnl* nlpp, - const UnitCell& ucell_in) + UnitCell& ucell_in) { ModuleBase::TITLE("Sto_Stress_PW", "cal_stress"); ModuleBase::timer::tick("Sto_Stress_PW", "cal_stress"); @@ -55,7 +55,7 @@ void Sto_Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, this->stress_loc(ucell_in,sigmaloc, rho_basis, nlpp->vloc, p_sf, true, chr); // nlcc - this->stress_cc(sigmaxcc, rho_basis, p_sf, true, nlpp->numeric, chr); + this->stress_cc(sigmaxcc, rho_basis, ucell_in, p_sf, true, nlpp->numeric, chr); // nonlocal this->sto_stress_nl(sigmanl, wg, p_sf, p_symm, p_kv, wfc_basis, *nlpp, ucell_in, psi_in, stowf); diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.h b/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.h index 7b25166dac..4e67d74110 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.h +++ b/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.h @@ -26,7 +26,7 @@ class Sto_Stress_PW : public Stress_Func const Stochastic_WF, Device>& stowf, const Charge* const chr, pseudopot_cell_vnl* nlpp_in, - const UnitCell& ucell_in); + UnitCell& ucell_in); private: void sto_stress_kin(ModuleBase::matrix& sigma, diff --git a/source/module_io/input_conv.cpp b/source/module_io/input_conv.cpp index 7ce7f0d764..65ff27dbc1 100644 --- a/source/module_io/input_conv.cpp +++ b/source/module_io/input_conv.cpp @@ -170,11 +170,6 @@ void Input_Conv::Convert() ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "pseudo_dir", PARAM.inp.pseudo_dir); ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running, "orbital_dir", PARAM.inp.orbital_dir); // GlobalV::global_pseudo_type = PARAM.inp.pseudo_type; - GlobalC::ucell.setup(PARAM.inp.latname, - PARAM.inp.ntype, - PARAM.inp.lmaxmax, - PARAM.inp.init_vel, - PARAM.inp.fixed_axes); if (PARAM.inp.calculation == "relax" || PARAM.inp.calculation == "cell-relax") { diff --git a/source/module_rdmft/rdmft.h b/source/module_rdmft/rdmft.h index 423fc7b94a..bc02480637 100644 --- a/source/module_rdmft/rdmft.h +++ b/source/module_rdmft/rdmft.h @@ -99,7 +99,7 @@ class RDMFT //! update in elec-step // Or we can use rdmft_solver.wfc/occ_number directly when optimizing, so that the update_elec() function does not require parameters. - void update_elec(const UnitCell& ucell, const ModuleBase::matrix& occ_number_in, const psi::Psi& wfc_in, const Charge* charge_in = nullptr); + void update_elec(UnitCell& ucell, const ModuleBase::matrix& occ_number_in, const psi::Psi& wfc_in, const Charge* charge_in = nullptr); //! obtain the gradient of total energy with respect to occupation number and wfc double cal_E_grad_wfc_occ_num(); @@ -131,7 +131,7 @@ class RDMFT //! get the total Hamilton in k-space void cal_Hk_Hpsi(); - void update_charge(); + void update_charge(UnitCell& ucell); private: diff --git a/source/module_rdmft/rdmft_pot.cpp b/source/module_rdmft/rdmft_pot.cpp index 06d9c5a3ff..e576c17942 100644 --- a/source/module_rdmft/rdmft_pot.cpp +++ b/source/module_rdmft/rdmft_pot.cpp @@ -54,7 +54,7 @@ void RDMFT::cal_V_TV() V_ekinetic_potential = new hamilt::EkineticNew>(hsk_TV, kv->kvec_d, HR_TV, - &GlobalC::ucell, + this->ucell, orb->cutoffs(), this->gd, two_center_bundle->kinetic_orb.get()); @@ -62,7 +62,7 @@ void RDMFT::cal_V_TV() V_nonlocal = new hamilt::NonlocalNew>(hsk_TV, kv->kvec_d, HR_TV, - &GlobalC::ucell, + this->ucell, orb->cutoffs(), this->gd, two_center_bundle->overlap_orb_beta.get()); @@ -74,7 +74,7 @@ void RDMFT::cal_V_TV() kv->kvec_d, this->pelec->pot, HR_TV, - &GlobalC::ucell, + this->ucell, orb->cutoffs(), this->gd, nspin, @@ -91,7 +91,7 @@ void RDMFT::cal_V_TV() kv->kvec_d, this->pelec->pot, HR_TV, - &GlobalC::ucell, + this->ucell, orb->cutoffs(), this->gd, nspin, @@ -122,7 +122,7 @@ void RDMFT::cal_V_hartree() kv->kvec_d, this->pelec->pot, HR_hartree, - &GlobalC::ucell, + this->ucell, orb->cutoffs(), this->gd, nspin, @@ -140,7 +140,7 @@ void RDMFT::cal_V_hartree() kv->kvec_d, this->pelec->pot, HR_hartree, - &GlobalC::ucell, + this->ucell, orb->cutoffs(), this->gd, nspin, @@ -170,7 +170,7 @@ void RDMFT::cal_V_XC(const UnitCell& ucell) // elecstate::DensityMatrix DM_test(ParaV, nspin, kv->kvec_d, nk_total); // elecstate::cal_dm_psi(ParaV, wg, wfc, DM_test); - // DM_test.init_DMR(this->gd, &GlobalC::ucell); + // DM_test.init_DMR(this->gd, this->ucell); // DM_test.cal_DMR(); // // compare DM_XC and DM get in update_charge(or ABACUS) @@ -202,7 +202,7 @@ void RDMFT::cal_V_XC(const UnitCell& ucell) kv->kvec_d, this->pelec->pot, HR_dft_XC, - &GlobalC::ucell, + this->ucell, orb->cutoffs(), this->gd, nspin, @@ -222,7 +222,7 @@ void RDMFT::cal_V_XC(const UnitCell& ucell) kv->kvec_d, this->pelec->pot, HR_dft_XC, - &GlobalC::ucell, + this->ucell, orb->cutoffs(), this->gd, nspin, diff --git a/source/module_rdmft/update_state_rdmft.cpp b/source/module_rdmft/update_state_rdmft.cpp index db5f47b6da..abe56d71c3 100644 --- a/source/module_rdmft/update_state_rdmft.cpp +++ b/source/module_rdmft/update_state_rdmft.cpp @@ -47,7 +47,7 @@ void RDMFT::update_ion(UnitCell& ucell_in, template -void RDMFT::update_elec(const UnitCell& ucell, +void RDMFT::update_elec(UnitCell& ucell, const ModuleBase::matrix& occ_number_in, const psi::Psi& wfc_in, const Charge* charge_in) { @@ -71,7 +71,7 @@ void RDMFT::update_elec(const UnitCell& ucell, } // update charge - this->update_charge(); + this->update_charge(ucell); // "default" = "pbe" // if( !only_exx_type || this->cal_E_type != 1 ) @@ -91,14 +91,14 @@ void RDMFT::update_elec(const UnitCell& ucell, // this code is copying from function ElecStateLCAO::psiToRho(), in elecstate_lcao.cpp template -void RDMFT::update_charge() +void RDMFT::update_charge(UnitCell& ucell) { if( PARAM.inp.gamma_only ) { // calculate DMK and DMR elecstate::DensityMatrix DM_gamma_only(ParaV, nspin); elecstate::cal_dm_psi(ParaV, wg, wfc, DM_gamma_only); - DM_gamma_only.init_DMR(this->gd, &GlobalC::ucell); + DM_gamma_only.init_DMR(this->gd, &ucell); DM_gamma_only.cal_DMR(); for (int is = 0; is < nspin; is++) @@ -128,7 +128,7 @@ void RDMFT::update_charge() // calculate DMK and DMR elecstate::DensityMatrix DM(ParaV, nspin, kv->kvec_d, nk_total); elecstate::cal_dm_psi(ParaV, wg, wfc, DM); - DM.init_DMR(this->gd, &GlobalC::ucell); + DM.init_DMR(this->gd, &ucell); DM.cal_DMR(); for (int is = 0; is < nspin; is++) @@ -160,7 +160,7 @@ void RDMFT::update_charge() Symmetry_rho srho; for (int is = 0; is < nspin; is++) { - srho.begin(is, *(this->charge), rho_basis, GlobalC::ucell.symm); + srho.begin(is, *(this->charge), rho_basis, ucell.symm); } } From 68248c6fae824853d3598098886919a258aba6a8 Mon Sep 17 00:00:00 2001 From: Qianrui Liu <76200646+Qianruipku@users.noreply.github.com> Date: Thu, 19 Dec 2024 10:19:41 +0800 Subject: [PATCH 11/44] Refactor: remove GlobalC::Pgrid (#5740) * Refactor: remove GlobalC::Pgrid * fix compile without mpi --- source/module_elecstate/elecstate.cpp | 3 ++- source/module_elecstate/elecstate.h | 1 + .../module_elecstate/module_charge/charge.h | 5 +++- .../module_charge/charge_extra.cpp | 6 ++--- .../module_charge/charge_extra.h | 2 -- .../module_charge/charge_init.cpp | 10 ++++---- .../potentials/pot_surchem.hpp | 1 + .../test/charge_extra_test.cpp | 13 +++++++---- .../test/elecstate_base_test.cpp | 6 ++++- .../test/elecstate_pw_test.cpp | 1 + source/module_esolver/esolver_fp.cpp | 7 +++--- source/module_esolver/esolver_fp.h | 4 ++++ source/module_esolver/esolver_ks.cpp | 8 +++---- source/module_esolver/esolver_ks_pw.cpp | 23 ++++++++----------- source/module_esolver/esolver_of.cpp | 20 +++++----------- source/module_esolver/lcao_before_scf.cpp | 23 ++++++++----------- source/module_esolver/lcao_others.cpp | 8 +++++-- .../module_surchem/H_correction_pw.cpp | 3 ++- .../module_surchem/cal_pseudo.cpp | 6 +++-- .../module_surchem/surchem.h | 9 +++++++- .../module_surchem/test/cal_pseudo_test.cpp | 5 ++-- .../module_hamilt_pw/hamilt_pwdft/global.cpp | 1 - source/module_hamilt_pw/hamilt_pwdft/global.h | 2 -- .../hamilt_pwdft/structure_factor.cpp | 11 +++++---- .../hamilt_pwdft/structure_factor.h | 10 ++++++-- .../test/hsolver_supplementary_mock.h | 1 + source/module_io/get_pchg_lcao.cpp | 8 ++++--- source/module_io/get_pchg_lcao.h | 2 ++ source/module_io/get_pchg_pw.h | 6 ++--- source/module_io/get_wf_lcao.cpp | 14 ++++++----- source/module_io/get_wf_lcao.h | 4 ++++ source/module_io/write_elecstat_pot.cpp | 2 +- source/module_io/write_elf.cpp | 7 +++--- source/module_io/write_elf.h | 1 + source/module_lr/esolver_lrtd_lcao.cpp | 10 ++++---- .../test/psi_initializer_unit_test.cpp | 2 +- .../module_relax/relax_new/test/relax_test.h | 2 +- 37 files changed, 142 insertions(+), 105 deletions(-) diff --git a/source/module_elecstate/elecstate.cpp b/source/module_elecstate/elecstate.cpp index d80c80cf1b..1efcaff554 100644 --- a/source/module_elecstate/elecstate.cpp +++ b/source/module_elecstate/elecstate.cpp @@ -208,6 +208,7 @@ void ElecState::calEBand() void ElecState::init_scf(const int istep, const UnitCell& ucell, + const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucfac, const bool* numeric, ModuleSymmetry::Symmetry& symm, @@ -227,7 +228,7 @@ void ElecState::init_scf(const int istep, // choose charge density from ionic step 0. if (istep == 0) { - this->charge->init_rho(this->eferm,ucell, strucfac, symm, (const void*)this->klist, wfcpw); + this->charge->init_rho(this->eferm,ucell, pgrid, strucfac, symm, (const void*)this->klist, wfcpw); this->charge->check_rho(); // check the rho } diff --git a/source/module_elecstate/elecstate.h b/source/module_elecstate/elecstate.h index ba85850b3f..99e77f0353 100644 --- a/source/module_elecstate/elecstate.h +++ b/source/module_elecstate/elecstate.h @@ -111,6 +111,7 @@ class ElecState */ void init_scf(const int istep, const UnitCell& ucell, + const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucfac, const bool* numeric, ModuleSymmetry::Symmetry& symm, diff --git a/source/module_elecstate/module_charge/charge.h b/source/module_elecstate/module_charge/charge.h index 5f01773580..e3bc33f901 100644 --- a/source/module_elecstate/module_charge/charge.h +++ b/source/module_elecstate/module_charge/charge.h @@ -6,8 +6,9 @@ #include "module_base/global_variable.h" #include "module_base/parallel_global.h" #include "module_basis/module_pw/pw_basis.h" -#include "module_elecstate/fp_energy.h" #include "module_cell/module_symmetry/symmetry.h" +#include "module_elecstate/fp_energy.h" +#include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" //a forward declaration of UnitCell class UnitCell; @@ -43,6 +44,7 @@ class Charge double **kin_r = nullptr; // kinetic energy density in real space, for meta-GGA double **kin_r_save = nullptr; // kinetic energy density in real space, for meta-GGA // wenfei 2021-07-28 + const Parallel_Grid* pgrid = nullptr; private: //temporary double *_space_rho = nullptr, *_space_rho_save = nullptr; @@ -73,6 +75,7 @@ class Charge */ void init_rho(elecstate::efermi& eferm_iout, const UnitCell& ucell, + const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucFac, ModuleSymmetry::Symmetry& symm, const void* klist = nullptr, diff --git a/source/module_elecstate/module_charge/charge_extra.cpp b/source/module_elecstate/module_charge/charge_extra.cpp index d0e0ff1299..35b5b2a1e0 100644 --- a/source/module_elecstate/module_charge/charge_extra.cpp +++ b/source/module_elecstate/module_charge/charge_extra.cpp @@ -75,9 +75,7 @@ void Charge_Extra::Init_CE(const int& nspin, const int& natom, const int& nrxx, } void Charge_Extra::extrapolate_charge( -#ifdef __MPI Parallel_Grid* Pgrid, -#endif UnitCell& ucell, Charge* chr, Structure_Factor* sf, @@ -109,7 +107,7 @@ void Charge_Extra::extrapolate_charge( rho_extr = std::min(istep, pot_order); if(rho_extr == 0) { - sf->setup_structure_factor(&ucell, chr->rhopw); + sf->setup_structure_factor(&ucell, *Pgrid, chr->rhopw); ofs_running << " charge density from previous step !" << std::endl; return; } @@ -171,7 +169,7 @@ void Charge_Extra::extrapolate_charge( } } - sf->setup_structure_factor(&ucell, chr->rhopw); + sf->setup_structure_factor(&ucell, *Pgrid, chr->rhopw); double** rho_atom = new double*[this->nspin]; for (int is = 0; is < this->nspin; is++) { diff --git a/source/module_elecstate/module_charge/charge_extra.h b/source/module_elecstate/module_charge/charge_extra.h index 50e87c35c1..4bf1da7881 100644 --- a/source/module_elecstate/module_charge/charge_extra.h +++ b/source/module_elecstate/module_charge/charge_extra.h @@ -63,9 +63,7 @@ class Charge_Extra * @param ofs_warning the output stream */ void extrapolate_charge( -#ifdef __MPI Parallel_Grid* Pgrid, -#endif UnitCell& ucell, Charge* chr, Structure_Factor* sf, diff --git a/source/module_elecstate/module_charge/charge_init.cpp b/source/module_elecstate/module_charge/charge_init.cpp index 45769c3161..5ed8b098d1 100644 --- a/source/module_elecstate/module_charge/charge_init.cpp +++ b/source/module_elecstate/module_charge/charge_init.cpp @@ -23,6 +23,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, const UnitCell& ucell, + const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucFac, ModuleSymmetry::Symmetry& symm, const void* klist, @@ -33,7 +34,8 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, std::cout << " START CHARGE : " << PARAM.inp.init_chg << std::endl; //here we need to set the omega for the charge density set_omega(&ucell.omega); - + this->pgrid = &pgrid; + bool read_error = false; if (PARAM.inp.init_chg == "file" || PARAM.inp.init_chg == "auto") { @@ -57,7 +59,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, { std::stringstream ssc; ssc << PARAM.globalv.global_readin_dir << "SPIN" << is + 1 << "_CHG.cube"; - if (ModuleIO::read_vdata_palgrid(GlobalC::Pgrid, + if (ModuleIO::read_vdata_palgrid(pgrid, (PARAM.inp.esolver_type == "sdft" ? GlobalV::RANK_IN_STOGROUP : GlobalV::MY_RANK), GlobalV::ofs_running, ssc.str(), @@ -107,7 +109,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, GlobalV::ofs_running << " try to read kinetic energy density from file : " << ssc.str() << std::endl; // mohan update 2012-02-10, sunliang update 2023-03-09 - if (ModuleIO::read_vdata_palgrid(GlobalC::Pgrid, + if (ModuleIO::read_vdata_palgrid(pgrid, (PARAM.inp.esolver_type == "sdft" ? GlobalV::RANK_IN_STOGROUP : GlobalV::MY_RANK), GlobalV::ofs_running, ssc.str(), @@ -170,7 +172,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, // try to load from the output of `out_chg` std::stringstream ssc; ssc << PARAM.globalv.global_readin_dir << "SPIN" << is + 1 << "_CHG.cube"; - if (ModuleIO::read_vdata_palgrid(GlobalC::Pgrid, + if (ModuleIO::read_vdata_palgrid(pgrid, (PARAM.inp.esolver_type == "sdft" ? GlobalV::RANK_IN_STOGROUP : GlobalV::MY_RANK), GlobalV::ofs_running, ssc.str(), diff --git a/source/module_elecstate/potentials/pot_surchem.hpp b/source/module_elecstate/potentials/pot_surchem.hpp index f0ff3e1bc2..d548fe3865 100644 --- a/source/module_elecstate/potentials/pot_surchem.hpp +++ b/source/module_elecstate/potentials/pot_surchem.hpp @@ -40,6 +40,7 @@ class PotSurChem : public PotBase } v_eff += this->surchem_->v_correction(*ucell, + *chg->pgrid, const_cast(this->rho_basis_), v_eff.nr, chg->rho, diff --git a/source/module_elecstate/test/charge_extra_test.cpp b/source/module_elecstate/test/charge_extra_test.cpp index 1815c7a537..2e8ba6ff69 100644 --- a/source/module_elecstate/test/charge_extra_test.cpp +++ b/source/module_elecstate/test/charge_extra_test.cpp @@ -24,6 +24,8 @@ Magnetism::~Magnetism() { delete[] this->start_magnetization; } +Parallel_Grid::~Parallel_Grid(){}; + // mock functions for Charge Charge::Charge() @@ -87,7 +89,7 @@ Structure_Factor::Structure_Factor() Structure_Factor::~Structure_Factor() { } -void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const ModulePW::PW_Basis* rho_basis) +void Structure_Factor::setup_structure_factor(const UnitCell*, const Parallel_Grid&, const ModulePW::PW_Basis*) { } @@ -113,6 +115,7 @@ class ChargeExtraTest : public ::testing::Test Charge_Extra CE; UcellTestPrepare utp = UcellTestLib["Si"]; std::unique_ptr ucell; + Parallel_Grid* pgrid = nullptr; Charge charge; Structure_Factor sf; void SetUp() override @@ -183,7 +186,7 @@ TEST_F(ChargeExtraTest, ExtrapolateChargeCase1) CE.pot_order = 3; GlobalV::ofs_running.open("log"); - CE.extrapolate_charge(*ucell.get(), &charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); + CE.extrapolate_charge(pgrid, *ucell.get(), &charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); GlobalV::ofs_running.close(); // Check the results @@ -205,7 +208,7 @@ TEST_F(ChargeExtraTest, ExtrapolateChargeCase2) CE.pot_order = 3; GlobalV::ofs_running.open("log"); - CE.extrapolate_charge(*ucell.get(), &charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); + CE.extrapolate_charge(pgrid, *ucell.get(), &charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); GlobalV::ofs_running.close(); // Check the results @@ -227,7 +230,7 @@ TEST_F(ChargeExtraTest, ExtrapolateChargeCase3) CE.pot_order = 3; GlobalV::ofs_running.open("log"); - CE.extrapolate_charge(*ucell.get(), &charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); + CE.extrapolate_charge(pgrid, *ucell.get(), &charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); GlobalV::ofs_running.close(); // Check the results @@ -248,7 +251,7 @@ TEST_F(ChargeExtraTest, ExtrapolateChargeCase4) CE.istep = 3; GlobalV::ofs_running.open("log"); - CE.extrapolate_charge(*ucell.get(), &charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); + CE.extrapolate_charge(pgrid, *ucell.get(), &charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); GlobalV::ofs_running.close(); // Check the results diff --git a/source/module_elecstate/test/elecstate_base_test.cpp b/source/module_elecstate/test/elecstate_base_test.cpp index ae63d16508..02905c64ed 100644 --- a/source/module_elecstate/test/elecstate_base_test.cpp +++ b/source/module_elecstate/test/elecstate_base_test.cpp @@ -34,6 +34,8 @@ Charge::~Charge() } UnitCell::UnitCell(){} UnitCell::~UnitCell(){} +Parallel_Grid::Parallel_Grid(){}; +Parallel_Grid::~Parallel_Grid(){}; Magnetism::Magnetism(){} Magnetism::~Magnetism(){} InfoNonlocal::InfoNonlocal(){} @@ -73,6 +75,7 @@ void Charge::set_rho_core_paw() } void Charge::init_rho(elecstate::efermi&, const UnitCell&, + const Parallel_Grid&, ModuleBase::ComplexMatrix const&, ModuleSymmetry::Symmetry& symm, const void*, @@ -146,6 +149,7 @@ class ElecStateTest : public ::testing::Test protected: elecstate::MockElecState* elecstate; UnitCell ucell; + Parallel_Grid pgrid; std::string output; void SetUp() { @@ -256,7 +260,7 @@ TEST_F(ElecStateTest, InitSCF) ModuleBase::ComplexMatrix strucfac; elecstate->eferm = efermi; ModuleSymmetry::Symmetry symm; - EXPECT_NO_THROW(elecstate->init_scf(istep, ucell,strucfac, nullptr, symm)); + EXPECT_NO_THROW(elecstate->init_scf(istep, ucell, pgrid, strucfac, nullptr, symm)); // delete elecstate->pot is done in the destructor of elecstate delete charge; } diff --git a/source/module_elecstate/test/elecstate_pw_test.cpp b/source/module_elecstate/test/elecstate_pw_test.cpp index dae7ab46a4..0c7aa77aa6 100644 --- a/source/module_elecstate/test/elecstate_pw_test.cpp +++ b/source/module_elecstate/test/elecstate_pw_test.cpp @@ -141,6 +141,7 @@ void Charge::set_rho_core_paw() } void Charge::init_rho(elecstate::efermi&, const UnitCell&, + const Parallel_Grid&, ModuleBase::ComplexMatrix const&, ModuleSymmetry::Symmetry& symm, const void*, diff --git a/source/module_esolver/esolver_fp.cpp b/source/module_esolver/esolver_fp.cpp index d2c820a45a..c18e489105 100644 --- a/source/module_esolver/esolver_fp.cpp +++ b/source/module_esolver/esolver_fp.cpp @@ -159,7 +159,7 @@ void ESolver_FP::after_scf(UnitCell& ucell, const int istep) this->pw_rhod->real2recip(this->pelec->charge->rho_save[is], this->pelec->charge->rhog_save[is]); } std::string fn =PARAM.globalv.global_out_dir + "/SPIN" + std::to_string(is + 1) + "_CHG.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(Pgrid, data, is, PARAM.inp.nspin, @@ -172,7 +172,7 @@ void ESolver_FP::after_scf(UnitCell& ucell, const int istep) if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) { fn =PARAM.globalv.global_out_dir + "/SPIN" + std::to_string(is + 1) + "_TAU.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(Pgrid, this->pelec->charge->kin_r_save[is], is, PARAM.inp.nspin, @@ -209,7 +209,7 @@ void ESolver_FP::after_scf(UnitCell& ucell, const int istep) { std::string fn =PARAM.globalv.global_out_dir + "/SPIN" + std::to_string(is + 1) + "_POT.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(Pgrid, this->pelec->pot->get_effective_v(is), is, PARAM.inp.nspin, @@ -260,6 +260,7 @@ void ESolver_FP::after_scf(UnitCell& ucell, const int istep) this->pelec->charge->rho, this->pelec->charge->kin_r, this->pw_rhod, + this->Pgrid, &(ucell), PARAM.inp.out_elf[1]); } diff --git a/source/module_esolver/esolver_fp.h b/source/module_esolver/esolver_fp.h index 1f2e6cf1ec..dffa4025d1 100644 --- a/source/module_esolver/esolver_fp.h +++ b/source/module_esolver/esolver_fp.h @@ -52,8 +52,12 @@ namespace ModuleESolver //! K points in Brillouin zone K_Vectors kv; + //! Plane-wave basis set for charge density ModulePW::PW_Basis* pw_rho; + //! parallel for rho grid + Parallel_Grid Pgrid; + //! pointer to pseudopotential pseudopot_cell_vl* p_locpp = nullptr; diff --git a/source/module_esolver/esolver_ks.cpp b/source/module_esolver/esolver_ks.cpp index d5d596712b..70e01eb57a 100644 --- a/source/module_esolver/esolver_ks.cpp +++ b/source/module_esolver/esolver_ks.cpp @@ -260,7 +260,7 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para //! 10) initialize the real-space uniform grid for FFT and parallel //! distribution of plane waves - GlobalC::Pgrid.init(this->pw_rhod->nx, + Pgrid.init(this->pw_rhod->nx, this->pw_rhod->ny, this->pw_rhod->nz, this->pw_rhod->nplane, @@ -269,7 +269,7 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para pw_big->bz); //! 11) calculate the structure factor - this->sf.setup_structure_factor(&ucell, this->pw_rhod); + this->sf.setup_structure_factor(&ucell, Pgrid, this->pw_rhod); #ifdef USE_PAW if (PARAM.inp.use_paw) @@ -709,7 +709,7 @@ void ESolver_KS::iter_finish(UnitCell& ucell, const int istep, int& i data = this->pelec->charge->rho_save[is]; } std::string fn = PARAM.globalv.global_out_dir + "/tmp_SPIN" + std::to_string(is + 1) + "_CHG.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(Pgrid, data, is, PARAM.inp.nspin, @@ -722,7 +722,7 @@ void ESolver_KS::iter_finish(UnitCell& ucell, const int istep, int& i if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) { fn = PARAM.globalv.global_out_dir + "/tmp_SPIN" + std::to_string(is + 1) + "_TAU.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(Pgrid, this->pelec->charge->kin_r_save[is], is, PARAM.inp.nspin, diff --git a/source/module_esolver/esolver_ks_pw.cpp b/source/module_esolver/esolver_ks_pw.cpp index 2171948312..2fb9778e00 100644 --- a/source/module_esolver/esolver_ks_pw.cpp +++ b/source/module_esolver/esolver_ks_pw.cpp @@ -269,15 +269,12 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) if (ucell.ionic_position_updated) { this->CE.update_all_dis(ucell); - this->CE.extrapolate_charge( -#ifdef __MPI - &(GlobalC::Pgrid), -#endif - ucell, - this->pelec->charge, - &this->sf, - GlobalV::ofs_running, - GlobalV::ofs_warning); + this->CE.extrapolate_charge(&this->Pgrid, + ucell, + this->pelec->charge, + &this->sf, + GlobalV::ofs_running, + GlobalV::ofs_warning); } // init Hamilt, this should be allocated before each scf loop @@ -308,7 +305,7 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) elecstate::cal_ux(ucell); //! calculate the total local pseudopotential in real space - this->pelec->init_scf(istep, ucell,this->sf.strucFac, this->ppcell.numeric, ucell.symm, (void*)this->pw_wfc); + this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->ppcell.numeric, ucell.symm, (void*)this->pw_wfc); //! output the initial charge density if (PARAM.inp.out_chg[0] == 2) @@ -317,7 +314,7 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) { std::stringstream ss; ss << PARAM.globalv.global_out_dir << "SPIN" << is + 1 << "_CHG_INI.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(this->Pgrid, this->pelec->charge->rho[is], is, PARAM.inp.nspin, @@ -335,7 +332,7 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) { std::stringstream ss; ss << PARAM.globalv.global_out_dir << "SPIN" << is + 1 << "_POT_INI.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(this->Pgrid, this->pelec->pot->get_effective_v(is), is, PARAM.inp.nspin, @@ -703,7 +700,7 @@ void ESolver_KS_PW::after_scf(UnitCell& ucell, const int istep) this->pw_rhod, this->pw_wfc, this->ctx, - GlobalC::Pgrid, + this->Pgrid, PARAM.globalv.global_out_dir, PARAM.inp.if_separate_k); } diff --git a/source/module_esolver/esolver_of.cpp b/source/module_esolver/esolver_of.cpp index ac7d01b558..108e455276 100644 --- a/source/module_esolver/esolver_of.cpp +++ b/source/module_esolver/esolver_of.cpp @@ -100,7 +100,7 @@ void ESolver_OF::before_all_runners(UnitCell& ucell, const Input_para& inp) // initialize the real-space uniform grid for FFT and parallel // distribution of plane waves - GlobalC::Pgrid.init(pw_rho->nx, + Pgrid.init(pw_rho->nx, pw_rho->ny, pw_rho->nz, pw_rho->nplane, @@ -108,7 +108,7 @@ void ESolver_OF::before_all_runners(UnitCell& ucell, const Input_para& inp) pw_big->nbz, pw_big->bz); // mohan add 2010-07-22, update 2011-05-04 // Calculate Structure factor - sf.setup_structure_factor(&ucell, pw_rho); + sf.setup_structure_factor(&ucell, Pgrid, pw_rho); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "INIT BASIS"); // initialize local pseudopotential @@ -120,7 +120,7 @@ void ESolver_OF::before_all_runners(UnitCell& ucell, const Input_para& inp) this->init_elecstate(ucell); // calculate the total local pseudopotential in real space - this->pelec->init_scf(0, ucell,sf.strucFac, locpp.numeric, ucell.symm); // atomic_rho, v_of_rho, set_vrs + this->pelec->init_scf(0, ucell, Pgrid, sf.strucFac, locpp.numeric, ucell.symm); // atomic_rho, v_of_rho, set_vrs // liuyu move here 2023-10-09 // D in uspp need vloc, thus behind init_scf() @@ -247,18 +247,10 @@ void ESolver_OF::before_opt(const int istep, UnitCell& ucell) if (ucell.ionic_position_updated) { CE.update_all_dis(ucell); - CE.extrapolate_charge( -#ifdef __MPI - &(GlobalC::Pgrid), -#endif - ucell, - pelec->charge, - &(sf), - GlobalV::ofs_running, - GlobalV::ofs_warning); + CE.extrapolate_charge(&Pgrid, ucell, pelec->charge, &sf, GlobalV::ofs_running, GlobalV::ofs_warning); } - this->pelec->init_scf(istep,ucell, sf.strucFac, locpp.numeric, ucell.symm); + this->pelec->init_scf(istep, ucell, Pgrid, sf.strucFac, locpp.numeric, ucell.symm); // calculate ewald energy this->pelec->f_en.ewald_energy = H_Ewald_pw::compute_ewald(ucell, this->pw_rho, sf.strucFac); @@ -416,7 +408,7 @@ void ESolver_OF::update_rho() // Symmetry_rho srho; // for (int is = 0; is < PARAM.inp.nspin; is++) // { - // srho.begin(is, *(pelec->charge), this->pw_rho, GlobalC::Pgrid, ucell.symm); + // srho.begin(is, *(pelec->charge), this->pw_rho, Pgrid, ucell.symm); // for (int ibs = 0; ibs < this->pw_rho->nrxx; ++ibs) // { // this->pphi_[is][ibs] = sqrt(pelec->charge->rho[is][ibs]); diff --git a/source/module_esolver/lcao_before_scf.cpp b/source/module_esolver/lcao_before_scf.cpp index 6ce0994d44..6452c8251b 100644 --- a/source/module_esolver/lcao_before_scf.cpp +++ b/source/module_esolver/lcao_before_scf.cpp @@ -51,15 +51,12 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) if (ucell.ionic_position_updated) { this->CE.update_all_dis(ucell); - this->CE.extrapolate_charge( -#ifdef __MPI - &(GlobalC::Pgrid), -#endif - ucell, - this->pelec->charge, - &(this->sf), - GlobalV::ofs_running, - GlobalV::ofs_warning); + this->CE.extrapolate_charge(&(this->Pgrid), + ucell, + this->pelec->charge, + &(this->sf), + GlobalV::ofs_running, + GlobalV::ofs_warning); } //---------------------------------------------------------- @@ -260,7 +257,7 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) } #endif // __EXX - this->pelec->init_scf(istep, ucell,this->sf.strucFac, this->ppcell.numeric, ucell.symm); + this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->ppcell.numeric, ucell.symm); //! output the initial charge density if (PARAM.inp.out_chg[0] == 2) @@ -269,7 +266,7 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) { std::stringstream ss; ss << PARAM.globalv.global_out_dir << "SPIN" << is + 1 << "_CHG_INI.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(this->Pgrid, this->pelec->charge->rho[is], is, PARAM.inp.nspin, @@ -287,7 +284,7 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) { std::stringstream ss; ss << PARAM.globalv.global_out_dir << "SPIN" << is + 1 << "_POT_INI.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(this->Pgrid, this->pelec->pot->get_effective_v(is), is, PARAM.inp.nspin, @@ -332,7 +329,7 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) for (int is = 0; is < nspin0; is++) { std::string fn = PARAM.globalv.global_out_dir + "/SPIN" + std::to_string(is + 1) + "_CHG.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(this->Pgrid, this->pelec->charge->rho[is], is, PARAM.inp.nspin, diff --git a/source/module_esolver/lcao_others.cpp b/source/module_esolver/lcao_others.cpp index a14e9e203d..aed22e729b 100644 --- a/source/module_esolver/lcao_others.cpp +++ b/source/module_esolver/lcao_others.cpp @@ -249,7 +249,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) elecstate::cal_ux(ucell); // pelec should be initialized before these calculations - this->pelec->init_scf(istep, ucell,this->sf.strucFac, this->ppcell.numeric, ucell.symm); + this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->ppcell.numeric, ucell.symm); // self consistent calculations for electronic ground state if (cal_type == "get_pchg") { @@ -279,6 +279,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) PARAM.globalv.global_out_dir, GlobalV::ofs_warning, &ucell, + this->Pgrid, &this->gd, this->kv); } @@ -308,10 +309,11 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) PARAM.globalv.global_out_dir, GlobalV::ofs_warning, &ucell, + this->Pgrid, &this->gd, this->kv, PARAM.inp.if_separate_k, - &GlobalC::Pgrid, + &this->Pgrid, this->pelec->charge->ngmc); } std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "getting partial charge"); @@ -327,6 +329,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) this->pw_rhod, this->pw_wfc, this->pw_big, + this->Pgrid, this->pv, this->GG, PARAM.inp.out_wfc_pw, @@ -348,6 +351,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) this->pw_rhod, this->pw_wfc, this->pw_big, + this->Pgrid, this->pv, this->GK, PARAM.inp.out_wfc_pw, diff --git a/source/module_hamilt_general/module_surchem/H_correction_pw.cpp b/source/module_hamilt_general/module_surchem/H_correction_pw.cpp index 701695587e..3d97bc9995 100644 --- a/source/module_hamilt_general/module_surchem/H_correction_pw.cpp +++ b/source/module_hamilt_general/module_surchem/H_correction_pw.cpp @@ -7,6 +7,7 @@ #include "surchem.h" ModuleBase::matrix surchem::v_correction(const UnitCell& cell, + const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis, const int& nspin, const double* const* const rho, @@ -35,7 +36,7 @@ ModuleBase::matrix surchem::v_correction(const UnitCell& cell, cal_totn(cell, rho_basis, Porter_g, N, TOTN, vlocal); - cal_pseudo(cell, rho_basis, Porter_g, PS_TOTN, sf); + cal_pseudo(cell, pgrid, rho_basis, Porter_g, PS_TOTN, sf); ModuleBase::matrix v(nspin, rho_basis->nrxx); diff --git a/source/module_hamilt_general/module_surchem/cal_pseudo.cpp b/source/module_hamilt_general/module_surchem/cal_pseudo.cpp index bd68edb7b9..7ff5bb507c 100644 --- a/source/module_hamilt_general/module_surchem/cal_pseudo.cpp +++ b/source/module_hamilt_general/module_surchem/cal_pseudo.cpp @@ -4,11 +4,12 @@ // atom_in surchem::GetAtom; void surchem::gauss_charge(const UnitCell& cell, + const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis, complex* N, Structure_Factor* sf) { - sf->setup_structure_factor(&cell, rho_basis); // call strucFac(ntype,ngmc) + sf->setup_structure_factor(&cell, pgrid, rho_basis); // call strucFac(ntype,ngmc) for (int it = 0; it < cell.ntype; it++) { double RCS = GetAtom.atom_RCS[cell.atoms[it].ncpp.psd]; @@ -36,6 +37,7 @@ void surchem::gauss_charge(const UnitCell& cell, } void surchem::cal_pseudo(const UnitCell& cell, + const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis, const complex* Porter_g, complex* PS_TOTN, @@ -45,7 +47,7 @@ void surchem::cal_pseudo(const UnitCell& cell, ModuleBase::GlobalFunc::ZEROS(N, rho_basis->npw); ModuleBase::GlobalFunc::ZEROS(PS_TOTN, rho_basis->npw); - gauss_charge(cell, rho_basis, N, sf); + gauss_charge(cell, pgrid, rho_basis, N, sf); for (int ig = 0; ig < rho_basis->npw; ig++) { diff --git a/source/module_hamilt_general/module_surchem/surchem.h b/source/module_hamilt_general/module_surchem/surchem.h index 091a14ddec..cb69735cd1 100644 --- a/source/module_hamilt_general/module_surchem/surchem.h +++ b/source/module_hamilt_general/module_surchem/surchem.h @@ -8,6 +8,7 @@ #include "module_base/parallel_reduce.h" #include "module_basis/module_pw/pw_basis.h" #include "module_cell/unitcell.h" +#include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" #include "module_hamilt_pw/hamilt_pwdft/structure_factor.h" class surchem @@ -37,12 +38,17 @@ class surchem void cal_epsilon(const ModulePW::PW_Basis* rho_basis, const double* PS_TOTN_real, double* epsilon, double* epsilon0); void cal_pseudo(const UnitCell& cell, + const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis, const complex* Porter_g, complex* PS_TOTN, Structure_Factor* sf); - void gauss_charge(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, complex* N, Structure_Factor* sf); + void gauss_charge(const UnitCell& cell, + const Parallel_Grid& pgrid, + const ModulePW::PW_Basis* rho_basis, + complex* N, + Structure_Factor* sf); void cal_totn(const UnitCell& cell, const ModulePW::PW_Basis* rho_basis, @@ -97,6 +103,7 @@ class surchem complex* lp); ModuleBase::matrix v_correction(const UnitCell& cell, + const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis, const int& nspin, const double* const* const rho, diff --git a/source/module_hamilt_general/module_surchem/test/cal_pseudo_test.cpp b/source/module_hamilt_general/module_surchem/test/cal_pseudo_test.cpp index 3d63180d9b..230726cfdb 100644 --- a/source/module_hamilt_general/module_surchem/test/cal_pseudo_test.cpp +++ b/source/module_hamilt_general/module_surchem/test/cal_pseudo_test.cpp @@ -27,6 +27,7 @@ class cal_pseudo_test : public testing::Test protected: surchem solvent_model; UnitCell ucell; + Parallel_Grid pgrid; }; TEST_F(cal_pseudo_test, gauss_charge) @@ -76,7 +77,7 @@ TEST_F(cal_pseudo_test, gauss_charge) Structure_Factor sf; sf.nbspline = -1; - solvent_model.gauss_charge(ucell, GlobalC::rhopw, N, &sf); + solvent_model.gauss_charge(ucell, pgrid, GlobalC::rhopw, N, &sf); EXPECT_NEAR(N[14].real(), 0.002, 1e-9); EXPECT_NEAR(N[16].real(), -0.001573534, 1e-9); @@ -136,7 +137,7 @@ TEST_F(cal_pseudo_test, cal_pseudo) } complex* PS_TOTN = new complex[npw]; - solvent_model.cal_pseudo(ucell, GlobalC::rhopw, Porter_g, PS_TOTN, &sf); + solvent_model.cal_pseudo(ucell, pgrid, GlobalC::rhopw, Porter_g, PS_TOTN, &sf); EXPECT_NEAR(PS_TOTN[16].real(), 0.098426466, 1e-9); EXPECT_NEAR(PS_TOTN[14].real(), 0.102, 1e-9); diff --git a/source/module_hamilt_pw/hamilt_pwdft/global.cpp b/source/module_hamilt_pw/hamilt_pwdft/global.cpp index cd2568792d..ae480bd49f 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/global.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/global.cpp @@ -8,7 +8,6 @@ namespace GlobalC Exx_Info exx_info; #endif UnitCell ucell; -Parallel_Grid Pgrid; //mohan add 2010-06-06 Parallel_Kpoints Pkpoints; // mohan add 2010-06-07 Restart restart; // Peize Lin add 2020.04.04 } diff --git a/source/module_hamilt_pw/hamilt_pwdft/global.h b/source/module_hamilt_pw/hamilt_pwdft/global.h index 212e1e51c4..4a00fd5f12 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/global.h +++ b/source/module_hamilt_pw/hamilt_pwdft/global.h @@ -262,10 +262,8 @@ namespace GlobalC #include "module_cell/parallel_kpoints.h" #include "module_cell/unitcell.h" -#include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" namespace GlobalC { -extern Parallel_Grid Pgrid; extern Parallel_Kpoints Pkpoints; extern Restart restart; // Peize Lin add 2020.04.04 } // namespace GlobalC diff --git a/source/module_hamilt_pw/hamilt_pwdft/structure_factor.cpp b/source/module_hamilt_pw/hamilt_pwdft/structure_factor.cpp index 770a4184e2..24dcbe27ce 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/structure_factor.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/structure_factor.cpp @@ -56,7 +56,7 @@ void Structure_Factor::set(const ModulePW::PW_Basis* rho_basis_in, const int& nb // Peize Lin optimize and add OpenMP 2021.04.01 // Calculate structure factor -void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const ModulePW::PW_Basis* rho_basis) +void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Parallel_Grid& pgrid, const ModulePW::PW_Basis* rho_basis) { ModuleBase::TITLE("PW_Basis","setup_structure_factor"); ModuleBase::timer::tick("PW_Basis","setup_struc_factor"); @@ -76,7 +76,7 @@ void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Modul if(usebspline) { nbspline = int((nbspline+1)/2)*2; // nbspline must be a positive even number. - this->bspline_sf(nbspline,Ucell, rho_basis); + this->bspline_sf(nbspline, Ucell, pgrid, rho_basis); } else { @@ -194,7 +194,10 @@ void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Modul // 1. Use "r2c" fft // 2. Add parallel algorithm for fftw or na loop // -void Structure_Factor::bspline_sf(const int norder, const UnitCell* Ucell, const ModulePW::PW_Basis* rho_basis) +void Structure_Factor::bspline_sf(const int norder, + const UnitCell* Ucell, + const Parallel_Grid& pgrid, + const ModulePW::PW_Basis* rho_basis) { double *r = new double [rho_basis->nxyz]; double *tmpr = new double[rho_basis->nrxx]; @@ -267,7 +270,7 @@ void Structure_Factor::bspline_sf(const int norder, const UnitCell* Ucell, const } #ifdef __MPI - GlobalC::Pgrid.zpiece_to_all(zpiece, iz, tmpr); + pgrid.zpiece_to_all(zpiece, iz, tmpr); #endif } diff --git a/source/module_hamilt_pw/hamilt_pwdft/structure_factor.h b/source/module_hamilt_pw/hamilt_pwdft/structure_factor.h index 7018e320b7..b77a69adb5 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/structure_factor.h +++ b/source/module_hamilt_pw/hamilt_pwdft/structure_factor.h @@ -4,6 +4,7 @@ #include "module_base/complexmatrix.h" #include "module_basis/module_pw/pw_basis_k.h" #include "module_cell/unitcell.h" +#include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" #include "module_psi/psi.h" class Structure_Factor @@ -22,11 +23,16 @@ class Structure_Factor // structure factor (ntype, ngmc) ModuleBase::ComplexMatrix strucFac; - void setup_structure_factor(const UnitCell* Ucell, const ModulePW::PW_Basis* rho_basis); // Calculate structure factors + void setup_structure_factor(const UnitCell* Ucell, + const Parallel_Grid& pgrid, + const ModulePW::PW_Basis* rho_basis); // Calculate structure factors + + /// calculate structure factors through Cardinal B-spline interpolation void bspline_sf( const int, const UnitCell* Ucell, - const ModulePW::PW_Basis* rho_basis); // calculate structure factors through Cardinal B-spline interpolation + const Parallel_Grid& pgrid, + const ModulePW::PW_Basis* rho_basis); void bsplinecoef(std::complex *b1, std::complex *b2, std::complex *b3, const int nx, const int ny, const int nz, const int norder); diff --git a/source/module_hsolver/test/hsolver_supplementary_mock.h b/source/module_hsolver/test/hsolver_supplementary_mock.h index 3ec0817825..66e49fb894 100644 --- a/source/module_hsolver/test/hsolver_supplementary_mock.h +++ b/source/module_hsolver/test/hsolver_supplementary_mock.h @@ -44,6 +44,7 @@ void ElecState::print_eigenvalue(std::ofstream& ofs) void ElecState::init_scf(const int istep, const UnitCell& ucell, + const Parallel_Grid& pgrid, const ModuleBase::ComplexMatrix& strucfac, const bool*, ModuleSymmetry::Symmetry&, diff --git a/source/module_io/get_pchg_lcao.cpp b/source/module_io/get_pchg_lcao.cpp index 60898489bd..6e069fd017 100644 --- a/source/module_io/get_pchg_lcao.cpp +++ b/source/module_io/get_pchg_lcao.cpp @@ -49,6 +49,7 @@ void IState_Charge::begin(Gint_Gamma& gg, const std::string& global_out_dir, std::ofstream& ofs_warning, const UnitCell* ucell_in, + const Parallel_Grid& pgrid, const Grid_Driver* GridD_in, const K_Vectors& kv) { @@ -130,7 +131,7 @@ void IState_Charge::begin(Gint_Gamma& gg, // Use a const vector to store efermi for all spins, replace the original implementation: // const double ef_tmp = pelec->eferm.get_efval(is); double ef_spin = ef_all_spin[is]; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, rho_save[is].data(), is, nspin, @@ -172,6 +173,7 @@ void IState_Charge::begin(Gint_k& gk, const std::string& global_out_dir, std::ofstream& ofs_warning, UnitCell* ucell_in, + const Parallel_Grid& pgrid, const Grid_Driver* GridD_in, const K_Vectors& kv, const bool if_separate_k, @@ -256,7 +258,7 @@ void IState_Charge::begin(Gint_k& gk, ssc << global_out_dir << "BAND" << ib + 1 << "_K" << ik + 1 << "_SPIN" << is + 1 << "_CHG.cube"; double ef_spin = ef_all_spin[is]; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, rho_save[is].data(), is, nspin, @@ -315,7 +317,7 @@ void IState_Charge::begin(Gint_k& gk, ssc << global_out_dir << "BAND" << ib + 1 << "_SPIN" << is + 1 << "_CHG.cube"; double ef_spin = ef_all_spin[is]; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, rho_save[is].data(), is, nspin, diff --git a/source/module_io/get_pchg_lcao.h b/source/module_io/get_pchg_lcao.h index 031867dadd..208c3f027c 100644 --- a/source/module_io/get_pchg_lcao.h +++ b/source/module_io/get_pchg_lcao.h @@ -52,6 +52,7 @@ class IState_Charge const std::string& global_out_dir, std::ofstream& ofs_warning, const UnitCell* ucell_in, + const Parallel_Grid& pgrid, const Grid_Driver* GridD_in, const K_Vectors& kv); @@ -80,6 +81,7 @@ class IState_Charge const std::string& global_out_dir, std::ofstream& ofs_warning, UnitCell* ucell_in, + const Parallel_Grid& pgrid, const Grid_Driver* GridD_in, const K_Vectors& kv, const bool if_separate_k, diff --git a/source/module_io/get_pchg_pw.h b/source/module_io/get_pchg_pw.h index e7ba789ede..58f82f4a9c 100644 --- a/source/module_io/get_pchg_pw.h +++ b/source/module_io/get_pchg_pw.h @@ -36,7 +36,7 @@ void get_pchg_pw(const std::vector& bands_to_print, const ModulePW::PW_Basis* pw_rhod, const ModulePW::PW_Basis_K* pw_wfc, const Device* ctx, - Parallel_Grid& Pgrid, + const Parallel_Grid& pgrid, const std::string& global_out_dir, const bool if_separate_k) { @@ -118,7 +118,7 @@ void get_pchg_pw(const std::vector& bands_to_print, ssc << global_out_dir << "BAND" << ib + 1 << "_K" << ik % (nks / nspin) + 1 << "_SPIN" << spin_index + 1 << "_CHG.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, rho_band[spin_index].data(), spin_index, nspin, @@ -186,7 +186,7 @@ void get_pchg_pw(const std::vector& bands_to_print, std::stringstream ssc; ssc << global_out_dir << "BAND" << ib + 1 << "_SPIN" << is + 1 << "_CHG.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, rho_band[is].data(), is, nspin, diff --git a/source/module_io/get_wf_lcao.cpp b/source/module_io/get_wf_lcao.cpp index 7197bb8292..aa79677c32 100644 --- a/source/module_io/get_wf_lcao.cpp +++ b/source/module_io/get_wf_lcao.cpp @@ -24,6 +24,7 @@ void IState_Envelope::begin(const UnitCell& ucell, const ModulePW::PW_Basis* pw_rhod, const ModulePW::PW_Basis_K* pw_wfc, const ModulePW::PW_Basis_Big* pw_big, + const Parallel_Grid& pgrid, const Parallel_Orbitals& para_orb, Gint_Gamma& gg, const int& out_wfc_pw, @@ -122,7 +123,7 @@ void IState_Envelope::begin(const UnitCell& ucell, ss << global_out_dir << "BAND" << ib + 1 << "_GAMMA" << "_SPIN" << is + 1 << "_ENV.cube"; const double ef_tmp = this->pes_->eferm.get_efval(is); - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, pes_->charge->rho_save[is], is, nspin, @@ -204,7 +205,7 @@ void IState_Envelope::begin(const UnitCell& 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(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, wfc_real.data(), is, nspin, @@ -216,7 +217,7 @@ void IState_Envelope::begin(const UnitCell& 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(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, wfc_imag.data(), is, nspin, @@ -259,6 +260,7 @@ void IState_Envelope::begin(const UnitCell& ucell, const ModulePW::PW_Basis* pw_rhod, const ModulePW::PW_Basis_K* pw_wfc, const ModulePW::PW_Basis_Big* pw_big, + const Parallel_Grid& pgrid, const Parallel_Orbitals& para_orb, Gint_k& gk, const int& out_wf, @@ -356,7 +358,7 @@ void IState_Envelope::begin(const UnitCell& ucell, ss << global_out_dir << "BAND" << ib + 1 << "_k_" << ik + 1 << "_s_" << ispin + 1 << "_ENV.cube"; const double ef_tmp = this->pes_->eferm.get_efval(ispin); - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, pes_->charge->rho[ispin], ispin, nspin, @@ -424,7 +426,7 @@ void IState_Envelope::begin(const UnitCell& ucell, ss_real << global_out_dir << "BAND" << ib + 1 << "_k_" << ik + 1 << "_s_" << ispin + 1 << "_REAL.cube"; const double ef_tmp = this->pes_->eferm.get_efval(ispin); - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, wfc_real.data(), ispin, nspin, @@ -437,7 +439,7 @@ void IState_Envelope::begin(const UnitCell& ucell, std::stringstream ss_imag; ss_imag << global_out_dir << "BAND" << ib + 1 << "_k_" << ik + 1 << "_s_" << ispin + 1 << "_IMAG.cube"; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, wfc_imag.data(), ispin, nspin, diff --git a/source/module_io/get_wf_lcao.h b/source/module_io/get_wf_lcao.h index df5ed1e735..27f8d9f7a3 100644 --- a/source/module_io/get_wf_lcao.h +++ b/source/module_io/get_wf_lcao.h @@ -22,6 +22,7 @@ class IState_Envelope const ModulePW::PW_Basis* pw_rhod, const ModulePW::PW_Basis_K* pw_wfc, const ModulePW::PW_Basis_Big* pw_big, + const Parallel_Grid& pgrid, const Parallel_Orbitals& para_orb, Gint_Gamma& gg, const int& out_wfc_pw, @@ -42,6 +43,7 @@ class IState_Envelope const ModulePW::PW_Basis* pw_rhod, const ModulePW::PW_Basis_K* pw_wfc, const ModulePW::PW_Basis_Big* pw_big, + const Parallel_Grid& pgrid, const Parallel_Orbitals& para_orb, Gint_k& gg, const int& out_wfc_pw, @@ -65,6 +67,7 @@ class IState_Envelope const ModulePW::PW_Basis* pw_rhod, const ModulePW::PW_Basis_K* pw_wfc, const ModulePW::PW_Basis_Big* pw_big, + const Parallel_Grid& pgrid, const Parallel_Orbitals& para_orb, Gint_k& gk, const int& out_wfc_pw, @@ -85,6 +88,7 @@ class IState_Envelope const ModulePW::PW_Basis* pw_rhod, const ModulePW::PW_Basis_K* pw_wfc, const ModulePW::PW_Basis_Big* pw_big, + const Parallel_Grid& pgrid, const Parallel_Orbitals& para_orb, Gint_Gamma& gk, const int& out_wfc_pw, diff --git a/source/module_io/write_elecstat_pot.cpp b/source/module_io/write_elecstat_pot.cpp index 6f9fb42a57..8997732a0b 100644 --- a/source/module_io/write_elecstat_pot.cpp +++ b/source/module_io/write_elecstat_pot.cpp @@ -94,7 +94,7 @@ void write_elecstat_pot( double ef_tmp = 0.0; int out_fermi = 0; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(*chr->pgrid, v_elecstat.data(), is, nspin, diff --git a/source/module_io/write_elf.cpp b/source/module_io/write_elf.cpp index a50063c395..f355107f7c 100644 --- a/source/module_io/write_elf.cpp +++ b/source/module_io/write_elf.cpp @@ -15,6 +15,7 @@ void write_elf( const double* const* rho, const double* const* tau, ModulePW::PW_Basis* rho_basis, + const Parallel_Grid& pgrid, const UnitCell* ucell_, const int& precision) { @@ -89,7 +90,7 @@ void write_elf( std::string fn = out_dir + "/ELF.cube"; int is = -1; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, elf[0].data(), is, nspin, @@ -107,7 +108,7 @@ void write_elf( std::string fn_temp = out_dir + "/ELF_SPIN" + std::to_string(is + 1) + ".cube"; int ispin = is + 1; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, elf[is].data(), ispin, nspin, @@ -128,7 +129,7 @@ void write_elf( std::string fn = out_dir + "/ELF.cube"; int is = -1; - ModuleIO::write_vdata_palgrid(GlobalC::Pgrid, + ModuleIO::write_vdata_palgrid(pgrid, elf_tot.data(), is, nspin, diff --git a/source/module_io/write_elf.h b/source/module_io/write_elf.h index d122e4e700..93e679bbe8 100644 --- a/source/module_io/write_elf.h +++ b/source/module_io/write_elf.h @@ -18,6 +18,7 @@ void write_elf( const double* const* rho, const double* const* tau, ModulePW::PW_Basis* rho_basis, + const Parallel_Grid& pgrid, const UnitCell* ucell_, const int& precision); } diff --git a/source/module_lr/esolver_lrtd_lcao.cpp b/source/module_lr/esolver_lrtd_lcao.cpp index 7b362242fe..38fb300594 100644 --- a/source/module_lr/esolver_lrtd_lcao.cpp +++ b/source/module_lr/esolver_lrtd_lcao.cpp @@ -308,7 +308,7 @@ LR::ESolver_LR::ESolver_LR(const Input_para& inp, UnitCell& ucell) : inpu this->pelec = new elecstate::ElecState(); // read the ground state charge density and calculate xc kernel - GlobalC::Pgrid.init(this->pw_rho->nx, + Pgrid.init(this->pw_rho->nx, this->pw_rho->ny, this->pw_rho->nz, this->pw_rho->nplane, @@ -642,11 +642,11 @@ void LR::ESolver_LR::init_pot(const Charge& chg_gs) { using ST = PotHxcLR::SpinType; case 1: - this->pot[0] = std::make_shared(xc_kernel, *this->pw_rho, ucell, chg_gs, GlobalC::Pgrid, ST::S1, input.lr_init_xc_kernel); + this->pot[0] = std::make_shared(xc_kernel, *this->pw_rho, ucell, chg_gs, Pgrid, ST::S1, input.lr_init_xc_kernel); break; case 2: - this->pot[0] = std::make_shared(xc_kernel, *this->pw_rho, ucell, chg_gs, GlobalC::Pgrid, openshell ? ST::S2_updown : ST::S2_singlet, input.lr_init_xc_kernel); - this->pot[1] = std::make_shared(xc_kernel, *this->pw_rho, ucell, chg_gs, GlobalC::Pgrid, openshell ? ST::S2_updown : ST::S2_triplet, input.lr_init_xc_kernel); + this->pot[0] = std::make_shared(xc_kernel, *this->pw_rho, ucell, chg_gs, Pgrid, openshell ? ST::S2_updown : ST::S2_singlet, input.lr_init_xc_kernel); + this->pot[1] = std::make_shared(xc_kernel, *this->pw_rho, ucell, chg_gs, Pgrid, openshell ? ST::S2_updown : ST::S2_triplet, input.lr_init_xc_kernel); break; default: throw std::invalid_argument("ESolver_LR: nspin must be 1 or 2"); @@ -693,7 +693,7 @@ void LR::ESolver_LR::read_ks_chg(Charge& chg_gs) ssc << PARAM.globalv.global_readin_dir << "SPIN" << is + 1 << "_CHG.cube"; GlobalV::ofs_running << ssc.str() << std::endl; double ef; - if (ModuleIO::read_vdata_palgrid(GlobalC::Pgrid, + if (ModuleIO::read_vdata_palgrid(Pgrid, GlobalV::MY_RANK, GlobalV::ofs_running, ssc.str(), diff --git a/source/module_psi/test/psi_initializer_unit_test.cpp b/source/module_psi/test/psi_initializer_unit_test.cpp index bad2bfcca0..22f970a620 100644 --- a/source/module_psi/test/psi_initializer_unit_test.cpp +++ b/source/module_psi/test/psi_initializer_unit_test.cpp @@ -79,7 +79,7 @@ InfoNonlocal::~InfoNonlocal() {} #endif Structure_Factor::Structure_Factor() {} Structure_Factor::~Structure_Factor() {} -void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const ModulePW::PW_Basis* rho_basis) {} +void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Parallel_Grid&, const ModulePW::PW_Basis* rho_basis) {} std::complex* Structure_Factor::get_sk(int ik, int it, int ia, ModulePW::PW_Basis_K const*wfc_basis) const { int npw = wfc_basis->npwk[ik]; diff --git a/source/module_relax/relax_new/test/relax_test.h b/source/module_relax/relax_new/test/relax_test.h index 2014398210..9516cd2edc 100644 --- a/source/module_relax/relax_new/test/relax_test.h +++ b/source/module_relax/relax_new/test/relax_test.h @@ -54,4 +54,4 @@ void ModuleSymmetry::Symmetry::symmetrize_mat3(ModuleBase::matrix& sigma, const void ModuleSymmetry::Symmetry::symmetrize_vec3_nat(double* v)const {}; Structure_Factor::Structure_Factor() {}; Structure_Factor::~Structure_Factor(){}; -void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const ModulePW::PW_Basis* rho_basis){}; \ No newline at end of file +void Structure_Factor::setup_structure_factor(const UnitCell* Ucell, const Parallel_Grid&, const ModulePW::PW_Basis* rho_basis){}; \ No newline at end of file From 38cef80505b8bc7b6a4c2025e12b1933b002b7b3 Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Thu, 19 Dec 2024 17:08:38 +0800 Subject: [PATCH 12/44] Refactor: split pseudopot_cell_vl and pseudopot_cell_vnl (#5743) * Refactor: esolver_lj and esolver_dp * Refactor: split pseudopot_cell_vl and pseudopot_cell_vnl * Refactor: add head files --- source/module_cell/test/klist_test.cpp | 3 +- source/module_cell/test/klist_test_para.cpp | 1 + .../test/elecstate_pw_test.cpp | 1 + source/module_esolver/cell_dependency.h | 20 --- source/module_esolver/esolver_dp.cpp | 7 +- source/module_esolver/esolver_dp.h | 3 - source/module_esolver/esolver_fp.cpp | 2 +- source/module_esolver/esolver_fp.h | 93 +++++++------- source/module_esolver/esolver_ks.cpp | 1 - source/module_esolver/esolver_ks_lcao.cpp | 10 +- source/module_esolver/esolver_ks_lcaopw.cpp | 2 +- source/module_esolver/esolver_ks_pw.cpp | 116 +++++++++--------- source/module_esolver/esolver_lj.cpp | 28 ++--- source/module_esolver/esolver_lj.h | 18 +-- source/module_esolver/esolver_of.cpp | 1 - source/module_esolver/esolver_of.h | 2 - source/module_esolver/esolver_sdft_pw.cpp | 2 + source/module_esolver/lcao_before_scf.cpp | 4 +- source/module_esolver/lcao_others.cpp | 2 +- .../module_esolver/test/esolver_dp_test.cpp | 2 - .../hamilt_lcaodft/FORCE_STRESS.cpp | 22 ++-- .../hamilt_lcaodft/FORCE_STRESS.h | 6 +- .../hamilt_ofdft/of_stress_pw.h | 1 + .../module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h | 3 +- source/module_hamilt_pw/hamilt_pwdft/forces.h | 1 + .../hamilt_pwdft/stress_pw.cpp | 15 +-- .../module_hamilt_pw/hamilt_pwdft/stress_pw.h | 2 + .../hamilt_stodft/sto_forces.cpp | 7 +- .../hamilt_stodft/sto_forces.h | 1 + .../hamilt_stodft/sto_stress_pw.cpp | 23 ++-- .../hamilt_stodft/sto_stress_pw.h | 6 +- source/module_io/test/for_testing_klist.h | 14 +-- source/module_md/test/lj_pot_test.cpp | 21 ++-- .../test/psi_initializer_unit_test.cpp | 6 +- 34 files changed, 218 insertions(+), 228 deletions(-) delete mode 100644 source/module_esolver/cell_dependency.h diff --git a/source/module_cell/test/klist_test.cpp b/source/module_cell/test/klist_test.cpp index 9e49e15d39..0588979e52 100644 --- a/source/module_cell/test/klist_test.cpp +++ b/source/module_cell/test/klist_test.cpp @@ -3,7 +3,6 @@ #include #include #define private public -#include "module_parameter/parameter.h" #include "module_basis/module_ao/ORB_gaunt_table.h" #include "module_cell/atom_pseudo.h" #include "module_cell/atom_spec.h" @@ -13,9 +12,11 @@ #include "module_cell/setup_nonlocal.h" #include "module_cell/unitcell.h" #include "module_elecstate/magnetism.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" #include "module_io/berryphase.h" +#include "module_parameter/parameter.h" #undef private #include "module_base/mathzone.h" #include "module_base/parallel_global.h" diff --git a/source/module_cell/test/klist_test_para.cpp b/source/module_cell/test/klist_test_para.cpp index 2bde0b12df..3bd41c85a6 100644 --- a/source/module_cell/test/klist_test_para.cpp +++ b/source/module_cell/test/klist_test_para.cpp @@ -19,6 +19,7 @@ #include "module_cell/setup_nonlocal.h" #include "module_cell/unitcell.h" #include "module_elecstate/magnetism.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" #include "module_io/berryphase.h" diff --git a/source/module_elecstate/test/elecstate_pw_test.cpp b/source/module_elecstate/test/elecstate_pw_test.cpp index 0c7aa77aa6..1ab7273721 100644 --- a/source/module_elecstate/test/elecstate_pw_test.cpp +++ b/source/module_elecstate/test/elecstate_pw_test.cpp @@ -7,6 +7,7 @@ #undef private #define protected public #include "module_elecstate/elecstate_pw.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" #undef protected // mock functions for testing namespace elecstate diff --git a/source/module_esolver/cell_dependency.h b/source/module_esolver/cell_dependency.h deleted file mode 100644 index 0610b9f33d..0000000000 --- a/source/module_esolver/cell_dependency.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef CELL_DEPENDENCY -#define CELL_DEPENDENCY - -#include "module_cell/module_neighbor/sltk_atom_arrange.h" -#include "module_hamilt_lcao/hamilt_lcaodft/record_adj.h" -#include "module_lr/utils/lr_util.hpp" - -#include - -class Cell_Dependency -{ - public: - Cell_Dependency() {}; - ~Cell_Dependency() {}; - - Record_adj ra; - Grid_Driver grid_d; -}; - -#endif // CELL_DEPENDENCY diff --git a/source/module_esolver/esolver_dp.cpp b/source/module_esolver/esolver_dp.cpp index 9a1e4d52d0..de33811fae 100644 --- a/source/module_esolver/esolver_dp.cpp +++ b/source/module_esolver/esolver_dp.cpp @@ -33,7 +33,6 @@ namespace ModuleESolver void ESolver_DP::before_all_runners(UnitCell& ucell, const Input_para& inp) { - ucell_ = &ucell; dp_potential = 0; dp_force.create(ucell.nat, 3); dp_virial.create(3, 3); @@ -43,9 +42,7 @@ void ESolver_DP::before_all_runners(UnitCell& ucell, const Input_para& inp) "# Generated by ABACUS ModuleIO::CifParser", "data_?"); - cell.resize(9); atype.resize(ucell.nat); - coord.resize(3 * ucell.nat); rescaling = inp.mdp.dp_rescaling; fparam = inp.mdp.dp_fparam; @@ -62,6 +59,7 @@ void ESolver_DP::runner(UnitCell& ucell, const int istep) ModuleBase::TITLE("ESolver_DP", "runner"); ModuleBase::timer::tick("ESolver_DP", "runner"); + std::vector cell(9, 0.0); cell[0] = ucell.latvec.e11 * ucell.lat0_angstrom; cell[1] = ucell.latvec.e12 * ucell.lat0_angstrom; cell[2] = ucell.latvec.e13 * ucell.lat0_angstrom; @@ -72,6 +70,7 @@ void ESolver_DP::runner(UnitCell& ucell, const int istep) cell[7] = ucell.latvec.e32 * ucell.lat0_angstrom; cell[8] = ucell.latvec.e33 * ucell.lat0_angstrom; + std::vector coord(3 * ucell.nat, 0.0); int iat = 0; for (int it = 0; it < ucell.ntype; ++it) { @@ -130,7 +129,7 @@ double ESolver_DP::cal_energy() void ESolver_DP::cal_force(UnitCell& ucell, ModuleBase::matrix& force) { force = dp_force; - ModuleIO::print_force(GlobalV::ofs_running, *ucell_, "TOTAL-FORCE (eV/Angstrom)", force, false); + ModuleIO::print_force(GlobalV::ofs_running, ucell, "TOTAL-FORCE (eV/Angstrom)", force, false); } void ESolver_DP::cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) diff --git a/source/module_esolver/esolver_dp.h b/source/module_esolver/esolver_dp.h index 5b59e8f442..405bae4446 100644 --- a/source/module_esolver/esolver_dp.h +++ b/source/module_esolver/esolver_dp.h @@ -108,16 +108,13 @@ class ESolver_DP : public ESolver */ std::string dp_file; ///< directory of DP model file - std::vector cell = {}; ///< lattice vectors std::vector atype = {}; ///< atom type corresponding to DP model - std::vector coord = {}; ///< atomic positions std::vector fparam = {}; ///< frame parameter for dp potential: dim_fparam std::vector aparam = {}; ///< atomic parameter for dp potential: natoms x dim_aparam double rescaling = 1.0; ///< rescaling factor for DP model double dp_potential = 0.0; ///< computed potential energy ModuleBase::matrix dp_force; ///< computed atomic forces ModuleBase::matrix dp_virial; ///< computed lattice virials - UnitCell* ucell_; ///< pointer to the unit cell object }; } // namespace ModuleESolver diff --git a/source/module_esolver/esolver_fp.cpp b/source/module_esolver/esolver_fp.cpp index c18e489105..4d057a2576 100644 --- a/source/module_esolver/esolver_fp.cpp +++ b/source/module_esolver/esolver_fp.cpp @@ -286,7 +286,7 @@ void ESolver_FP::before_scf(UnitCell& ucell, const int istep) this->pw_rhod->collect_uniqgg(); } - this->p_locpp->init_vloc(ucell,this->pw_rhod); + this->locpp.init_vloc(ucell, this->pw_rhod); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "LOCAL POTENTIAL"); this->pelec->omega = ucell.omega; diff --git a/source/module_esolver/esolver_fp.h b/source/module_esolver/esolver_fp.h index dffa4025d1..127d04706e 100644 --- a/source/module_esolver/esolver_fp.h +++ b/source/module_esolver/esolver_fp.h @@ -7,75 +7,80 @@ #include "module_elecstate/elecstate.h" #include "module_elecstate/module_charge/charge_extra.h" #include "module_hamilt_general/module_surchem/surchem.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/structure_factor.h" #include //! The First-Principles (FP) Energy Solver Class /** - * This class represents components that needed in + * This class represents components that needed in * first-principles energy solver, such as the plane * wave basis, the structure factors, and the k points. * -*/ + */ namespace ModuleESolver { - class ESolver_FP : public ESolver - { - public: - //! Constructor - ESolver_FP(); +class ESolver_FP : public ESolver +{ + public: + //! Constructor + ESolver_FP(); + + //! Deconstructor + virtual ~ESolver_FP(); - //! Deconstructor - virtual ~ESolver_FP(); + //! Initialize of the first-principels energy solver + virtual void before_all_runners(UnitCell& ucell, const Input_para& inp) override; - //! Initialize of the first-principels energy solver - virtual void before_all_runners(UnitCell& ucell, const Input_para& inp) override; + protected: + //! Something to do before SCF iterations. + virtual void before_scf(UnitCell& ucell, const int istep); - protected: - //! Something to do before SCF iterations. - virtual void before_scf(UnitCell& ucell, const int istep); + //! Something to do after SCF iterations when SCF is converged or comes to the max iter step. + virtual void after_scf(UnitCell& ucell, const int istep); - //! Something to do after SCF iterations when SCF is converged or comes to the max iter step. - virtual void after_scf(UnitCell& ucell, const int istep); + //! ------------------------------------------------------------------------------ + //! These pointers will be deleted in the free_pointers() function every ion step. + //! ------------------------------------------------------------------------------ + elecstate::ElecState* pelec = nullptr; ///< Electronic states - //! Electronic states - elecstate::ElecState* pelec = nullptr; + //! ------------------------------------------------------------------------------ - //! Electorn charge density - Charge chr; + //! Electorn charge density + Charge chr; - //! Structure factors that used with plane-wave basis set - Structure_Factor sf; + //! Structure factors that used with plane-wave basis set + Structure_Factor sf; - //! K points in Brillouin zone - K_Vectors kv; + //! K points in Brillouin zone + K_Vectors kv; - //! Plane-wave basis set for charge density - ModulePW::PW_Basis* pw_rho; + //! Plane-wave basis set for charge density + ModulePW::PW_Basis* pw_rho; - //! parallel for rho grid - Parallel_Grid Pgrid; + //! parallel for rho grid + Parallel_Grid Pgrid; - //! pointer to pseudopotential - pseudopot_cell_vl* p_locpp = nullptr; + //! pointer to local pseudopotential + pseudopot_cell_vl locpp; - /** - * @brief same as pw_rho for ncpp. Here 'd' stands for 'dense' - * dense grid for for uspp, used for ultrasoft augmented charge density. - * charge density and potential are defined on dense grids, - * but effective potential needs to be interpolated on smooth grids in order to compute Veff|psi> - */ - ModulePW::PW_Basis* pw_rhod; - ModulePW::PW_Basis_Big* pw_big; ///< [temp] pw_basis_big class + /** + * @brief same as pw_rho for ncpp. Here 'd' stands for 'dense' + * dense grid for for uspp, used for ultrasoft augmented charge density. + * charge density and potential are defined on dense grids, + * but effective potential needs to be interpolated on smooth grids in order to compute Veff|psi> + */ + ModulePW::PW_Basis* pw_rhod; + ModulePW::PW_Basis_Big* pw_big; ///< [temp] pw_basis_big class - //! Charge extrapolation - Charge_Extra CE; + //! Charge extrapolation + Charge_Extra CE; - // solvent model - surchem solvent; - }; -} + // solvent model + surchem solvent; +}; +} // namespace ModuleESolver #endif diff --git a/source/module_esolver/esolver_ks.cpp b/source/module_esolver/esolver_ks.cpp index 70e01eb57a..920eec06ac 100644 --- a/source/module_esolver/esolver_ks.cpp +++ b/source/module_esolver/esolver_ks.cpp @@ -69,7 +69,6 @@ ESolver_KS::ESolver_KS() p_chgmix = new Charge_Mixing(); p_chgmix->set_rhopw(this->pw_rho, this->pw_rhod); this->ppcell.cell_factor = PARAM.inp.cell_factor; - this->p_locpp = &this->ppcell; } //------------------------------------------------------------------------------ diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index 21e2f3356e..e5e0684e9e 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -199,7 +199,7 @@ void ESolver_KS_LCAO::before_all_runners(UnitCell& ucell, const Input_pa } // 8) initialize ppcell - this->ppcell.init_vloc(ucell, this->pw_rho); + this->locpp.init_vloc(ucell, this->pw_rho); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "LOCAL POTENTIAL"); // 9) inititlize the charge density @@ -212,7 +212,7 @@ void ESolver_KS_LCAO::before_all_runners(UnitCell& ucell, const Input_pa this->pelec->pot = new elecstate::Potential(this->pw_rhod, this->pw_rho, &ucell, - &(this->ppcell.vloc), + &(this->locpp.vloc), &(this->sf), &(this->solvent), &(this->pelec->f_en.etxc), @@ -317,7 +317,7 @@ void ESolver_KS_LCAO::cal_force(UnitCell& ucell, ModuleBase::matrix& for orb_, force, this->scs, - this->ppcell, + this->locpp, this->sf, this->kv, this->pw_rho, @@ -465,7 +465,7 @@ void ESolver_KS_LCAO::after_all_runners(UnitCell& ucell) this->solvent, *this->pw_rho, *this->pw_rhod, - this->ppcell.vloc, + this->locpp.vloc, *this->pelec->charge, this->GG, this->GK, @@ -493,7 +493,7 @@ void ESolver_KS_LCAO::after_all_runners(UnitCell& ucell) this->solvent, *this->pw_rho, *this->pw_rhod, - this->ppcell.vloc, + this->locpp.vloc, *this->pelec->charge, this->GG, this->GK, diff --git a/source/module_esolver/esolver_ks_lcaopw.cpp b/source/module_esolver/esolver_ks_lcaopw.cpp index 6abf05e9d7..3887796046 100644 --- a/source/module_esolver/esolver_ks_lcaopw.cpp +++ b/source/module_esolver/esolver_ks_lcaopw.cpp @@ -251,7 +251,7 @@ namespace ModuleESolver *this->pw_wfc, *this->pw_rho, *this->pw_rhod, - this->ppcell.vloc, + this->locpp.vloc, *this->pelec->charge, this->kv, this->pelec->wg diff --git a/source/module_esolver/esolver_ks_pw.cpp b/source/module_esolver/esolver_ks_pw.cpp index 2fb9778e00..5812eb903c 100644 --- a/source/module_esolver/esolver_ks_pw.cpp +++ b/source/module_esolver/esolver_ks_pw.cpp @@ -3,12 +3,12 @@ #include //--------------temporary---------------------------- +#include "module_elecstate/cal_ux.h" #include "module_elecstate/module_charge/symmetry_rho.h" #include "module_elecstate/occupy.h" #include "module_hamilt_general/module_ewald/H_Ewald_pw.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" #include "module_io/print_info.h" -#include "module_elecstate/cal_ux.h" //-----force------------------- #include "module_hamilt_pw/hamilt_pwdft/forces.h" //-----stress------------------ @@ -54,9 +54,9 @@ #include "module_base/kernels/dsp/dsp_connector.h" #endif -#include "module_hamilt_pw/hamilt_pwdft/onsite_projector.h" #include "module_hamilt_lcao/module_deltaspin/spin_constrain.h" #include "module_hamilt_lcao/module_dftu/dftu.h" +#include "module_hamilt_pw/hamilt_pwdft/onsite_projector.h" namespace ModuleESolver { @@ -179,7 +179,7 @@ void ESolver_KS_PW::before_all_runners(UnitCell& ucell, const Input_p this->pelec->pot = new elecstate::Potential(this->pw_rhod, this->pw_rho, &ucell, - &this->ppcell.vloc, + &this->locpp.vloc, &(this->sf), &(this->solvent), &(this->pelec->f_en.etxc), @@ -206,14 +206,12 @@ void ESolver_KS_PW::before_all_runners(UnitCell& ucell, const Input_p delete this->psi; } - //! init pseudopotential - this->ppcell.init(ucell,&this->sf, this->pw_wfc); - //! initalize local pseudopotential - this->ppcell.init_vloc(ucell,this->pw_rhod); + this->locpp.init_vloc(ucell, this->pw_rhod); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "LOCAL POTENTIAL"); //! Initalize non-local pseudopotential + this->ppcell.init(ucell, &this->sf, this->pw_wfc); this->ppcell.init_vnl(ucell, this->pw_rhod); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "NON-LOCAL POTENTIAL"); @@ -264,7 +262,7 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) this->pw_wfc->collect_local_pw(PARAM.inp.erf_ecut, PARAM.inp.erf_height, PARAM.inp.erf_sigma); - this->p_wf_init->make_table(this->kv.get_nks(), &this->sf, &this->ppcell,ucell); + this->p_wf_init->make_table(this->kv.get_nks(), &this->sf, &this->ppcell, ucell); } if (ucell.ionic_position_updated) { @@ -305,7 +303,8 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) elecstate::cal_ux(ucell); //! calculate the total local pseudopotential in real space - this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->ppcell.numeric, ucell.symm, (void*)this->pw_wfc); + this->pelec + ->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm, (void*)this->pw_wfc); //! output the initial charge density if (PARAM.inp.out_chg[0] == 2) @@ -362,14 +361,14 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) this->ppcell.cal_effective_D(veff, this->pw_rhod, ucell); - if(PARAM.inp.onsite_radius > 0) + if (PARAM.inp.onsite_radius > 0) { auto* onsite_p = projectors::OnsiteProjector::get_instance(); onsite_p->init(PARAM.inp.orbital_dir, &ucell, *(this->kspw_psi), this->kv, - *(this->pw_wfc), + *(this->pw_wfc), this->sf, PARAM.inp.onsite_radius, PARAM.globalv.nqx, @@ -380,7 +379,8 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) if (PARAM.inp.sc_mag_switch) { - spinconstrain::SpinConstrain>& sc = spinconstrain::SpinConstrain>::getScInstance(); + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); sc.init_sc(PARAM.inp.sc_thr, PARAM.inp.nsc, PARAM.inp.nsc_min, @@ -397,7 +397,7 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) this->pw_wfc); } - if(PARAM.inp.dft_plus_u) + if (PARAM.inp.dft_plus_u) { auto* dftu = ModuleDFTU::DFTU::get_instance(); dftu->init(ucell, nullptr, this->kv.get_nks()); @@ -458,13 +458,14 @@ void ESolver_KS_PW::iter_init(UnitCell& ucell, const int istep, const bool do_uramping = true; if (PARAM.inp.sc_mag_switch) { - spinconstrain::SpinConstrain>& sc = spinconstrain::SpinConstrain>::getScInstance(); - if(!sc.mag_converged())// skip uramping if mag not converged + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); + if (!sc.mag_converged()) // skip uramping if mag not converged { do_uramping = false; } } - if(do_uramping) + if (do_uramping) { dftu->uramping_update(); // update U by uramping if uramping > 0.01 std::cout << " U-Ramping! Current U = "; @@ -525,44 +526,45 @@ void ESolver_KS_PW::hamilt2density_single(UnitCell& ucell, bool skip_solve = false; if (PARAM.inp.sc_mag_switch) { - spinconstrain::SpinConstrain>& sc = spinconstrain::SpinConstrain>::getScInstance(); - if(!sc.mag_converged() && this->drho>0 && this->drho < PARAM.inp.sc_scf_thr) + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); + if (!sc.mag_converged() && this->drho > 0 && this->drho < PARAM.inp.sc_scf_thr) { // optimize lambda to get target magnetic moments, but the lambda is not near target - sc.run_lambda_loop(iter-1); + sc.run_lambda_loop(iter - 1); sc.set_mag_converged(true); skip_solve = true; } - else if(sc.mag_converged()) + else if (sc.mag_converged()) { // optimize lambda to get target magnetic moments, but the lambda is not near target - sc.run_lambda_loop(iter-1); + sc.run_lambda_loop(iter - 1); skip_solve = true; } } - if(!skip_solve) + if (!skip_solve) { hsolver::HSolverPW hsolver_pw_obj(this->pw_wfc, - PARAM.inp.calculation, - PARAM.inp.basis_type, - PARAM.inp.ks_solver, - PARAM.inp.use_paw, - PARAM.globalv.use_uspp, - PARAM.inp.nspin, - hsolver::DiagoIterAssist::SCF_ITER, - hsolver::DiagoIterAssist::PW_DIAG_NMAX, - hsolver::DiagoIterAssist::PW_DIAG_THR, - hsolver::DiagoIterAssist::need_subspace); + PARAM.inp.calculation, + PARAM.inp.basis_type, + PARAM.inp.ks_solver, + PARAM.inp.use_paw, + PARAM.globalv.use_uspp, + PARAM.inp.nspin, + hsolver::DiagoIterAssist::SCF_ITER, + hsolver::DiagoIterAssist::PW_DIAG_NMAX, + hsolver::DiagoIterAssist::PW_DIAG_THR, + hsolver::DiagoIterAssist::need_subspace); hsolver_pw_obj.solve(this->p_hamilt, - this->kspw_psi[0], - this->pelec, - this->pelec->ekb.c, - GlobalV::RANK_IN_POOL, - GlobalV::NPROC_IN_POOL, - skip_charge, - ucell.tpiba, - ucell.nat); + this->kspw_psi[0], + this->pelec, + this->pelec->ekb.c, + GlobalV::RANK_IN_POOL, + GlobalV::NPROC_IN_POOL, + skip_charge, + ucell.tpiba, + ucell.nat); } Symmetry_rho srho; @@ -607,7 +609,7 @@ void ESolver_KS_PW::iter_finish(UnitCell& ucell, const int istep, int // 2) Update USPP-related quantities // D in uspp need vloc, thus needs update when veff updated // calculate the effective coefficient matrix for non-local pseudopotential - // projectors + // projectors // liuyu 2023-10-24 if (PARAM.globalv.use_uspp) { @@ -630,14 +632,15 @@ void ESolver_KS_PW::iter_finish(UnitCell& ucell, const int istep, int } } // 4) check if oscillate for delta_spin method - if(PARAM.inp.sc_mag_switch) + if (PARAM.inp.sc_mag_switch) { - spinconstrain::SpinConstrain>& sc = spinconstrain::SpinConstrain>::getScInstance(); - if(!sc.higher_mag_prec) + spinconstrain::SpinConstrain>& sc + = spinconstrain::SpinConstrain>::getScInstance(); + if (!sc.higher_mag_prec) { - sc.higher_mag_prec = - this->p_chgmix->if_scf_oscillate(iter, this->drho, PARAM.inp.sc_os_ndim, PARAM.inp.scf_os_thr); - if(sc.higher_mag_prec) + sc.higher_mag_prec + = this->p_chgmix->if_scf_oscillate(iter, this->drho, PARAM.inp.sc_os_ndim, PARAM.inp.scf_os_thr); + if (sc.higher_mag_prec) { // if oscillate, increase the precision of magnetization and do mixing_restart in next iteration this->p_chgmix->mixing_restart_step = iter + 1; } @@ -717,7 +720,7 @@ void ESolver_KS_PW::after_scf(UnitCell& ucell, const int istep) PARAM.inp.nnkpfile, PARAM.inp.wannier_spin); wan.set_tpiba_omega(ucell.tpiba, ucell.omega); - wan.calculate(ucell,this->pelec->ekb, this->pw_wfc, this->pw_big, this->kv, this->psi); + wan.calculate(ucell, this->pelec->ekb, this->pw_wfc, this->pw_big, this->kv, this->psi); std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Wannier functions calculation"); } @@ -726,13 +729,14 @@ void ESolver_KS_PW::after_scf(UnitCell& ucell, const int istep) { std::cout << FmtCore::format("\n * * * * * *\n << Start %s.\n", "Berry phase polarization"); berryphase bp; - bp.Macroscopic_polarization(ucell,this->pw_wfc->npwk_max, this->psi, this->pw_rho, this->pw_wfc, this->kv); + bp.Macroscopic_polarization(ucell, this->pw_wfc->npwk_max, this->psi, this->pw_rho, this->pw_wfc, this->kv); std::cout << FmtCore::format(" >> Finish %s.\n * * * * * *\n", "Berry phase polarization"); } // 8) write spin constrian results // spin constrain calculations, write atomic magnetization and magnetic force. - if (PARAM.inp.sc_mag_switch) { + if (PARAM.inp.sc_mag_switch) + { spinconstrain::SpinConstrain>& sc = spinconstrain::SpinConstrain>::getScInstance(); sc.cal_mi_pw(); @@ -740,10 +744,11 @@ void ESolver_KS_PW::after_scf(UnitCell& ucell, const int istep) } // 9) write onsite occupations for charge and magnetizations - if(PARAM.inp.onsite_radius > 0) + if (PARAM.inp.onsite_radius > 0) { // float type has not been implemented auto* onsite_p = projectors::OnsiteProjector::get_instance(); - onsite_p->cal_occupations(reinterpret_cast, Device>*>(this->kspw_psi), this->pelec->wg); + onsite_p->cal_occupations(reinterpret_cast, Device>*>(this->kspw_psi), + this->pelec->wg); } ModuleBase::timer::tick("ESolver_KS_PW", "after_scf"); @@ -777,7 +782,7 @@ void ESolver_KS_PW::cal_force(UnitCell& ucell, ModuleBase::matrix& fo &ucell.symm, &this->sf, this->solvent, - &this->ppcell, + &this->locpp, &this->ppcell, &this->kv, this->pw_wfc, @@ -799,6 +804,7 @@ void ESolver_KS_PW::cal_stress(UnitCell& ucell, ModuleBase::matrix& s : reinterpret_cast, Device>*>(this->kspw_psi); ss.cal_stress(stress, ucell, + this->locpp, this->ppcell, this->pw_rhod, &ucell.symm, @@ -864,7 +870,7 @@ void ESolver_KS_PW::after_all_runners(UnitCell& ucell) { nspin0 = 2; } - + //! 2) Print occupation numbers into istate.info ModuleIO::write_istate_info(this->pelec->ekb, this->pelec->wg, this->kv, &(GlobalC::Pkpoints)); @@ -933,7 +939,7 @@ void ESolver_KS_PW::after_all_runners(UnitCell& ucell) //! 6) Print out electronic wave functions in real space if (PARAM.inp.out_wfc_r == 1) // Peize Lin add 2021.11.21 { - ModuleIO::write_psi_r_1(ucell,this->psi[0], this->pw_wfc, "wfc_realspace", true, this->kv); + ModuleIO::write_psi_r_1(ucell, this->psi[0], this->pw_wfc, "wfc_realspace", true, this->kv); } //! 7) Use Kubo-Greenwood method to compute conductivities diff --git a/source/module_esolver/esolver_lj.cpp b/source/module_esolver/esolver_lj.cpp index ccf8d33c30..54db4ba3ac 100644 --- a/source/module_esolver/esolver_lj.cpp +++ b/source/module_esolver/esolver_lj.cpp @@ -10,7 +10,6 @@ namespace ModuleESolver void ESolver_LJ::before_all_runners(UnitCell& ucell, const Input_para& inp) { - ucell_ = &ucell; lj_potential = 0; lj_force.create(ucell.nat, 3); lj_virial.create(3, 3); @@ -21,13 +20,13 @@ void ESolver_LJ::before_all_runners(UnitCell& ucell, const Input_para& inp) "data_?"); // determine the maximum rcut and lj_rcut - rcut_search_radius(inp.mdp.lj_rcut); + rcut_search_radius(ucell.ntype, inp.mdp.lj_rcut); // determine the LJ parameters - set_c6_c12(inp.mdp.lj_rule, inp.mdp.lj_epsilon, inp.mdp.lj_sigma); + set_c6_c12(ucell.ntype, inp.mdp.lj_rule, inp.mdp.lj_epsilon, inp.mdp.lj_sigma); // calculate the energy shift so that LJ energy is zero at rcut - cal_en_shift(inp.mdp.lj_eshift); + cal_en_shift(ucell.ntype, inp.mdp.lj_eshift); } void ESolver_LJ::runner(UnitCell& ucell, const int istep) @@ -98,7 +97,7 @@ void ESolver_LJ::runner(UnitCell& ucell, const int istep) void ESolver_LJ::cal_force(UnitCell& ucell, ModuleBase::matrix& force) { force = lj_force; - ModuleIO::print_force(GlobalV::ofs_running, *ucell_, "TOTAL-FORCE (eV/Angstrom)", force, false); + ModuleIO::print_force(GlobalV::ofs_running, ucell, "TOTAL-FORCE (eV/Angstrom)", force, false); } void ESolver_LJ::cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) @@ -124,7 +123,7 @@ void ESolver_LJ::runner(UnitCell& ucell, const int istep) GlobalV::ofs_running << " --------------------------------------------\n\n" << std::endl; } - double ESolver_LJ::LJ_energy(const double d, const int i, const int j) + double ESolver_LJ::LJ_energy(const double& d, const int& i, const int& j) { assert(d > 1e-6); // avoid atom overlap const double r2 = d * d; @@ -133,7 +132,7 @@ void ESolver_LJ::runner(UnitCell& ucell, const int istep) return lj_c12(i, j) / (r6 * r6) - lj_c6(i, j) / r6; } - ModuleBase::Vector3 ESolver_LJ::LJ_force(const ModuleBase::Vector3 dr, const int i, const int j) + ModuleBase::Vector3 ESolver_LJ::LJ_force(const ModuleBase::Vector3& dr, const int& i, const int& j) { const double d = dr.norm(); assert(d > 1e-6); // avoid atom overlap @@ -145,8 +144,7 @@ void ESolver_LJ::runner(UnitCell& ucell, const int istep) return dr * coff; } - void ESolver_LJ::LJ_virial(const ModuleBase::Vector3& force, - const ModuleBase::Vector3& dtau) + void ESolver_LJ::LJ_virial(const ModuleBase::Vector3& force, const ModuleBase::Vector3& dtau) { for (int i = 0; i < 3; ++i) { @@ -157,9 +155,8 @@ void ESolver_LJ::runner(UnitCell& ucell, const int istep) } } - void ESolver_LJ::rcut_search_radius(const std::vector& rcut) + void ESolver_LJ::rcut_search_radius(const int& ntype, const std::vector& rcut) { - const int ntype = this->ucell_->ntype; lj_rcut.create(ntype, ntype); double rcut_max = 0.0; @@ -193,9 +190,11 @@ void ESolver_LJ::runner(UnitCell& ucell, const int istep) search_radius = rcut_max + 0.01; } - void ESolver_LJ::set_c6_c12(const int rule, const std::vector epsilon, const std::vector sigma) + void ESolver_LJ::set_c6_c12(const int& ntype, + const int& rule, + const std::vector& epsilon, + const std::vector& sigma) { - const int ntype = this->ucell_->ntype; lj_c6.create(ntype, ntype); lj_c12.create(ntype, ntype); @@ -269,9 +268,8 @@ void ESolver_LJ::runner(UnitCell& ucell, const int istep) } } - void ESolver_LJ::cal_en_shift(const bool is_shift) + void ESolver_LJ::cal_en_shift(const int& ntype, const bool& is_shift) { - const int ntype = this->ucell_->ntype; en_shift.create(ntype, ntype); if (is_shift) diff --git a/source/module_esolver/esolver_lj.h b/source/module_esolver/esolver_lj.h index 8f50a1be35..2b56e4825e 100644 --- a/source/module_esolver/esolver_lj.h +++ b/source/module_esolver/esolver_lj.h @@ -27,19 +27,20 @@ namespace ModuleESolver void after_all_runners(UnitCell& ucell) override; private: + double LJ_energy(const double& d, const int& i, const int& j); - double LJ_energy(const double d, const int i, const int j); + ModuleBase::Vector3 LJ_force(const ModuleBase::Vector3& dr, const int& i, const int& j); - ModuleBase::Vector3 LJ_force(const ModuleBase::Vector3 dr, const int i, const int j); + void LJ_virial(const ModuleBase::Vector3& force, const ModuleBase::Vector3& dtau); - void LJ_virial(const ModuleBase::Vector3& force, - const ModuleBase::Vector3& dtau); + void rcut_search_radius(const int& ntype, const std::vector& rcut); - void rcut_search_radius(const std::vector& rcut); + void set_c6_c12(const int& ntype, + const int& rule, + const std::vector& epsilon, + const std::vector& sigma); - void set_c6_c12(const int rule, const std::vector epsilon, const std::vector sigma); - - void cal_en_shift(const bool is_shift); + void cal_en_shift(const int& ntype, const bool& is_shift); //--------------temporary---------------------------- double search_radius=-1.0; @@ -51,7 +52,6 @@ namespace ModuleESolver double lj_potential; ModuleBase::matrix lj_force; ModuleBase::matrix lj_virial; - UnitCell* ucell_; ///< pointer to the unitcell information //--------------------------------------------------- }; } diff --git a/source/module_esolver/esolver_of.cpp b/source/module_esolver/esolver_of.cpp index 108e455276..8c30664573 100644 --- a/source/module_esolver/esolver_of.cpp +++ b/source/module_esolver/esolver_of.cpp @@ -23,7 +23,6 @@ ESolver_OF::ESolver_OF() { this->classname = "ESolver_OF"; this->task_ = new char[60]; - this->p_locpp = &this->locpp; } ESolver_OF::~ESolver_OF() diff --git a/source/module_esolver/esolver_of.h b/source/module_esolver/esolver_of.h index 51e014886f..081a077606 100644 --- a/source/module_esolver/esolver_of.h +++ b/source/module_esolver/esolver_of.h @@ -30,8 +30,6 @@ class ESolver_OF : public ESolver_FP virtual void cal_force(UnitCell& ucell, ModuleBase::matrix& force) override; virtual void cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) override; - protected: - pseudopot_cell_vl locpp; private: // ======================= variables ========================== diff --git a/source/module_esolver/esolver_sdft_pw.cpp b/source/module_esolver/esolver_sdft_pw.cpp index ab9141fcb5..5432008d3f 100644 --- a/source/module_esolver/esolver_sdft_pw.cpp +++ b/source/module_esolver/esolver_sdft_pw.cpp @@ -233,6 +233,7 @@ void ESolver_SDFT_PW::cal_force(UnitCell& ucell, ModuleBase::matrix& &this->sf, &this->kv, this->pw_wfc, + this->locpp, this->ppcell, ucell, *this->kspw_psi, @@ -253,6 +254,7 @@ void ESolver_SDFT_PW::cal_stress(UnitCell& ucell, ModuleBase::matrix& *this->kspw_psi, this->stowf, this->pelec->charge, + &this->locpp, &this->ppcell, ucell); } diff --git a/source/module_esolver/lcao_before_scf.cpp b/source/module_esolver/lcao_before_scf.cpp index 6452c8251b..d51731bbde 100644 --- a/source/module_esolver/lcao_before_scf.cpp +++ b/source/module_esolver/lcao_before_scf.cpp @@ -257,7 +257,7 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) } #endif // __EXX - this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->ppcell.numeric, ucell.symm); + this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); //! output the initial charge density if (PARAM.inp.out_chg[0] == 2) @@ -368,7 +368,7 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) // necessary operation of these parameters have be done with p_esolver->Init() in source/driver_run.cpp rdmft_solver.update_ion(ucell, *(this->pw_rho), - this->ppcell.vloc, + this->locpp.vloc, this->sf.strucFac); // add by jghan, 2024-03-16/2024-10-08 } diff --git a/source/module_esolver/lcao_others.cpp b/source/module_esolver/lcao_others.cpp index aed22e729b..fe27014192 100644 --- a/source/module_esolver/lcao_others.cpp +++ b/source/module_esolver/lcao_others.cpp @@ -249,7 +249,7 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) elecstate::cal_ux(ucell); // pelec should be initialized before these calculations - this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->ppcell.numeric, ucell.symm); + this->pelec->init_scf(istep, ucell, this->Pgrid, this->sf.strucFac, this->locpp.numeric, ucell.symm); // self consistent calculations for electronic ground state if (cal_type == "get_pchg") { diff --git a/source/module_esolver/test/esolver_dp_test.cpp b/source/module_esolver/test/esolver_dp_test.cpp index db1ca22d9c..6925eae6f8 100644 --- a/source/module_esolver/test/esolver_dp_test.cpp +++ b/source/module_esolver/test/esolver_dp_test.cpp @@ -84,7 +84,6 @@ TEST_F(ESolverDPTest, InitCase1) for (int j = 0; j < 3; ++j) { EXPECT_DOUBLE_EQ(esolver->dp_virial(i, j), 0.0); - EXPECT_DOUBLE_EQ(esolver->cell[3 * i + j], 0.0); } } for (int i = 0; i < ucell.nat; ++i) @@ -92,7 +91,6 @@ TEST_F(ESolverDPTest, InitCase1) for (int j = 0; j < 3; ++j) { EXPECT_DOUBLE_EQ(esolver->dp_force(i, j), 0.0); - EXPECT_DOUBLE_EQ(esolver->coord[3 * i + j], 0.0); } } EXPECT_EQ(esolver->atype[0], 0); diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp index 5afa1aeec7..988999c777 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp @@ -46,7 +46,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, const LCAO_Orbitals& orb, ModuleBase::matrix& fcs, ModuleBase::matrix& scs, - const pseudopot_cell_vnl& nlpp, + const pseudopot_cell_vl& locpp, const Structure_Factor& sf, const K_Vectors& kv, ModulePW::PW_Basis* rhopw, @@ -106,7 +106,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, pelec->vnew_exist, pelec->charge, rhopw, - nlpp, + locpp, sf); } @@ -151,7 +151,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, pelec->f_en.etxc, pelec->charge, rhopw, - nlpp, + locpp, sf); } @@ -280,7 +280,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, if (PARAM.inp.imp_sol && isforce) { fsol.create(nat, 3); - solvent.cal_force_sol(ucell, rhopw, nlpp.vloc, fsol); + solvent.cal_force_sol(ucell, rhopw, locpp.vloc, fsol); } //! atomic forces from DFT+U (Quxin version) @@ -840,7 +840,7 @@ void Force_Stress_LCAO::calForcePwPart(UnitCell& ucell, const bool vnew_exist, const Charge* const chr, ModulePW::PW_Basis* rhopw, - const pseudopot_cell_vnl& nlpp, + const pseudopot_cell_vl& locpp, const Structure_Factor& sf) { ModuleBase::TITLE("Force_Stress_LCAO", "calForcePwPart"); @@ -848,7 +848,7 @@ void Force_Stress_LCAO::calForcePwPart(UnitCell& ucell, // local pseudopotential force: // use charge density; plane wave; local pseudopotential; //-------------------------------------------------------- - f_pw.cal_force_loc(ucell, fvl_dvl, rhopw, nlpp.vloc, chr); + f_pw.cal_force_loc(ucell, fvl_dvl, rhopw, locpp.vloc, chr); //-------------------------------------------------------- // ewald force: use plane wave only. //-------------------------------------------------------- @@ -857,11 +857,11 @@ void Force_Stress_LCAO::calForcePwPart(UnitCell& ucell, //-------------------------------------------------------- // force due to core correlation. //-------------------------------------------------------- - f_pw.cal_force_cc(fcc, rhopw, chr, nlpp.numeric, ucell); + f_pw.cal_force_cc(fcc, rhopw, chr, locpp.numeric, ucell); //-------------------------------------------------------- // force due to self-consistent charge. //-------------------------------------------------------- - f_pw.cal_force_scc(fscc, rhopw, vnew, vnew_exist, nlpp.numeric, ucell); + f_pw.cal_force_scc(fscc, rhopw, vnew, vnew_exist, locpp.numeric, ucell); return; } @@ -984,7 +984,7 @@ void Force_Stress_LCAO::calStressPwPart(UnitCell& ucell, const double& etxc, const Charge* const chr, ModulePW::PW_Basis* rhopw, - const pseudopot_cell_vnl& nlpp, + const pseudopot_cell_vl& locpp, const Structure_Factor& sf) { ModuleBase::TITLE("Force_Stress_LCAO", "calStressPwPart"); @@ -992,7 +992,7 @@ void Force_Stress_LCAO::calStressPwPart(UnitCell& ucell, // local pseudopotential stress: // use charge density; plane wave; local pseudopotential; //-------------------------------------------------------- - sc_pw.stress_loc(ucell, sigmadvl, rhopw, nlpp.vloc, &sf, 0, chr); + sc_pw.stress_loc(ucell, sigmadvl, rhopw, locpp.vloc, &sf, 0, chr); //-------------------------------------------------------- // hartree term @@ -1007,7 +1007,7 @@ void Force_Stress_LCAO::calStressPwPart(UnitCell& ucell, //-------------------------------------------------------- // stress due to core correlation. //-------------------------------------------------------- - sc_pw.stress_cc(sigmacc, rhopw, ucell, &sf, 0, nlpp.numeric, chr); + sc_pw.stress_cc(sigmacc, rhopw, ucell, &sf, 0, locpp.numeric, chr); //-------------------------------------------------------- // stress due to self-consistent charge. diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h index ecc58473a0..bc728209d6 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h @@ -44,7 +44,7 @@ class Force_Stress_LCAO const LCAO_Orbitals& orb, ModuleBase::matrix& fcs, ModuleBase::matrix& scs, - const pseudopot_cell_vnl& nlpp, + const pseudopot_cell_vl& locpp, const Structure_Factor& sf, const K_Vectors& kv, ModulePW::PW_Basis* rhopw, @@ -76,7 +76,7 @@ class Force_Stress_LCAO const bool vnew_exist, const Charge* const chr, ModulePW::PW_Basis* rhopw, - const pseudopot_cell_vnl& nlpp, + const pseudopot_cell_vl& locpp, const Structure_Factor& sf); void integral_part(const bool isGammaOnly, @@ -114,7 +114,7 @@ class Force_Stress_LCAO const double& etxc, const Charge* const chr, ModulePW::PW_Basis* rhopw, - const pseudopot_cell_vnl& nlpp, + const pseudopot_cell_vl& locpp, const Structure_Factor& sf); static double force_invalid_threshold_ev; diff --git a/source/module_hamilt_pw/hamilt_ofdft/of_stress_pw.h b/source/module_hamilt_pw/hamilt_ofdft/of_stress_pw.h index 05265915c8..74e7b3269a 100644 --- a/source/module_hamilt_pw/hamilt_ofdft/of_stress_pw.h +++ b/source/module_hamilt_pw/hamilt_ofdft/of_stress_pw.h @@ -2,6 +2,7 @@ #define OF_STRESS_PW_H #include "module_elecstate/elecstate.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/stress_func.h" class OF_Stress_PW : public Stress_Func diff --git a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h index 505e479adc..6b6b0bf016 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h +++ b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h @@ -1,7 +1,6 @@ #ifndef VNL_IN_PW_H #define VNL_IN_PW_H -#include "VL_in_pw.h" #include "module_base/complexarray.h" #include "module_base/complexmatrix.h" #include "module_base/intarray.h" @@ -18,7 +17,7 @@ // Calculate the non-local pseudopotential in reciprocal // space using plane wave as basis set. //========================================================== -class pseudopot_cell_vnl : public pseudopot_cell_vl +class pseudopot_cell_vnl { public: diff --git a/source/module_hamilt_pw/hamilt_pwdft/forces.h b/source/module_hamilt_pw/hamilt_pwdft/forces.h index a300f1fba5..695520dceb 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/forces.h +++ b/source/module_hamilt_pw/hamilt_pwdft/forces.h @@ -9,6 +9,7 @@ #include "module_cell/klist.h" #include "module_cell/module_symmetry/symmetry.h" #include "module_elecstate/elecstate.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/kernels/force_op.h" #include "module_hsolver/kernels/math_kernel_op.h" #include "module_psi/psi.h" diff --git a/source/module_hamilt_pw/hamilt_pwdft/stress_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/stress_pw.cpp index 33bf039a62..36ea369d60 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/stress_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/stress_pw.cpp @@ -8,6 +8,7 @@ template void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, UnitCell& ucell, + const pseudopot_cell_vl& locpp, const pseudopot_cell_vnl& nlpp, ModulePW::PW_Basis* rho_basis, ModuleSymmetry::Symmetry* p_symm, @@ -70,17 +71,17 @@ void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, this->stress_kin(sigmakin, this->pelec->wg, p_symm, p_kv, wfc_basis, ucell, d_psi_in); // hartree contribution - this->stress_har(ucell,sigmahar, rho_basis, 1, pelec->charge); + this->stress_har(ucell, sigmahar, rho_basis, 1, pelec->charge); // ewald contribution - this->stress_ewa(ucell,sigmaewa, rho_basis, 1); + this->stress_ewa(ucell, sigmaewa, rho_basis, 1); // xc contribution: add gradient corrections(non diagonal) for (int i = 0; i < 3; i++) { sigmaxc(i, i) = -(pelec->f_en.etxc - pelec->f_en.vtxc) / ucell.omega; } - this->stress_gga(ucell,sigmaxc, rho_basis, pelec->charge); + this->stress_gga(ucell, sigmaxc, rho_basis, pelec->charge); if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) { this->stress_mgga(ucell, @@ -94,10 +95,10 @@ void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, } // local contribution - this->stress_loc(ucell,sigmaloc, rho_basis, nlpp.vloc, p_sf, 1, pelec->charge); + this->stress_loc(ucell, sigmaloc, rho_basis, locpp.vloc, p_sf, 1, pelec->charge); // nlcc - this->stress_cc(sigmaxcc, rho_basis, ucell, p_sf, 1, nlpp.numeric, pelec->charge); + this->stress_cc(sigmaxcc, rho_basis, ucell, p_sf, 1, locpp.numeric, pelec->charge); // nonlocal this->stress_nl(sigmanl, this->pelec->wg, this->pelec->ekb, p_sf, p_kv, p_symm, wfc_basis, d_psi_in, nlpp, ucell); @@ -112,7 +113,7 @@ void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, stress_vdw(sigmavdw, ucell); // DFT+U and DeltaSpin stress - if(PARAM.inp.dft_plus_u || PARAM.inp.sc_mag_switch) + if (PARAM.inp.dft_plus_u || PARAM.inp.sc_mag_switch) { this->stress_onsite(sigmaonsite, this->pelec->wg, wfc_basis, ucell, d_psi_in, p_symm); } @@ -148,7 +149,7 @@ void Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, ModuleIO::print_stress("XC STRESS", sigmaxc, PARAM.inp.test_stress, ry); ModuleIO::print_stress("EWALD STRESS", sigmaewa, PARAM.inp.test_stress, ry); ModuleIO::print_stress("NLCC STRESS", sigmaxcc, PARAM.inp.test_stress, ry); - if(PARAM.inp.dft_plus_u || PARAM.inp.sc_mag_switch) + if (PARAM.inp.dft_plus_u || PARAM.inp.sc_mag_switch) { ModuleIO::print_stress("ONSITE STRESS", sigmaonsite, PARAM.inp.test_stress, ry); } diff --git a/source/module_hamilt_pw/hamilt_pwdft/stress_pw.h b/source/module_hamilt_pw/hamilt_pwdft/stress_pw.h index 70f3ff8d1e..eb08d8ce14 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/stress_pw.h +++ b/source/module_hamilt_pw/hamilt_pwdft/stress_pw.h @@ -2,6 +2,7 @@ #define W_ABACUS_DEVELOP_ABACUS_DEVELOP_SOURCE_MODULE_HAMILT_PW_HAMILT_PWDFT_STRESS_PW_H #include "module_elecstate/elecstate.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" #include "stress_func.h" template @@ -13,6 +14,7 @@ class Stress_PW : public Stress_Func // calculate the stress in PW basis void cal_stress(ModuleBase::matrix& smearing_sigmatot, UnitCell& ucell, + const pseudopot_cell_vl& locpp, const pseudopot_cell_vnl& nlpp, ModulePW::PW_Basis* rho_basis, ModuleSymmetry::Symmetry* p_symm, diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_forces.cpp b/source/module_hamilt_pw/hamilt_stodft/sto_forces.cpp index 93ad9128e0..db54e40db0 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_forces.cpp +++ b/source/module_hamilt_pw/hamilt_stodft/sto_forces.cpp @@ -24,6 +24,7 @@ void Sto_Forces::cal_stoforce(ModuleBase::matrix& force, const Structure_Factor* p_sf, K_Vectors* pkv, ModulePW::PW_Basis_K* wfc_basis, + const pseudopot_cell_vl& locpp, const pseudopot_cell_vnl& nlpp, UnitCell& ucell, const psi::Psi, Device>& psi, @@ -41,11 +42,11 @@ void Sto_Forces::cal_stoforce(ModuleBase::matrix& force, ModuleBase::matrix forcecc(this->nat, 3); ModuleBase::matrix forcenl(this->nat, 3); ModuleBase::matrix forcescc(this->nat, 3); - this->cal_force_loc(ucell,forcelc, rho_basis, nlpp.vloc, chr); + this->cal_force_loc(ucell, forcelc, rho_basis, locpp.vloc, chr); this->cal_force_ew(ucell,forceion, rho_basis, p_sf); this->cal_sto_force_nl(forcenl, wg, pkv, wfc_basis, p_sf, nlpp, ucell, psi, stowf); - this->cal_force_cc(forcecc, rho_basis, chr, nlpp.numeric, ucell); - this->cal_force_scc(forcescc, rho_basis, elec.vnew, elec.vnew_exist, nlpp.numeric, ucell); + this->cal_force_cc(forcecc, rho_basis, chr, locpp.numeric, ucell); + this->cal_force_scc(forcescc, rho_basis, elec.vnew, elec.vnew_exist, locpp.numeric, ucell); // impose total force = 0 ModuleBase::matrix force_e; diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_forces.h b/source/module_hamilt_pw/hamilt_stodft/sto_forces.h index e6620a7791..96a9be0e02 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_forces.h +++ b/source/module_hamilt_pw/hamilt_stodft/sto_forces.h @@ -28,6 +28,7 @@ class Sto_Forces : public Forces const Structure_Factor* p_sf, K_Vectors* pkv, ModulePW::PW_Basis_K* wfc_basis, + const pseudopot_cell_vl& locpp, const pseudopot_cell_vnl& nlpp, UnitCell& ucell, const psi::Psi, Device>& psi_in, diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.cpp b/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.cpp index 9115b5a053..5be294f2e7 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.cpp +++ b/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.cpp @@ -1,12 +1,12 @@ #include "sto_stress_pw.h" #include "module_base/timer.h" +#include "module_hamilt_pw/hamilt_pwdft/fs_kin_tools.h" +#include "module_hamilt_pw/hamilt_pwdft/fs_nonlocal_tools.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" #include "module_hamilt_pw/hamilt_pwdft/structure_factor.h" #include "module_io/output_log.h" #include "module_parameter/parameter.h" -#include "module_hamilt_pw/hamilt_pwdft/fs_nonlocal_tools.h" -#include "module_hamilt_pw/hamilt_pwdft/fs_kin_tools.h" template void Sto_Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, @@ -19,7 +19,8 @@ void Sto_Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, const psi::Psi, Device>& psi_in, const Stochastic_WF, Device>& stowf, const Charge* const chr, - pseudopot_cell_vnl* nlpp, + const pseudopot_cell_vl* locpp, + const pseudopot_cell_vnl* nlpp, UnitCell& ucell_in) { ModuleBase::TITLE("Sto_Stress_PW", "cal_stress"); @@ -39,23 +40,23 @@ void Sto_Stress_PW::cal_stress(ModuleBase::matrix& sigmatot, this->sto_stress_kin(sigmakin, wg, p_symm, p_kv, wfc_basis, psi_in, stowf); // hartree contribution - this->stress_har(ucell_in,sigmahar, rho_basis, true, chr); + this->stress_har(ucell_in, sigmahar, rho_basis, true, chr); // ewald contribution - this->stress_ewa(ucell_in,sigmaewa, rho_basis, true); + this->stress_ewa(ucell_in, sigmaewa, rho_basis, true); // xc contribution: add gradient corrections(non diagonal) for (int i = 0; i < 3; ++i) { sigmaxc(i, i) = -(elec.f_en.etxc - elec.f_en.vtxc) / this->ucell->omega; } - this->stress_gga(ucell_in,sigmaxc, rho_basis, chr); + this->stress_gga(ucell_in, sigmaxc, rho_basis, chr); // local contribution - this->stress_loc(ucell_in,sigmaloc, rho_basis, nlpp->vloc, p_sf, true, chr); + this->stress_loc(ucell_in, sigmaloc, rho_basis, locpp->vloc, p_sf, true, chr); // nlcc - this->stress_cc(sigmaxcc, rho_basis, ucell_in, p_sf, true, nlpp->numeric, chr); + this->stress_cc(sigmaxcc, rho_basis, ucell_in, p_sf, true, locpp->numeric, chr); // nonlocal this->sto_stress_nl(sigmanl, wg, p_sf, p_symm, p_kv, wfc_basis, *nlpp, ucell_in, psi_in, stowf); @@ -114,7 +115,7 @@ void Sto_Stress_PW::sto_stress_kin(ModuleBase::matrix& sigma, { nksbands = 0; } - + hamilt::FS_Kin_tools kin_tool(*this->ucell, p_kv, wfc_basis, wg); for (int ik = 0; ik < wfc_basis->nks; ++ik) @@ -122,7 +123,7 @@ void Sto_Stress_PW::sto_stress_kin(ModuleBase::matrix& sigma, const int stobands = stowf.nchip[ik]; psi.fix_k(ik); stowf.shchi->fix_k(ik); - + kin_tool.cal_gk(ik); kin_tool.cal_stress_kin(ik, nksbands, true, psi.get_pointer()); @@ -197,7 +198,6 @@ void Sto_Stress_PW::sto_stress_nl(ModuleBase::matrix& sigma, nl_tools.cal_stress(ik, nstobands, false, ipol, jpol, stress_device, nksbands); } } - } // transfer stress from device to host @@ -234,7 +234,6 @@ void Sto_Stress_PW::sto_stress_nl(ModuleBase::matrix& sigma, return; } - template class Sto_Stress_PW; #if ((defined __CUDA) || (defined __ROCM)) template class Sto_Stress_PW; diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.h b/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.h index 4e67d74110..39f7dfefbd 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.h +++ b/source/module_hamilt_pw/hamilt_stodft/sto_stress_pw.h @@ -3,8 +3,10 @@ #include "module_basis/module_pw/pw_basis_k.h" #include "module_elecstate/elecstate.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/stress_func.h" #include "sto_wf.h" + // qianrui create 2021-6-4 template @@ -25,7 +27,8 @@ class Sto_Stress_PW : public Stress_Func const psi::Psi, Device>& psi_in, const Stochastic_WF, Device>& stowf, const Charge* const chr, - pseudopot_cell_vnl* nlpp_in, + const pseudopot_cell_vl* locpp, + const pseudopot_cell_vnl* nlpp, UnitCell& ucell_in); private: @@ -47,6 +50,7 @@ class Sto_Stress_PW : public Stress_Func const UnitCell& ucell, const psi::Psi, Device>& psi, const Stochastic_WF, Device>& stowf); + private: using resmem_var_op = base_device::memory::resize_memory_op; using setmem_var_op = base_device::memory::set_memory_op; diff --git a/source/module_io/test/for_testing_klist.h b/source/module_io/test/for_testing_klist.h index 81e1c59cc0..5260be5f4d 100644 --- a/source/module_io/test/for_testing_klist.h +++ b/source/module_io/test/for_testing_klist.h @@ -1,20 +1,20 @@ #ifndef FOR_TESTING_KLIST_H #define FOR_TESTING_KLIST_H -#include "module_cell/parallel_kpoints.h" #include "module_base/parallel_global.h" -#include "module_cell/klist.h" -#include "module_elecstate/magnetism.h" -#include "module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h" +#include "module_basis/module_ao/ORB_gaunt_table.h" #include "module_cell/atom_pseudo.h" #include "module_cell/atom_spec.h" -#include "module_cell/unitcell.h" +#include "module_cell/klist.h" +#include "module_cell/parallel_kpoints.h" #include "module_cell/pseudo.h" #include "module_cell/setup_nonlocal.h" +#include "module_cell/unitcell.h" +#include "module_elecstate/magnetism.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" +#include "module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h" #include "module_hamilt_pw/hamilt_pwdft/parallel_grid.h" -#include "module_cell/parallel_kpoints.h" #include "module_io/berryphase.h" -#include "module_basis/module_ao/ORB_gaunt_table.h" bool berryphase::berry_phase_flag=0; diff --git a/source/module_md/test/lj_pot_test.cpp b/source/module_md/test/lj_pot_test.cpp index 84d91c3f87..43f6c874ca 100644 --- a/source/module_md/test/lj_pot_test.cpp +++ b/source/module_md/test/lj_pot_test.cpp @@ -91,9 +91,8 @@ TEST_F(LJ_pot_test, RcutSearchRadius) { ModuleESolver::ESolver_LJ* p_esolver = new ModuleESolver::ESolver_LJ(); ucell.ntype = 2; - p_esolver->ucell_ = &ucell; std::vector rcut = {3.0}; - p_esolver->rcut_search_radius(rcut); + p_esolver->rcut_search_radius(ucell.ntype, rcut); for (int i = 0; i < ucell.ntype; i++) { @@ -105,7 +104,7 @@ TEST_F(LJ_pot_test, RcutSearchRadius) EXPECT_NEAR(p_esolver->search_radius, 3.0 * ModuleBase::ANGSTROM_AU + 0.01, doublethreshold); rcut = {3.0, 4.0, 5.0}; - p_esolver->rcut_search_radius(rcut); + p_esolver->rcut_search_radius(ucell.ntype, rcut); EXPECT_NEAR(p_esolver->lj_rcut(0, 0), 3.0 * ModuleBase::ANGSTROM_AU, doublethreshold); EXPECT_NEAR(p_esolver->lj_rcut(0, 1), 4.0 * ModuleBase::ANGSTROM_AU, doublethreshold); EXPECT_NEAR(p_esolver->lj_rcut(1, 0), 4.0 * ModuleBase::ANGSTROM_AU, doublethreshold); @@ -117,14 +116,13 @@ TEST_F(LJ_pot_test, SetC6C12) { ModuleESolver::ESolver_LJ* p_esolver = new ModuleESolver::ESolver_LJ(); ucell.ntype = 2; - p_esolver->ucell_ = &ucell; // no rule int rule = 1; std::vector lj_epsilon = {0.1, 0.2, 0.3}; std::vector lj_sigma = {0.2, 0.4, 0.6}; - p_esolver->set_c6_c12(rule, lj_epsilon, lj_sigma); + p_esolver->set_c6_c12(ucell.ntype, rule, lj_epsilon, lj_sigma); for (int i = 0; i < ucell.ntype; i++) { @@ -144,7 +142,7 @@ TEST_F(LJ_pot_test, SetC6C12) lj_epsilon = {0.1, 0.2}; lj_sigma = {0.2, 0.4}; - p_esolver->set_c6_c12(rule, lj_epsilon, lj_sigma); + p_esolver->set_c6_c12(ucell.ntype, rule, lj_epsilon, lj_sigma); for (int i = 0; i < ucell.ntype; i++) { @@ -170,7 +168,7 @@ TEST_F(LJ_pot_test, SetC6C12) lj_epsilon = {0.1, 0.2}; lj_sigma = {0.2, 0.4}; - p_esolver->set_c6_c12(rule, lj_epsilon, lj_sigma); + p_esolver->set_c6_c12(ucell.ntype, rule, lj_epsilon, lj_sigma); for (int i = 0; i < ucell.ntype; i++) { @@ -191,18 +189,17 @@ TEST_F(LJ_pot_test, CalEnShift) { ModuleESolver::ESolver_LJ* p_esolver = new ModuleESolver::ESolver_LJ(); ucell.ntype = 2; - p_esolver->ucell_ = &ucell; std::vector rcut = {3.0}; - p_esolver->rcut_search_radius(rcut); + p_esolver->rcut_search_radius(ucell.ntype, rcut); int rule = 1; std::vector lj_epsilon = {0.1, 0.2, 0.3}; std::vector lj_sigma = {0.2, 0.4, 0.6}; - p_esolver->set_c6_c12(rule, lj_epsilon, lj_sigma); + p_esolver->set_c6_c12(ucell.ntype, rule, lj_epsilon, lj_sigma); // false - p_esolver->cal_en_shift(false); + p_esolver->cal_en_shift(ucell.ntype, false); for (int i = 0; i < ucell.ntype; i++) { for (int j = 0; j < ucell.ntype; j++) @@ -212,7 +209,7 @@ TEST_F(LJ_pot_test, CalEnShift) } // true - p_esolver->cal_en_shift(true); + p_esolver->cal_en_shift(ucell.ntype, true); EXPECT_NEAR(p_esolver->en_shift(0, 0), -2.5810212013100967e-09, doublethreshold); EXPECT_NEAR(p_esolver->en_shift(0, 1), -3.303688865319793e-07, doublethreshold); EXPECT_NEAR(p_esolver->en_shift(1, 0), -3.303688865319793e-07, doublethreshold); diff --git a/source/module_psi/test/psi_initializer_unit_test.cpp b/source/module_psi/test/psi_initializer_unit_test.cpp index 22f970a620..3f74fdc44d 100644 --- a/source/module_psi/test/psi_initializer_unit_test.cpp +++ b/source/module_psi/test/psi_initializer_unit_test.cpp @@ -3,12 +3,12 @@ #include "module_parameter/parameter.h" #undef private #include "../psi_initializer.h" -#include "../psi_initializer_random.h" #include "../psi_initializer_atomic.h" -#include "../psi_initializer_nao.h" #include "../psi_initializer_atomic_random.h" +#include "../psi_initializer_nao.h" #include "../psi_initializer_nao_random.h" - +#include "../psi_initializer_random.h" +#include "module_hamilt_pw/hamilt_pwdft/VL_in_pw.h" /* ========================= From e3156945f00e1f0450d16013470ecd744770e9da Mon Sep 17 00:00:00 2001 From: Goodchong Date: Tue, 24 Dec 2024 20:45:08 +0800 Subject: [PATCH 13/44] Refactor: refactor neighbour atom search but no change on algo (#5759) * format file source/module_cell/module_neighbor/sltk_atom_arrange.cpp, remove some useless parameter in atom input * rewrite module neighbour to parition atom into boxes * merge atom input and grid * replace some variable * fresh unit test according to refactor * add log * add new find atom interface * fix a atom self must on last bug * fix unit test mask error * fix a merge bug * revert algo back to all 2 all search * fix a unit test bug --- source/Makefile.Objects | 1 - .../module_neighbor/CMakeLists.txt | 1 - .../module_cell/module_neighbor/sltk_atom.cpp | 8 +- .../module_cell/module_neighbor/sltk_atom.h | 39 +- .../module_neighbor/sltk_atom_arrange.cpp | 198 +++--- .../module_neighbor/sltk_atom_arrange.h | 2 - .../module_neighbor/sltk_atom_input.cpp | 326 --------- .../module_neighbor/sltk_atom_input.h | 143 ---- .../module_cell/module_neighbor/sltk_grid.cpp | 633 +++++++----------- .../module_cell/module_neighbor/sltk_grid.h | 164 ++--- .../module_neighbor/sltk_grid_driver.cpp | 110 ++- .../module_neighbor/sltk_grid_driver.h | 34 +- .../module_neighbor/test/CMakeLists.txt | 11 +- .../test/sltk_atom_arrange_test.cpp | 4 +- .../test/sltk_atom_input_test.cpp | 264 -------- .../module_neighbor/test/sltk_atom_test.cpp | 27 +- .../module_neighbor/test/sltk_grid_test.cpp | 46 +- .../hamilt_lcaodft/spar_dh.cpp | 12 +- .../module_deepks/test/Makefile.Objects | 1 - source/module_io/cal_r_overlap_R.cpp | 12 +- source/module_io/to_wannier90_lcao.cpp | 12 +- source/module_md/test/CMakeLists.txt | 1 - 22 files changed, 499 insertions(+), 1550 deletions(-) delete mode 100644 source/module_cell/module_neighbor/sltk_atom_input.cpp delete mode 100644 source/module_cell/module_neighbor/sltk_atom_input.h delete mode 100644 source/module_cell/module_neighbor/test/sltk_atom_input_test.cpp diff --git a/source/Makefile.Objects b/source/Makefile.Objects index ae07f24df8..7a0ff0aadf 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -368,7 +368,6 @@ OBJS_MD=fire.o\ OBJS_NEIGHBOR=sltk_atom.o\ sltk_atom_arrange.o\ - sltk_atom_input.o\ sltk_grid.o\ sltk_grid_driver.o\ diff --git a/source/module_cell/module_neighbor/CMakeLists.txt b/source/module_cell/module_neighbor/CMakeLists.txt index dfa2463d67..9b5fea4d14 100644 --- a/source/module_cell/module_neighbor/CMakeLists.txt +++ b/source/module_cell/module_neighbor/CMakeLists.txt @@ -3,7 +3,6 @@ add_library( OBJECT sltk_atom.cpp sltk_atom_arrange.cpp - sltk_atom_input.cpp sltk_grid.cpp sltk_grid_driver.cpp ) diff --git a/source/module_cell/module_neighbor/sltk_atom.cpp b/source/module_cell/module_neighbor/sltk_atom.cpp index 843271cdf1..bd62fe52ca 100644 --- a/source/module_cell/module_neighbor/sltk_atom.cpp +++ b/source/module_cell/module_neighbor/sltk_atom.cpp @@ -4,9 +4,9 @@ /*** Constructors and destructor ***/ FAtom::FAtom() { - d_x = 0.0; - d_y = 0.0; - d_z = 0.0; - type = 0; + x = 0.0; + y = 0.0; + z = 0.0; + type = 0; natom = 0; } diff --git a/source/module_cell/module_neighbor/sltk_atom.h b/source/module_cell/module_neighbor/sltk_atom.h index 89789534d1..76b4a8c314 100644 --- a/source/module_cell/module_neighbor/sltk_atom.h +++ b/source/module_cell/module_neighbor/sltk_atom.h @@ -10,11 +10,10 @@ // the type and the index, class FAtom { -private: - double d_x; - double d_y; - double d_z; - std::vector adjacent; +public: + double x; + double y; + double z; int type; int natom; @@ -22,19 +21,15 @@ class FAtom int cell_x; int cell_y; int cell_z; -public: -//========================================================== -// Default Constructor and deconstructor -//========================================================== FAtom(); FAtom(const double& x_in, const double& y_in, const double& z_in, const int& type_in, const int& natom_in, const int& cell_x_in, const int& cell_y_in, const int& cell_z_in) { - d_x = x_in; - d_y = y_in; - d_z = z_in; + x = x_in; + y = y_in; + z = z_in; type = type_in; natom = natom_in; cell_x = cell_x_in; @@ -43,27 +38,7 @@ class FAtom } ~FAtom() { - adjacent.clear(); - } - - void addAdjacent(FAtom& atom_in) - { - adjacent.push_back( &atom_in); } - const std::vector& getAdjacent() const { return adjacent; } - void clearAdjacent() { adjacent.clear(); } -//========================================================== -// MEMBER FUNCTION : -// EXPLAIN : get value -//========================================================== - const double& x() const { return d_x; } - const double& y() const { return d_y; } - const double& z() const { return d_z; } - const int& getType() const { return type;} - const int& getNatom() const { return natom;} - const int& getCellX() const { return cell_x; } - const int& getCellY() const { return cell_y; } - const int& getCellZ() const { return cell_z; } }; #endif diff --git a/source/module_cell/module_neighbor/sltk_atom_arrange.cpp b/source/module_cell/module_neighbor/sltk_atom_arrange.cpp index 8c259794f0..548389f55f 100644 --- a/source/module_cell/module_neighbor/sltk_atom_arrange.cpp +++ b/source/module_cell/module_neighbor/sltk_atom_arrange.cpp @@ -1,11 +1,11 @@ #include "sltk_atom_arrange.h" -#include "sltk_atom_input.h" + +#include "module_base/timer.h" #include "module_parameter/parameter.h" #include "sltk_grid.h" #include "sltk_grid_driver.h" -#include "module_base/timer.h" -// update the followig class in near future +// update the followig class in near future #include "module_cell/unitcell.h" atom_arrange::atom_arrange() @@ -16,126 +16,92 @@ atom_arrange::~atom_arrange() { } -double atom_arrange::set_sr_NL( - std::ofstream &ofs_in, - const std::string &output_level, - const double &rcutmax_Phi, - const double &rcutmax_Beta, - const bool gamma_only_local) +double atom_arrange::set_sr_NL(std::ofstream& ofs_in, + const std::string& output_level, + const double& rcutmax_Phi, + const double& rcutmax_Beta, + const bool gamma_only_local) { - ModuleBase::TITLE("atom_arrange","set_sr_NL"); - - if(output_level != "m") //xiaohui add 'output_level', 2015-09-16 - { - ofs_in << "\n\n\n\n"; - ofs_in << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; - ofs_in << " | |" << std::endl; - ofs_in << " | Search adjacent atoms: |" << std::endl; - ofs_in << " | Set the adjacent atoms for each atom and set the periodic boundary |" << std::endl; - ofs_in << " | condition for the atoms on real space FFT grid. For k-dependent |" << std::endl; - ofs_in << " | algorithm, we also need to set the sparse H and S matrix element |" << std::endl; - ofs_in << " | for each atom. |" << std::endl; - ofs_in << " | |" << std::endl; - ofs_in << " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << std::endl; - ofs_in << "\n\n\n\n"; - } + ModuleBase::TITLE("atom_arrange", "set_sr_NL"); + // check in use_overlap_matrix, + double sr = 0.0; + if (gamma_only_local) + { + sr = 2 * rcutmax_Phi + 0.001; + } + else + { + sr = 2 * (rcutmax_Phi + rcutmax_Beta) + 0.001; // 0.001 is added to make safe. + // sr = 2 * longest_orb_rcut + 0.001; + } - - //xiaohui add 'output_level' line, 2015-09-16 - if(output_level != "m") { ofs_in << "\n SETUP SEARCHING RADIUS FOR PROGRAM TO SEARCH ADJACENT ATOMS" << std::endl; -} - if(output_level != "m") { ofs_in << std::setprecision(3); -} - if(output_level != "m") { ModuleBase::GlobalFunc::OUT(ofs_in,"longest orb rcut (Bohr)",rcutmax_Phi); + if (output_level != "m") // xiaohui add 'output_level', 2015-09-16 + { + ofs_in << "\n\n\n\n"; + ofs_in << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << std::endl; + ofs_in << " | |" << std::endl; + ofs_in << " | Search adjacent atoms: |" << std::endl; + ofs_in << " | Set the adjacent atoms for each atom and set the periodic boundary |" << std::endl; + ofs_in << " | condition for the atoms on real space FFT grid. For k-dependent |" << std::endl; + ofs_in << " | algorithm, we also need to set the sparse H and S matrix element |" << std::endl; + ofs_in << " | for each atom. |" << std::endl; + ofs_in << " | |" << std::endl; + ofs_in << " <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << std::endl; + ofs_in << "\n\n\n\n"; + + ofs_in << "\n SETUP SEARCHING RADIUS FOR PROGRAM TO SEARCH ADJACENT ATOMS" << std::endl; + ofs_in << std::setprecision(3); + ModuleBase::GlobalFunc::OUT(ofs_in, "longest orb rcut (Bohr)", rcutmax_Phi); + ModuleBase::GlobalFunc::OUT(ofs_in, "longest nonlocal projector rcut (Bohr)", rcutmax_Beta); + ModuleBase::GlobalFunc::OUT(ofs_in, "search radius (Bohr)", sr); + } + return sr; } -// std::cout << " LONGEST NL PROJ RCUT : " << longest_nl_proj_rcut << std::endl; - if(output_level != "m") { ModuleBase::GlobalFunc::OUT(ofs_in,"longest nonlocal projector rcut (Bohr)", rcutmax_Beta); -} +void atom_arrange::search(const bool pbc_flag, + std::ofstream& ofs_in, + Grid_Driver& grid_d, + const UnitCell& ucell, + const double& search_radius_bohr, + const int& test_atom_in, + const bool test_only) +{ + ModuleBase::TITLE("atom_arrange", "search"); + ModuleBase::timer::tick("atom_arrange", "search"); - // check in use_overlap_matrix, - double sr = 0.0; - if(gamma_only_local) - { - sr = 2 * rcutmax_Phi + 0.01; - } - else - { - sr = 2 * (rcutmax_Phi +rcutmax_Beta) + 0.01; // 0.01 is added to make safe. - //sr = 2 * longest_orb_rcut + 0.01; - } + if (search_radius_bohr < 0.0) + { + ModuleBase::WARNING_QUIT("atom_arrange::search", " search_radius_bohr < 0,forbidden"); + } - return sr; -} + ModuleBase::GlobalFunc::OUT(ofs_in, "searching radius is (Bohr))", search_radius_bohr); + ModuleBase::GlobalFunc::OUT(ofs_in, "searching radius unit is (Bohr))", ucell.lat0); -void atom_arrange::search( - const bool pbc_flag, - std::ofstream &ofs_in, - Grid_Driver &grid_d, - const UnitCell &ucell, - const double &search_radius_bohr, - const int &test_atom_in, - const bool test_only) -{ - ModuleBase::TITLE("atom_arrange", "search"); - ModuleBase::timer::tick("atom_arrange","search"); -/* std::cout << "pbc_flag = " << pbc_flag << std::endl; - std::cout << "search_radius_bohr = " << search_radius_bohr << std::endl; - std::cout << "test_atom_in = " << test_atom_in << std::endl; - std::cout << "test_only = " << test_only << std::endl; - */ - assert( search_radius_bohr > 0.0 ); - -// OUT(ofs_in,"Atom coordinates reading from",PARAM.inp.stru_file); -// OUT(ofs_in,"The coordinate type",ucell.Coordinate); -// OUT(ofs_in,"Use cartesian(unit:lat0) coordinate","TRUE"); -// if(PARAM.inp.out_level != "m") OUT(ofs_in,"searching radius is (Bohr))", search_radius_bohr); -// if(PARAM.inp.out_level != "m") OUT(ofs_in,"searching radius unit is (Bohr))",ucell.lat0); - - ModuleBase::GlobalFunc::OUT(ofs_in,"searching radius is (Bohr))", search_radius_bohr); - ModuleBase::GlobalFunc::OUT(ofs_in,"searching radius unit is (Bohr))",ucell.lat0); - - assert(ucell.nat > 0); - //============================= - // Initial Atom information - //============================= - - const double radius_lat0unit = search_radius_bohr / ucell.lat0; - ModuleBase::timer::tick("atom_arrange", "Atom_input"); - - Atom_input at( - ofs_in, - ucell, - ucell.nat, - ucell.ntype, - pbc_flag, - radius_lat0unit, - test_atom_in); - ModuleBase::timer::tick("atom_arrange", "Atom_input"); - - //=========================================== - // Print important information in Atom_input - //=========================================== -// at.print(std::cout); -// at.print_xyz_format("1.xyz"); - //========================================= - // Construct Grid , Cells , Adjacent atoms - //========================================= - - ModuleBase::timer::tick("atom_arrange", "grid_d.init"); - - grid_d.init(ofs_in, ucell, at); - ModuleBase::timer::tick("atom_arrange", "grid_d.init"); + assert(ucell.nat > 0); + /* + 2024-12-04 Zhang Haochong + The neighboring atom search module has been completely rewritten. + The new algorithm places atoms into boxes with an edge length of twice the atomic radius. The neighboring + atom list stores the data using the atom's type and its index within that type. + By setting pbc_flag = false, periodic boundary conditions can be forcibly disabled. In this case, the search + process will not expand the supercell, and the neighboring atoms will only consider those within the original unit cell. + */ + const double radius_lat0unit = search_radius_bohr / ucell.lat0; + + // Atom_input at(ofs_in, ucell, pbc_flag, radius_lat0unit, test_atom_in); + + grid_d.init(ofs_in, ucell, radius_lat0unit, pbc_flag); + + // The screen output is very time-consuming. To avoid interfering with the timing, we will insert logging here earlier. ModuleBase::timer::tick("atom_arrange", "search"); - // test the adjacent atoms and the box. - if(test_only) - { - std::cout << "radius_lat0unit = " << radius_lat0unit << std::endl; - std::cout << "search_radius_bohr = " << search_radius_bohr << std::endl; + if (test_only) + { + std::cout << "radius_lat0unit = " << radius_lat0unit << std::endl; + std::cout << "search_radius_bohr = " << search_radius_bohr << std::endl; - ofs_in << " " << std::setw(5) << "Type" << std::setw(5) << "Atom" << std::setw(8) << "AdjNum" << std::endl; + ofs_in << " " << std::setw(5) << "Type" << std::setw(5) << "Atom" << std::setw(8) << "AdjNum" << std::endl; std::cout << std::setw(8) << "Labels" << std::setw(15) << "tau.x" << std::setw(15) << "tau.y" << std::setw(15) << "tau.z" << std::setw(8) << "box.x" << std::setw(8) << "box.y" << std::setw(8) << "box.z" << std::endl; @@ -147,7 +113,9 @@ void atom_arrange::search( ofs_in << " " << std::setw(5) << it << std::setw(5) << ia << std::setw(8) << grid_d.getAdjacentNum() + 1 << std::endl; - + std::cout << " adjacent atoms of " << ucell.atoms[it].label + std::to_string(ia + 1) << ":" << std::endl; + std::cout << "getAdjacentNum: " << grid_d.getAdjacentNum() + 1 << std::endl; + /* for (int ad = 0; ad < grid_d.getAdjacentNum() + 1; ad++) { ModuleBase::Vector3 tau = grid_d.getAdjacentTau(ad); @@ -155,11 +123,11 @@ void atom_arrange::search( std::cout << std::setw(8) << ucell.atoms[it].label + std::to_string(ia + 1) << std::setw(15) << tau.x << " " << std::setw(15) << tau.y << " " << std::setw(15) << tau.z << " " << std::setw(8) << box.x << std::setw(8) << box.y << std::setw(8) << box.z << std::endl; - } + }*/ } } ofs_in << "search neighboring atoms done." << std::endl; } return; -} \ No newline at end of file +} diff --git a/source/module_cell/module_neighbor/sltk_atom_arrange.h b/source/module_cell/module_neighbor/sltk_atom_arrange.h index 1d263adb3f..5dd1c94f98 100644 --- a/source/module_cell/module_neighbor/sltk_atom_arrange.h +++ b/source/module_cell/module_neighbor/sltk_atom_arrange.h @@ -3,7 +3,6 @@ #include "sltk_grid.h" #include "sltk_grid_driver.h" -#include "sltk_atom_input.h" class atom_arrange @@ -29,7 +28,6 @@ class atom_arrange const double& rcutmax_Phi, const double& rcutmax_Beta, const bool gamma_only_local); - }; #endif diff --git a/source/module_cell/module_neighbor/sltk_atom_input.cpp b/source/module_cell/module_neighbor/sltk_atom_input.cpp deleted file mode 100644 index 2436146932..0000000000 --- a/source/module_cell/module_neighbor/sltk_atom_input.cpp +++ /dev/null @@ -1,326 +0,0 @@ -#include "sltk_atom_input.h" - -#include "module_base/memory.h" -#include "module_parameter/parameter.h" -#include "sltk_grid.h" - -//========================================================== -// define constructor and deconstructor -//========================================================== -Atom_input::Atom_input(std::ofstream& ofs_in, - const UnitCell& ucell, - const int amount, - const int ntype, - const bool boundary_in, - const double radius_in, - const int& test_atom_in) - : periodic_boundary(boundary_in), radius(radius_in), expand_flag(false), glayerX(1), glayerX_minus(0), glayerY(1), - glayerY_minus(0), glayerZ(1), glayerZ_minus(0), test_atom_input(test_atom_in) -{ - ModuleBase::TITLE("Atom_input", "Atom_input"); - - if (test_atom_input) - { - ModuleBase::GlobalFunc::OUT(ofs_in, "ntype", ntype); - ModuleBase::GlobalFunc::OUT(ofs_in, "Amount(atom number)", amount); - ModuleBase::GlobalFunc::OUT(ofs_in, "Periodic_boundary", periodic_boundary); - ModuleBase::GlobalFunc::OUT(ofs_in, "Searching radius(lat0)", radius); - } - - if (radius < 0.0) - { - ModuleBase::WARNING_QUIT("atom_arrange::init", " search radius < 0,forbidden"); - } - // random selection, in order to estimate again. - this->x_min = ucell.atoms[0].tau[0].x; - this->y_min = ucell.atoms[0].tau[0].y; - this->z_min = ucell.atoms[0].tau[0].z; - this->x_max = ucell.atoms[0].tau[0].x; - this->y_max = ucell.atoms[0].tau[0].y; - this->z_max = ucell.atoms[0].tau[0].z; - - // calculate min & max value - for (int i = 0; i < ntype; i++) - { - for (int j = 0; j < ucell.atoms[i].na; j++) - { - x_min = std::min(x_min, ucell.atoms[i].tau[j].x); - x_max = std::max(x_max, ucell.atoms[i].tau[j].x); - y_min = std::min(y_min, ucell.atoms[i].tau[j].y); - y_max = std::max(y_max, ucell.atoms[i].tau[j].y); - z_min = std::min(z_min, ucell.atoms[i].tau[j].z); - z_max = std::max(z_max, ucell.atoms[i].tau[j].z); - } - } - - if (test_atom_input) - { - ModuleBase::GlobalFunc::OUT(ofs_in, "Find the coordinate range of the input atom(unit:lat0)."); - ModuleBase::GlobalFunc::OUT(ofs_in, "min_tau", x_min, y_min, z_min); - ModuleBase::GlobalFunc::OUT(ofs_in, "max_tau", x_max, y_max, z_max); - } - - //---------------------------------------------------------- - // CALL MEMBER FUNCTION : - // NAME : Check_Expand_Condition(check if swe need to - // expand grid,and generate 6 MEMBER VARIABLE(number of - // layers for 6 dimension) - // initial value for "glayerX,Y,Z" : 1 - // (if > 2 ,expand flag = 1) - // initial value for "glayerX,Y,Z_minus" : 0 - // ( if > 1 ,expand flag = 1) - //---------------------------------------------------------- - - this->Check_Expand_Condition(ucell); - - if (test_atom_input) - { - ModuleBase::GlobalFunc::OUT(ofs_in, "glayer+", glayerX, glayerY, glayerZ); - ModuleBase::GlobalFunc::OUT(ofs_in, "glayer-", glayerX_minus, glayerY_minus, glayerZ_minus); - ModuleBase::GlobalFunc::OUT(ofs_in, "expand_flag", expand_flag); - } - - //---------------------------------------------------------- - // CALL MEMBER FUNCTION : - // NAME : calculate_cells - // Calculate how many cells we need in each direction. - //---------------------------------------------------------- - this->calculate_cells(); - if (test_atom_input) - { - ModuleBase::GlobalFunc::OUT(ofs_in, "CellDim", cell_nx, cell_ny, cell_nz); - } - return; -} - -Atom_input::~Atom_input() -{ -} - -//============================================ -// !!!! May still have bug, be very careful!! -// should use the same algorithm to generate -// dxe, dye, dze in grid_meshcell.cpp. -//============================================ -void Atom_input::Check_Expand_Condition(const UnitCell& ucell) -{ - // ModuleBase::TITLE(GlobalV::ofs_running, "Atom_input", "Check_Expand_Condition"); - - if (!periodic_boundary) - { - return; - } - - /*2016-07-19, LiuXh - // the unit of extent_1DX,Y,Z is lat0. - // means still how far can be included now. - double extent_1DX = glayerX * clength0 - dmaxX; - while (radius > extent_1DX) - { - glayerX++; - extent_1DX = glayerX * clength0 - dmaxX; - } - double extent_1DY = glayerY * clength1 - dmaxY; - while (radius > extent_1DY) - { - glayerY++; - extent_1DY = glayerY * clength1 - dmaxY; - } - double extent_1DZ = glayerZ * clength2 - dmaxZ; - while (radius > extent_1DZ) - { - glayerZ++; - extent_1DZ = glayerZ * clength2 - dmaxZ; - } - - // in case the cell is not retangle. - // mohan added 2009-10-23 - // if this is not added, it's a serious bug. - glayerX++; - glayerY++; - glayerZ++; - if(test_atom_input) - { - GlobalV::ofs_running << " Extend distance from the (maxX,maxY,maxZ) direct position in this unitcell: " << - std::endl; - } - - if(test_atom_input)OUT(GlobalV::ofs_running,"ExtentDim+",extent_1DX,extent_1DY,extent_1DZ); - - double extent_1DX_minus = glayerX_minus * clength0 + dminX; - while (radius > extent_1DX_minus) - { - glayerX_minus++; - extent_1DX_minus = glayerX_minus * clength0 + dminX; - } - double extent_1DY_minus = glayerY_minus * clength1 + dminY; - while (radius > extent_1DY_minus) - { - glayerY_minus++; - extent_1DY_minus = glayerY_minus * clength1 + dminY; - } - double extent_1DZ_minus = glayerZ_minus * clength2 + dminZ; - while (radius > extent_1DZ_minus) - { - glayerZ_minus++; - extent_1DZ_minus = glayerZ_minus * clength2 + dminZ; - } - - // in case the cell is not retangle. - // mohan added 2009-10-23 - // if this is not added, it's a serious bug. - glayerX_minus++; - glayerY_minus++; - glayerZ_minus++; - - //glayerX_minus++; - //glayerY_minus++; - //glayerZ_minus++; - 2016-07-19, LiuXh*/ - // Begin, 2016-07-19, LiuXh - double a23_1 = ucell.latvec.e22 * ucell.latvec.e33 - ucell.latvec.e23 * ucell.latvec.e32; - double a23_2 = ucell.latvec.e21 * ucell.latvec.e33 - ucell.latvec.e23 * ucell.latvec.e31; - double a23_3 = ucell.latvec.e21 * ucell.latvec.e32 - ucell.latvec.e22 * ucell.latvec.e31; - double a23_norm = sqrt(a23_1 * a23_1 + a23_2 * a23_2 + a23_3 * a23_3); - double extend_v = a23_norm * radius; - double extend_d1 = extend_v / ucell.omega * ucell.lat0 * ucell.lat0 * ucell.lat0; - int extend_d11 = static_cast(extend_d1); - // 2016-09-05, LiuXh - if (extend_d1 - extend_d11 > 0.0) - { - extend_d11 += 1; - } - - double a31_1 = ucell.latvec.e32 * ucell.latvec.e13 - ucell.latvec.e33 * ucell.latvec.e12; - double a31_2 = ucell.latvec.e31 * ucell.latvec.e13 - ucell.latvec.e33 * ucell.latvec.e11; - double a31_3 = ucell.latvec.e31 * ucell.latvec.e12 - ucell.latvec.e32 * ucell.latvec.e11; - double a31_norm = sqrt(a31_1 * a31_1 + a31_2 * a31_2 + a31_3 * a31_3); - double extend_d2 = a31_norm * radius / ucell.omega * ucell.lat0 * ucell.lat0 * ucell.lat0; - int extend_d22 = static_cast(extend_d2); - // 2016-09-05, LiuXh - if (extend_d2 - extend_d22 > 0.0) - { - extend_d22 += 1; - } - - double a12_1 = ucell.latvec.e12 * ucell.latvec.e23 - ucell.latvec.e13 * ucell.latvec.e22; - double a12_2 = ucell.latvec.e11 * ucell.latvec.e23 - ucell.latvec.e13 * ucell.latvec.e21; - double a12_3 = ucell.latvec.e11 * ucell.latvec.e22 - ucell.latvec.e12 * ucell.latvec.e21; - double a12_norm = sqrt(a12_1 * a12_1 + a12_2 * a12_2 + a12_3 * a12_3); - double extend_d3 = a12_norm * radius / ucell.omega * ucell.lat0 * ucell.lat0 * ucell.lat0; - int extend_d33 = static_cast(extend_d3); - // 2016-09-05, LiuXh - if (extend_d3 - extend_d33 > 0.0) - { - extend_d33 += 1; - } - - glayerX = extend_d11 + 1; - glayerY = extend_d22 + 1; - glayerZ = extend_d33 + 1; - // Begin, 2016-09-05, LiuXh - // glayerX_minus = extend_d11 +1; - // glayerY_minus = extend_d22 +1; - // glayerZ_minus = extend_d33 +1; - glayerX_minus = extend_d11; - glayerY_minus = extend_d22; - glayerZ_minus = extend_d33; - // End, 2016-09-05, LiuXh - - if (glayerX == 1) - { - glayerX++; - } - if (glayerY == 1) - { - glayerY++; - } - if (glayerZ == 1) - { - glayerZ++; - } - if (glayerX_minus == 1) - { - glayerX_minus++; - } - if (glayerY_minus == 1) - { - glayerY_minus++; - } - if (glayerZ_minus == 1) - { - glayerZ_minus++; - } - // End, 2016-07-19, LiuXh - /* - if(test_atom_input) - { - GlobalV::ofs_running << " Extend distance from the (minX,minY,minZ) direct position in this unitcell: " << - std::endl; - } - - if(test_atom_input)OUT(GlobalV::ofs_running,"ExtentDim-",extent_1DX_minus,extent_1DY_minus,extent_1DZ_minus); - */ - //---------------------------------------------------------- - // EXPLAIN : if extent don't satisfty the searching - // requiment, we must expand one more layer - //---------------------------------------------------------- - - if (glayerX > 2 || glayerY > 2 || glayerZ > 2) - { - this->expand_flag = true; - } - else if (glayerX_minus > 1 || glayerX_minus > 1 || glayerX_minus > 1) - { - this->expand_flag = true; - } - else - { - this->expand_flag = false; - } - return; -} - -void Atom_input::calculate_cells() -{ - ModuleBase::TITLE("Atom_input", "calculate_cells"); - //---------------------------------------------------------- - // EXPLAIN : - // Expand_Case : Simple , we already know the cell numbres, - // all the trouble is only to construct adjacentset using all - // the cells. - // Not_Expand_Case : Using searching radius to construct - // the cells , trouble here,but is the convenience of searching - // time , we then only need to search 27-adjacent cell for each cell. - //---------------------------------------------------------- - if (expand_flag) - { - cell_nx = glayerX + glayerX_minus; - cell_ny = glayerY + glayerY_minus; - cell_nz = glayerZ + glayerZ_minus; - } - else - { - // maybe a bug, if we don't use direct - // coordinates, mohan note 2011-04-14 - double real_nx, real_ny, real_nz; - real_nx = (x_max - x_min) / radius; - real_ny = (y_max - y_min) / radius; - real_nz = (z_max - z_min) / radius; - cell_nx = static_cast(real_nx) + 1; - cell_ny = static_cast(real_ny) + 1; - cell_nz = static_cast(real_nz) + 1; - } - - //================ - // Wrong ! - //================ - // if(int_nx != real_nx) this->cell_nx++; - // if(int_ny != real_ny) this->cell_ny++; - // if(int_nz != real_nz) this->cell_nz++; - //======================================= - // Not need because if int_nx = real_nx, - // the position belong to the next cell - //======================================= - return; -} diff --git a/source/module_cell/module_neighbor/sltk_atom_input.h b/source/module_cell/module_neighbor/sltk_atom_input.h deleted file mode 100644 index 0b32777244..0000000000 --- a/source/module_cell/module_neighbor/sltk_atom_input.h +++ /dev/null @@ -1,143 +0,0 @@ -#ifndef ATOM_INPUT_H -#define ATOM_INPUT_H - -#include "module_cell/unitcell.h" -#include "sltk_atom.h" - -class Atom_input -{ - public: - //========================================================== - // Constructors and destructor - //========================================================== - Atom_input(std::ofstream& ofs_in, - const UnitCell& ucell, - const int amount = 0, // number of atoms - const int ntype = 0, // number of atom_types - const bool boundary = true, // 1 : periodic ocndition - const double radius_in = 0, // searching radius - const int& test_atom_in = 0 // caoyu reconst 2021-05-24 - ); - ~Atom_input(); - - public: - bool getExpandFlag() const - { - return expand_flag; - } - - int getBoundary() const - { - return periodic_boundary; - } - - double getRadius() const - { - return radius; - } - - //========================================================== - // - //========================================================== - double minX() const - { - return x_min; - } - - double minY() const - { - return y_min; - } - - double minZ() const - { - return z_min; - } - - //========================================================== - // - //========================================================== - int getCell_nX() const - { - return cell_nx; - } - - int getCell_nY() const - { - return cell_ny; - } - - int getCell_nZ() const - { - return cell_nz; - } - - //========================================================== - // - //========================================================== - int getGrid_layerX() const - { - return glayerX; - } - - int getGrid_layerX_minus() const - { - return glayerX_minus; - } - - int getGrid_layerY() const - { - return glayerY; - } - - int getGrid_layerY_minus() const - { - return glayerY_minus; - } - - int getGrid_layerZ() const - { - return glayerZ; - } - - int getGrid_layerZ_minus() const - { - return glayerZ_minus; - } - - private: - int test_atom_input; // caoyu reconst 2021-05-24 - bool periodic_boundary; - - double radius; - - double x_min; - double y_min; - double z_min; - double x_max; - double y_max; - double z_max; - //========================================================== - // MEMBRE FUNCTION : - // NAME : Check_Expand_Condition - //========================================================== - void Check_Expand_Condition(const UnitCell& ucell); - bool expand_flag; - int glayerX; - int glayerX_minus; - int glayerY; - int glayerY_minus; - int glayerZ; - int glayerZ_minus; - - //========================================================== - // MEMBRE FUNCTION : - // NAME : Expand_Grid - //========================================================== - void calculate_cells(); - int cell_nx; - int cell_ny; - int cell_nz; -}; - -#endif diff --git a/source/module_cell/module_neighbor/sltk_grid.cpp b/source/module_cell/module_neighbor/sltk_grid.cpp index 52d9cdb760..d20f9bb625 100644 --- a/source/module_cell/module_neighbor/sltk_grid.cpp +++ b/source/module_cell/module_neighbor/sltk_grid.cpp @@ -4,131 +4,171 @@ #include "module_base/global_variable.h" #include "module_base/memory.h" #include "module_base/timer.h" -#include "sltk_atom_input.h" -//================== -// Class CellSet -//================== -CellSet::CellSet() +Grid::Grid(const int& test_grid_in) : test_grid(test_grid_in) { - in_grid[0] = 0; - in_grid[1] = 0; - in_grid[2] = 0; } -Grid::Grid(const int& test_grid_in) : test_grid(test_grid_in) {} - -Grid::~Grid() {} +Grid::~Grid() +{ + this->clear_atoms(); +} -void Grid::init(std::ofstream& ofs_in, const UnitCell& ucell, const Atom_input& input) +void Grid::init(std::ofstream& ofs_in, const UnitCell& ucell, const double radius_in, const bool boundary) { ModuleBase::TITLE("SLTK_Grid", "init"); + ModuleBase::timer::tick("atom_arrange", "grid_d.init"); + this->pbc = boundary; + this->sradius2 = radius_in * radius_in; + this->sradius = radius_in; - this->setMemberVariables(ofs_in, input); - this->Build_Hash_Table(ucell, input); - this->setBoundaryAdjacent(ofs_in, input); -} + ModuleBase::GlobalFunc::OUT(ofs_in, "PeriodicBoundary", this->pbc); + ModuleBase::GlobalFunc::OUT(ofs_in, "Radius(unit:lat0)", sradius); -//========================================================== -// MEMBER FUNCTION : -// NAME : setMemberVariables(read in data from Atom_input) -//========================================================== -void Grid::setMemberVariables(std::ofstream& ofs_in, // output data to ofs - const Atom_input& input) -{ - ModuleBase::TITLE("SLTK_Grid", "setMemberVariables"); + this->Check_Expand_Condition(ucell); + ModuleBase::GlobalFunc::OUT(ofs_in, "glayer", glayerX, glayerY, glayerZ); + ModuleBase::GlobalFunc::OUT(ofs_in, "glayer_minus", glayerX_minus, glayerY_minus, glayerZ_minus); - // mohan add 2010-09-05 - // AdjacentSet::call_times = 0; + this->setMemberVariables(ofs_in, ucell); + this->Construct_Adjacent(ucell); + ModuleBase::timer::tick("atom_arrange", "grid_d.init"); +} - this->pbc = input.getBoundary(); - this->sradius2 = input.getRadius() * input.getRadius(); - this->sradius = input.getRadius(); - this->expand_flag = input.getExpandFlag(); +void Grid::Check_Expand_Condition(const UnitCell& ucell) +{ + // ModuleBase::TITLE(GlobalV::ofs_running, "Atom_input", "Check_Expand_Condition"); - if (test_grid) + if (!pbc) { - ModuleBase::GlobalFunc::OUT(ofs_in, "PeriodicBoundary", this->pbc); - ModuleBase::GlobalFunc::OUT(ofs_in, "Radius(unit:lat0)", sradius); - ModuleBase::GlobalFunc::OUT(ofs_in, "Expand_flag", expand_flag); + return; } - //---------------------------------------------------------- - // EXPLAIN : (d_minX,d_minY,d_minZ)minimal value of - // x[] ,y[] , z[] - //---------------------------------------------------------- - this->d_minX = input.minX(); - this->d_minY = input.minY(); - this->d_minZ = input.minZ(); - if (test_grid) - { - ModuleBase::GlobalFunc::OUT(ofs_in, "MinCoordinate", d_minX, d_minY, d_minZ); - } - //---------------------------------------------------------- - // set dx, dy, dz - //---------------------------------------------------------- - this->cell_nx = input.getCell_nX(); - this->cell_ny = input.getCell_nY(); - this->cell_nz = input.getCell_nZ(); - if (test_grid) - { - ModuleBase::GlobalFunc::OUT(ofs_in, "CellNumber", cell_nx, cell_ny, cell_nz); - } + /*2016-07-19, LiuXh + // the unit of extent_1DX,Y,Z is lat0. + // means still how far can be included now. + double extent_1DX = glayerX * clength0 - dmaxX; + while (radius > extent_1DX) + { + glayerX++; + extent_1DX = glayerX * clength0 - dmaxX; + } + double extent_1DY = glayerY * clength1 - dmaxY; + while (radius > extent_1DY) + { + glayerY++; + extent_1DY = glayerY * clength1 - dmaxY; + } + double extent_1DZ = glayerZ * clength2 - dmaxZ; + while (radius > extent_1DZ) + { + glayerZ++; + extent_1DZ = glayerZ * clength2 - dmaxZ; + } - Cell.resize(cell_nx); - for (int i = 0; i < cell_nx; i++) - { - Cell[i].resize(cell_ny); - for (int j = 0; j < cell_ny; j++) + // in case the cell is not retangle. + // mohan added 2009-10-23 + // if this is not added, it's a serious bug. + glayerX++; + glayerY++; + glayerZ++; + if(test_atom_input) { - Cell[i][j].resize(cell_nz); + GlobalV::ofs_running << " Extend distance from the (maxX,maxY,maxZ) direct position in this unitcell: " << + std::endl; } - } - this->true_cell_x = input.getGrid_layerX_minus(); - this->true_cell_y = input.getGrid_layerY_minus(); - this->true_cell_z = input.getGrid_layerZ_minus(); -} -void Grid::setBoundaryAdjacent(std::ofstream& ofs_in, const Atom_input& input) -{ - if (expand_flag) - { - this->Construct_Adjacent_expand(true_cell_x, true_cell_y, true_cell_z); - } - else - { - this->Construct_Adjacent_begin(); - } + if(test_atom_input)OUT(GlobalV::ofs_running,"ExtentDim+",extent_1DX,extent_1DY,extent_1DZ); + + double extent_1DX_minus = glayerX_minus * clength0 + dminX; + while (radius > extent_1DX_minus) + { + glayerX_minus++; + extent_1DX_minus = glayerX_minus * clength0 + dminX; + } + double extent_1DY_minus = glayerY_minus * clength1 + dminY; + while (radius > extent_1DY_minus) + { + glayerY_minus++; + extent_1DY_minus = glayerY_minus * clength1 + dminY; + } + double extent_1DZ_minus = glayerZ_minus * clength2 + dminZ; + while (radius > extent_1DZ_minus) + { + glayerZ_minus++; + extent_1DZ_minus = glayerZ_minus * clength2 + dminZ; + } + + // in case the cell is not retangle. + // mohan added 2009-10-23 + // if this is not added, it's a serious bug. + glayerX_minus++; + glayerY_minus++; + glayerZ_minus++; + + //glayerX_minus++; + //glayerY_minus++; + //glayerZ_minus++; + 2016-07-19, LiuXh*/ + // Begin, 2016-07-19, LiuXh + double a23_1 = ucell.latvec.e22 * ucell.latvec.e33 - ucell.latvec.e23 * ucell.latvec.e32; + double a23_2 = ucell.latvec.e21 * ucell.latvec.e33 - ucell.latvec.e23 * ucell.latvec.e31; + double a23_3 = ucell.latvec.e21 * ucell.latvec.e32 - ucell.latvec.e22 * ucell.latvec.e31; + double a23_norm = sqrt(a23_1 * a23_1 + a23_2 * a23_2 + a23_3 * a23_3); + double extend_v = a23_norm * sradius; + double extend_d1 = extend_v / ucell.omega * ucell.lat0 * ucell.lat0 * ucell.lat0; + int extend_d11 = std::ceil(extend_d1); + + double a31_1 = ucell.latvec.e32 * ucell.latvec.e13 - ucell.latvec.e33 * ucell.latvec.e12; + double a31_2 = ucell.latvec.e31 * ucell.latvec.e13 - ucell.latvec.e33 * ucell.latvec.e11; + double a31_3 = ucell.latvec.e31 * ucell.latvec.e12 - ucell.latvec.e32 * ucell.latvec.e11; + double a31_norm = sqrt(a31_1 * a31_1 + a31_2 * a31_2 + a31_3 * a31_3); + double extend_d2 = a31_norm * sradius / ucell.omega * ucell.lat0 * ucell.lat0 * ucell.lat0; + int extend_d22 = std::ceil(extend_d2); + + double a12_1 = ucell.latvec.e12 * ucell.latvec.e23 - ucell.latvec.e13 * ucell.latvec.e22; + double a12_2 = ucell.latvec.e11 * ucell.latvec.e23 - ucell.latvec.e13 * ucell.latvec.e21; + double a12_3 = ucell.latvec.e11 * ucell.latvec.e22 - ucell.latvec.e12 * ucell.latvec.e21; + double a12_norm = sqrt(a12_1 * a12_1 + a12_2 * a12_2 + a12_3 * a12_3); + double extend_d3 = a12_norm * sradius / ucell.omega * ucell.lat0 * ucell.lat0 * ucell.lat0; + int extend_d33 = std::ceil(extend_d3); + // 2016-09-05, LiuXh + + glayerX = extend_d11 + 1; + glayerY = extend_d22 + 1; + glayerZ = extend_d33 + 1; + glayerX_minus = extend_d11; + glayerY_minus = extend_d22; + glayerZ_minus = extend_d33; + // End, 2016-09-05, LiuXh + } -void Grid::Build_Hash_Table(const UnitCell& ucell, const Atom_input& input) + +void Grid::setMemberVariables(std::ofstream& ofs_in, // output data to ofs + const UnitCell& ucell) { - ModuleBase::timer::tick("Grid", "Build_Hash_Table"); + ModuleBase::TITLE("SLTK_Grid", "setMemberVariables"); + + this->clear_atoms(); + + // random selection, in order to estimate again. + this->x_min = ucell.atoms[0].tau[0].x; + this->y_min = ucell.atoms[0].tau[0].y; + this->z_min = ucell.atoms[0].tau[0].z; + this->x_max = ucell.atoms[0].tau[0].x; + this->y_max = ucell.atoms[0].tau[0].y; + this->z_max = ucell.atoms[0].tau[0].z; - // TODO in case expand == false, the following code is over malloc - for (int i = 0; i < cell_nx; i++) - { - for (int j = 0; j < cell_ny; j++) - { - for (int k = 0; k < cell_nz; k++) - { - Cell[i][j][k].atom_map.resize(ucell.ntype); - for (int it = 0; it < ucell.ntype; ++it) - { - Cell[i][j][k].atom_map[it].resize(ucell.atoms[it].na); - } - } - } - } ModuleBase::Vector3 vec1(ucell.latvec.e11, ucell.latvec.e12, ucell.latvec.e13); ModuleBase::Vector3 vec2(ucell.latvec.e21, ucell.latvec.e22, ucell.latvec.e23); ModuleBase::Vector3 vec3(ucell.latvec.e31, ucell.latvec.e32, ucell.latvec.e33); - for (int ix = -input.getGrid_layerX_minus(); ix < input.getGrid_layerX(); ix++) + // calculate min & max value + for (int ix = -glayerX_minus; ix < glayerX; ix++) { - for (int iy = -input.getGrid_layerY_minus(); iy < input.getGrid_layerY(); iy++) + for (int iy = -glayerY_minus; iy < glayerY; iy++) { - for (int iz = -input.getGrid_layerZ_minus(); iz < input.getGrid_layerZ(); iz++) + for (int iz = -glayerZ_minus; iz < glayerZ; iz++) { for (int i = 0; i < ucell.ntype; i++) { @@ -137,360 +177,155 @@ void Grid::Build_Hash_Table(const UnitCell& ucell, const Atom_input& input) double x = ucell.atoms[i].tau[j].x + vec1[0] * ix + vec2[0] * iy + vec3[0] * iz; double y = ucell.atoms[i].tau[j].y + vec1[1] * ix + vec2[1] * iy + vec3[1] * iz; double z = ucell.atoms[i].tau[j].z + vec1[2] * ix + vec2[2] * iy + vec3[2] * iz; - FAtom atom(x, y, z, i, j, ix, iy, iz); - int a, b, c; - if (expand_flag) - { - // EXPLAIN : In expand grid case, - // the input cell is exactly the same as input file. - a = atom.getCellX() + true_cell_x; - b = atom.getCellY() + true_cell_y; - c = atom.getCellZ() + true_cell_z; - } - else - { - //---------------------------------------------------------- - // EXPLAIN : Not expand case , the cell is 'cubic', - // the three dimension length : - // cell_x_length = |radius| - // cell_y_length = |radius| - // cell_z_length = |radius| - // - // So we don't need crystal coordinate to locate the atom. - // We use cartesian coordinate directly. - //---------------------------------------------------------- - a = static_cast(std::floor((atom.x() - this->d_minX) / this->sradius)); - b = static_cast(std::floor((atom.y() - this->d_minY) / this->sradius)); - c = static_cast(std::floor((atom.z() - this->d_minZ) / this->sradius)); - } - - this->Cell[a][b][c].atom_map[atom.getType()][atom.getNatom()] = atom; + x_min = std::min(x_min, x); + x_max = std::max(x_max, x); + y_min = std::min(y_min, y); + y_max = std::max(y_max, y); + z_min = std::min(z_min, z); + z_max = std::max(z_max, z); } } } } } - ModuleBase::timer::tick("Grid", "Build_Hash_Table"); -} + ModuleBase::GlobalFunc::OUT(ofs_in, "Find the coordinate range of the input atom(unit:lat0)."); + ModuleBase::GlobalFunc::OUT(ofs_in, "min_tau", x_min, y_min, z_min); + ModuleBase::GlobalFunc::OUT(ofs_in, "max_tau", x_max, y_max, z_max); -void Grid::Construct_Adjacent_expand(const int true_i, const int true_j, const int true_k) -{ - ModuleBase::timer::tick("Grid", "Construct_Adjacent_expand"); + this->box_edge_length = sradius + 0.1; // To avoid edge cases, the size of the box is slightly increased. + +/* warning box algorithm + this->box_nx = std::ceil((this->x_max - this->x_min) / box_edge_length) + 1; + this->box_ny = std::ceil((this->y_max - this->y_min) / box_edge_length) + 1; + this->box_nz = std::ceil((this->z_max - this->z_min) / box_edge_length) + 1; + ModuleBase::GlobalFunc::OUT(ofs_in, "BoxNumber", box_nx, box_ny, box_nz); - //----------------------------------------------------------- - // EXPLAIN : (true_i,true_j,true_k) is the cell we want - // to found AdjacentSet.And other cell save the displacement - // of center_grid in 'in_grid' - //----------------------------------------------------------- - for (int i = 0; i < this->cell_nx; i++) + atoms_in_box.resize(this->box_nx); + for (int i = 0; i < this->box_nx; i++) { - for (int j = 0; j < this->cell_ny; j++) + atoms_in_box[i].resize(this->box_ny); + for (int j = 0; j < this->box_ny; j++) { - for (int k = 0; k < this->cell_nz; k++) - { - this->Cell[i][j][k].in_grid[0] = i - true_i; - this->Cell[i][j][k].in_grid[1] = j - true_j; - this->Cell[i][j][k].in_grid[2] = k - true_k; - } + atoms_in_box[i][j].resize(this->box_nz); } } - - //---------------------------------------------------------- - // EXPLAIN : Only construct AdjacentSet for 'true' cell. - //---------------------------------------------------------- - for (auto& atom_vector: this->Cell[true_i][true_j][true_k].atom_map) + */ + this->box_nx = glayerX + glayerX_minus; + this->box_ny = glayerY + glayerY_minus; + this->box_nz = glayerZ + glayerZ_minus; + ModuleBase::GlobalFunc::OUT(ofs_in, "BoxNumber", box_nx, box_ny, box_nz); + + atoms_in_box.resize(this->box_nx); + for (int i = 0; i < this->box_nx; i++) { - for (auto& fatom: atom_vector) + atoms_in_box[i].resize(this->box_ny); + for (int j = 0; j < this->box_ny; j++) { - if (this->pbc) - { - Construct_Adjacent_expand_periodic(true_i, true_j, true_k, fatom); - // std::cout << "fatom1 = " << fatom.getNatom() << " " << fatom.getAdjacent().size() << std::endl; - } - else - { - ModuleBase::WARNING_QUIT("Construct_Adjacent_expand", "\n Expand case, must use periodic boundary."); - } + atoms_in_box[i][j].resize(this->box_nz); } } - ModuleBase::timer::tick("Grid", "Construct_Adjacent_expand"); -} - -void Grid::Construct_Adjacent_expand_periodic(const int true_i, const int true_j, const int true_k, FAtom& fatom) -{ - // if (test_grid)ModuleBase::TITLE(ofs_running, "Grid", "Construct_Adjacent_expand_periodic"); - ModuleBase::timer::tick("Grid", "Construct_Adjacent_expand_periodic"); - - for (int i = 0; i < this->cell_nx; i++) + for (int ix = -glayerX_minus; ix < glayerX; ix++) { - for (int j = 0; j < this->cell_ny; j++) + for (int iy = -glayerY_minus; iy < glayerY; iy++) { - for (int k = 0; k < this->cell_nz; k++) + for (int iz = -glayerZ_minus; iz < glayerZ; iz++) { - for (auto& atom_vector: this->Cell[i][j][k].atom_map) + for (int i = 0; i < ucell.ntype; i++) { - for (auto& fatom2: atom_vector) + for (int j = 0; j < ucell.atoms[i].na; j++) { - Construct_Adjacent_final(true_i, true_j, true_k, fatom, i, j, k, fatom2); + double x = ucell.atoms[i].tau[j].x + vec1[0] * ix + vec2[0] * iy + vec3[0] * iz; + double y = ucell.atoms[i].tau[j].y + vec1[1] * ix + vec2[1] * iy + vec3[1] * iz; + double z = ucell.atoms[i].tau[j].z + vec1[2] * ix + vec2[2] * iy + vec3[2] * iz; + FAtom atom(x, y, z, i, j, ix, iy, iz); + int box_i_x, box_i_y, box_i_z; + //this->getBox(box_i_x, box_i_y, box_i_z, x, y, z); + box_i_x = ix + glayerX_minus; + box_i_y = iy + glayerY_minus; + box_i_z = iz + glayerZ_minus; + this->atoms_in_box[box_i_x][box_i_y][box_i_z].push_back(atom); } } } } } - ModuleBase::timer::tick("Grid", "Construct_Adjacent_expand_periodic"); + + this->all_adj_info.resize(ucell.ntype); + for (int i = 0; i < ucell.ntype; i++) + { + this->all_adj_info[i].resize(ucell.atoms[i].na); + } } -void Grid::Construct_Adjacent_begin() +void Grid::Construct_Adjacent(const UnitCell& ucell) { - // if (test_grid)ModuleBase::TITLE(ofs_running, "Grid", "Construct_Adjacent_begin"); - - //---------------------------------------------------------- - // EXPLAIN : Searching in all cells in this grid - //---------------------------------------------------------- + ModuleBase::timer::tick("Grid", "Construct_Adjacent_expand"); - for (int i = 0; i < this->cell_nx; i++) + for (int i_type = 0; i_type < ucell.ntype; i_type++) { - for (int j = 0; j < this->cell_ny; j++) + for (int j_atom = 0; j_atom < ucell.atoms[i_type].na; j_atom++) { - for (int k = 0; k < this->cell_nz; k++) - { - //---------------------------------------------------------- - // EXPLAIN : Cell length == Number of atoms in this cell - //---------------------------------------------------------- - for (auto& atom_vector: this->Cell[i][j][k].atom_map) - { - for (auto& fatom2: atom_vector) - { - // pbc: periodic boundary condition - if (this->pbc) - { - Construct_Adjacent_periodic(i, j, k, fatom2); - } - else - { - Construct_Adjacent_nature(i, j, k, fatom2); - } - } - } // ia - } // k - } // j - } // i + FAtom atom(ucell.atoms[i_type].tau[j_atom].x, + ucell.atoms[i_type].tau[j_atom].y, + ucell.atoms[i_type].tau[j_atom].z, + i_type, + j_atom, + 0, 0 ,0); - return; + this->Construct_Adjacent_near_box(atom); + } + } + ModuleBase::timer::tick("Grid", "Construct_Adjacent_expand"); } -void Grid::Construct_Adjacent_nature(const int i, const int j, const int k, FAtom& fatom1) +void Grid::Construct_Adjacent_near_box(const FAtom& fatom) { - // if(test_grid)ModuleBase::TITLE(ofs_running,"Grid","Construct_Adjacent_nature"); - for (int i2 = i - 1; i2 <= i + 1; i2++) + // if (test_grid)ModuleBase::TITLE(ofs_running, "Grid", "Construct_Adjacent_expand_periodic"); + ModuleBase::timer::tick("Grid", "Construct_Adjacent_expand_periodic"); + int box_i_x, box_i_y, box_i_z; + this->getBox(box_i_x, box_i_y, box_i_z, fatom.x, fatom.y, fatom.z); + +/* for (int box_i_x_adj = std::max(box_i_x - 1, 0); box_i_x_adj <= std::min(box_i_x + 1, box_nx - 1); box_i_x_adj++) { - if (i2 < cell_nx && i2 >= 0) + for (int box_i_y_adj = std::max(box_i_y - 1, 0); box_i_y_adj <= std::min(box_i_y + 1, box_ny - 1); box_i_y_adj++) { - for (int j2 = j - 1; j2 <= j + 1; j2++) + for (int box_i_z_adj = std::max(box_i_z - 1, 0); box_i_z_adj <= std::min(box_i_z + 1, box_nz - 1); box_i_z_adj++) { - if (j2 < cell_ny && j2 >= 0) - { - for (int k2 = k - 1; k2 <= k + 1; k2++) - { - if (k2 < cell_nz && k2 >= 0) - { - for (auto& atom_vector: this->Cell[i2][j2][k2].atom_map) - { - for (auto& fatom2: atom_vector) - { - Construct_Adjacent_final(i, j, k, fatom1, i2, j2, k2, fatom2); - } // ia2 - } - } - } // k2 - } - } // j2 - } - } // 2 - - return; -} - -void Grid::Construct_Adjacent_periodic(const int i, const int j, const int k, FAtom& fatom1) -{ - // if(test_grid)ModuleBase::TITLE(ofs_running,"Grid","Construct_Adjacent_periodic"); - bool first_i = true; - - for (int i2 = i - 1; i2 <= i + 1; i2++) + */ + for (int box_i_x_adj = 0; box_i_x_adj < glayerX + glayerX_minus; box_i_x_adj++) { - bool first_j = true; - - for (int j2 = j - 1; j2 <= j + 1; j2++) + for (int box_i_y_adj = 0; box_i_y_adj < glayerY + glayerY_minus; box_i_y_adj++) { - bool first_k = true; - - for (int k2 = k - 1; k2 <= k + 1; k2++) + for (int box_i_z_adj = 0; box_i_z_adj < glayerZ + glayerZ_minus; box_i_z_adj++) { - int temp_i = i2; - int temp_j = j2; - int temp_k = k2; - - int g0 = 0; - int g1 = 0; - int g2 = 0; - - if (i2 < 0) - { - g0 = -1; - - if (first_i) - { - if (cell_nx >= 2) - { - i2--; - temp_i--; - } - - first_i = false; - } - - i2 += cell_nx; - } - else if (i2 >= cell_nx) - { - g0 = 1; - i2 -= cell_nx; - } - - if (j2 < 0) - { - g1 = -1; - - if (first_j) - { - if (cell_ny >= 2) - { - j2--; - temp_j--; - } - - first_j = false; - } - - j2 += cell_ny; - } - else if (j2 >= cell_ny) - { - g1 = 1; - j2 -= cell_ny; - } - - if (k2 < 0) - { - g2 = -1; - - if (first_k) - { - if (cell_nz >= 2) - { - k2--; - temp_k--; - } - - first_k = false; - } - - k2 += cell_nz; - } - else if (k2 >= cell_nz) + for (auto &fatom2 : this->atoms_in_box[box_i_x_adj][box_i_y_adj][box_i_z_adj]) { - g2 = 1; - k2 -= cell_nz; - } - - Cell[i2][j2][k2].in_grid[0] = g0; - - Cell[i2][j2][k2].in_grid[1] = g1; - Cell[i2][j2][k2].in_grid[2] = g2; - - for (auto& atom_vector: this->Cell[i2][j2][k2].atom_map) - { - for (auto& fatom2: atom_vector) - { - Construct_Adjacent_final(i, j, k, fatom1, i2, j2, k2, fatom2); - } // ia2 + this->Construct_Adjacent_final(fatom, &fatom2); } - - i2 = temp_i; - - j2 = temp_j; - - k2 = temp_k; // resume i2 j2 k2 - } // k2 - } // j2 - } // i2 - - return; + } + } + } + ModuleBase::timer::tick("Grid", "Construct_Adjacent_expand_periodic"); } -void Grid::Construct_Adjacent_final(const int i, - const int j, - const int k, - FAtom& fatom1, - const int i2, - const int j2, - const int k2, - FAtom& fatom2) +void Grid::Construct_Adjacent_final(const FAtom& fatom1, + FAtom* fatom2) { - //---------------------------------------------------------- - // EXPLAIN : expand_case not_expand_case - // (i,j,k,ia) only the 'true' cell only the 'true' grid - // (i2,j2,k2,ia2) all atoms in grid all atoms in 27*cell - //---------------------------------------------------------- - // (suitable for small cell periodic condition) - // Expand_Case : many 'pseudo' cells, only one true cell, - // one grid(true grid). - // Advantage : only the atoms in 'true' cell need to construct - // AdjacentSet. - // Disadvantage : must search all atoms in true grid to construct - // AdjacentSet. - // - // (suitable for large cell periodic/nature condition,here - // we discuss periodic case,once you known this case, nature - // boundary is easy to understand) - // Not_Expand_Case : 27 'pseudo' grid,only one true grid, - // many true cells. - // Advantage : (the disadvantage above is the advantage now) - // only need to search 27*cells to construct AdjacentSet - // for each cell. - // Disadvantage : (the advantave mentioned above) - // need to construct adjacent for each cell. - //---------------------------------------------------------- - const double x = fatom1.x(); - const double y = fatom1.y(); - const double z = fatom1.z(); - double x2 = fatom2.x(); - double y2 = fatom2.y(); - double z2 = fatom2.z(); - //---------------------------------------------------------- - // EXPLAIN : in different case 'in_grid' has different - // meaning. - //---------------------------------------------------------- - // NAME : expand_case | not_expand_case - // in_which_grid 'not available' | one of 27 adjacent grid - // in_which_cell one of all cells | 'not available' - //---------------------------------------------------------- - // The solution here is we save these datas in one structrue - // named : 'in_grid' - //---------------------------------------------------------- - - //---------------------------------------------------------- - // EXPlAIN : Calculate distance between two atoms. - //---------------------------------------------------------- - double delta_x = x - x2; - double delta_y = y - y2; - double delta_z = z - z2; + double delta_x = fatom1.x - fatom2->x; + double delta_y = fatom1.y - fatom2->y; + double delta_z = fatom1.z - fatom2->z; double dr = delta_x * delta_x + delta_y * delta_y + delta_z * delta_z; + + // 20241204 zhanghaochong + // dr == 0 means the same atom + // the atom itself is neighbour atom, but the order itself must on last in the list. + // so we will add itself on find atom function, and skip here. + // I dont know why, but if we add self here, test 701_LJ_MD_Anderson will assert if (dr != 0.0 && dr <= this->sradius2) { - fatom1.addAdjacent(fatom2); + all_adj_info[fatom1.type][fatom1.natom].push_back(fatom2); } } diff --git a/source/module_cell/module_neighbor/sltk_grid.h b/source/module_cell/module_neighbor/sltk_grid.h index 6b6883abe8..7998aad63b 100644 --- a/source/module_cell/module_neighbor/sltk_grid.h +++ b/source/module_cell/module_neighbor/sltk_grid.h @@ -3,7 +3,6 @@ #include "module_cell/unitcell.h" #include "sltk_atom.h" -#include "sltk_atom_input.h" #include "sltk_util.h" #include @@ -11,26 +10,7 @@ #include #include -typedef std::vector> AtomMap; - -struct CellSet -{ - AtomMap atom_map; - int in_grid[3]; - CellSet(); -}; - -//========================================================== -// CLASS NAME : -// Atom_input : defined elsewhere -//========================================================== - -class Atom_input; - -//========================================================== -// CLASS NAME : -// Grid : -//========================================================== +typedef std::vector AtomMap; class Grid { @@ -43,101 +23,93 @@ class Grid Grid& operator=(Grid&&) = default; - void init(std::ofstream& ofs, const UnitCell& ucell, const Atom_input& input); + void init(std::ofstream& ofs, const UnitCell& ucell, const double radius_in, const bool boundary = true); // Data - bool pbc; // periodic boundary condition - bool expand_flag; - double sradius2; // searching radius squared - double sradius; // searching radius - double d_minX; // origin of all cells - double d_minY; - double d_minZ; - int cell_nx; - int cell_ny; - int cell_nz; - int layer; - - int true_cell_x; - int true_cell_y; - int true_cell_z; - - std::vector>> Cell; // dx , dy ,dz is cell number in each direction,respectly. - - // LiuXh add 2019-07-15 - double getD_minX() const + bool pbc; // When pbc is set to false, periodic boundary conditions are explicitly ignored. + double sradius2; // searching radius squared (unit:lat0) + double sradius; // searching radius (unit:lat0) + + // coordinate range of the input atom (unit:lat0) + double x_min; + double y_min; + double z_min; + double x_max; + double y_max; + double z_max; + + // The algorithm for searching neighboring atoms uses a "box" partitioning method. + // Each box has an edge length of sradius, and the number of boxes in each direction is recorded here. + double box_edge_length; + int box_nx; + int box_ny; + int box_nz; + + void getBox(int& bx, int& by, int& bz, const double& x, const double& y, const double& z) { - return d_minX; + bx = std::floor((x - x_min) / box_edge_length); + by = std::floor((y - y_min) / box_edge_length); + bz = std::floor((z - z_min) / box_edge_length); } - double getD_minY() const + // Stores the atoms after box partitioning. + std::vector>> atoms_in_box; + + // Stores the adjacent information of atoms. [ntype][natom][adj list] + std::vector >> all_adj_info; + void clear_atoms() { - return d_minY; + // we have to clear the all_adj_info + // because the pointers point to the memory in vector atoms_in_box + all_adj_info.clear(); + + atoms_in_box.clear(); } - double getD_minZ() const + void clear_adj_info() { - return d_minZ; + // here dont need to free the memory, + // because the pointers point to the memory in vector atoms_in_box + all_adj_info.clear(); } - - int getCellX() const + int getGlayerX() const { - return cell_nx; + return glayerX; } - int getCellY() const + int getGlayerY() const { - return cell_ny; + return glayerY; } - int getCellZ() const + int getGlayerZ() const { - return cell_nz; + return glayerZ; } - int getTrueCellX() const + int getGlayerX_minus() const { - return true_cell_x; + return glayerX_minus; } - int getTrueCellY() const + int getGlayerY_minus() const { - return true_cell_y; + return glayerY_minus; } - int getTrueCellZ() const + int getGlayerZ_minus() const { - return true_cell_z; + return glayerZ_minus; } - -private: - int test_grid = 0; - //========================================================== - // MEMBER FUNCTIONS : - // Three Main Steps: - // NAME : setMemberVariables (read in datas from Atom_input, - // init cells.) - // NAME : setBoundaryAdjacent( Consider different situations, - // if not_expand case : nature/periodic boundary - // condition , if expand_case) - //========================================================== - void setMemberVariables(std::ofstream& ofs_in, const Atom_input& input); - - void setBoundaryAdjacent(std::ofstream& ofs_in, const Atom_input& input); - - //========================================================== - void Build_Hash_Table(const UnitCell& ucell, const Atom_input& input); - - //========================================================== - - void Construct_Adjacent_expand(const int i, const int j, const int k); - - void Construct_Adjacent_expand_periodic(const int i, const int j, const int k, FAtom& fatom); - - void Construct_Adjacent_begin(); - void Construct_Adjacent_nature(const int i, const int j, const int k, FAtom& fatom1); - void Construct_Adjacent_periodic(const int i, const int j, const int k, FAtom& fatom1); - void Construct_Adjacent_final(const int i, - const int j, - const int k, - FAtom& fatom1, - const int i2, - const int j2, - const int k2, - FAtom& fatom2); + private: + int test_grid; + + void setMemberVariables(std::ofstream& ofs_in, const UnitCell& ucell); + + void Construct_Adjacent(const UnitCell& ucell); + void Construct_Adjacent_near_box(const FAtom& fatom); + void Construct_Adjacent_final(const FAtom& fatom1, FAtom* fatom2); + + void Check_Expand_Condition(const UnitCell& ucell); + int glayerX; + int glayerX_minus; + int glayerY; + int glayerY_minus; + int glayerZ; + int glayerZ_minus; }; #endif diff --git a/source/module_cell/module_neighbor/sltk_grid_driver.cpp b/source/module_cell/module_neighbor/sltk_grid_driver.cpp index f493b726c6..01aaf63bae 100644 --- a/source/module_cell/module_neighbor/sltk_grid_driver.cpp +++ b/source/module_cell/module_neighbor/sltk_grid_driver.cpp @@ -1,8 +1,9 @@ #include "sltk_grid_driver.h" -#include "module_parameter/parameter.h" + #include "module_base/global_function.h" #include "module_base/global_variable.h" #include "module_base/timer.h" +#include "module_parameter/parameter.h" #ifdef _OPENMP #include @@ -14,7 +15,7 @@ Grid_Driver::Grid_Driver( :test_deconstructor(test_d_in), Grid(test_grid_in) { - // ModuleBase::TITLE("Grid_Driver","Grid_Driver"); + test_deconstructor = test_d_in; } Grid_Driver::~Grid_Driver() @@ -22,82 +23,59 @@ Grid_Driver::~Grid_Driver() } void Grid_Driver::Find_atom(const UnitCell& ucell, - const ModuleBase::Vector3& cartesian_pos, - const int& ntype, - const int& nnumber, + const int ntype, + const int nnumber, AdjacentAtomInfo* adjs) const { - ModuleBase::timer::tick("Grid_Driver","Find_atom"); -// std::cout << "lenght in Find atom = " << atomlink[offset].fatom.getAdjacentSet()->getLength() << std::endl; + ModuleBase::timer::tick("Grid_Driver", "Find_atom"); + // std::cout << "lenght in Find atom = " << atomlink[offset].fatom.getAdjacentSet()->getLength() << std::endl; - // store result in member adj_info when parameter adjs is NULL - AdjacentAtomInfo* local_adjs = adjs == nullptr ? &this->adj_info : adjs; - local_adjs->clear(); - const std::vector & all_atom = Cell[this->true_cell_x][this->true_cell_y][this->true_cell_z].atom_map[ntype][nnumber].getAdjacent(); - //std::cout << "ntype = "<< ntype << " atom size = " << all_atom.size() << std::endl; + // store result in member adj_info when parameter adjs is NULL + AdjacentAtomInfo* local_adjs = adjs == nullptr ? &this->adj_info : adjs; + local_adjs->clear(); + const std::vector& all_atom = all_adj_info[ntype][nnumber]; - ModuleBase::Vector3 vec1(ucell.latvec.e11, ucell.latvec.e12, ucell.latvec.e13); - ModuleBase::Vector3 vec2(ucell.latvec.e21, ucell.latvec.e22, ucell.latvec.e23); - ModuleBase::Vector3 vec3(ucell.latvec.e31, ucell.latvec.e32, ucell.latvec.e33); - - for(const FAtom * atom : all_atom) - { - // std::cout << "atom type = " << atom.getType() << " number = " << atom.getNatom() << " box = " << atom.getCellX() << " " << atom.getCellY() << " " << atom.getCellZ() - // << " tau = " << atom.x() << " " << atom.y() << " " << atom.z() << std::endl; - local_adjs->ntype.push_back(atom->getType()); - local_adjs->natom.push_back(atom->getNatom()); - local_adjs->box.push_back(ModuleBase::Vector3(atom->getCellX(), atom->getCellY(), atom->getCellZ())); - if (expand_flag) - { - local_adjs->adjacent_tau.push_back(ModuleBase::Vector3(atom->x(), atom->y(), atom->z())); - } - else - { - local_adjs->adjacent_tau.push_back(Calculate_adjacent_site(atom->x(), atom->y(), atom->z(), - vec1[0], vec2[0], vec3[0], - vec1[1], vec2[1], vec3[1], - vec1[2], vec2[2], vec3[2], - atom->getCellX(), atom->getCellY(), atom->getCellZ())); - }//end if expand_flag - local_adjs->adj_num++; - } + for (const FAtom* atom: all_atom) + { + local_adjs->ntype.push_back(atom->type); + local_adjs->natom.push_back(atom->natom); + local_adjs->box.push_back(ModuleBase::Vector3(atom->cell_x, atom->cell_y, atom->cell_z)); + local_adjs->adjacent_tau.push_back(ModuleBase::Vector3(atom->x, atom->y, atom->z)); + local_adjs->adj_num++; + } + // 20241204 zhanghaochong + // for some unknown reason, the last neighbour atom must be it self + // is self must in last, the order cannot be changed. + // if self not in last, test 701_LJ_MD_Anderson will assert local_adjs->ntype.push_back(ntype); local_adjs->natom.push_back(nnumber); local_adjs->box.push_back(ModuleBase::Vector3(0, 0, 0)); - local_adjs->adjacent_tau.push_back(ModuleBase::Vector3(cartesian_pos.x, cartesian_pos.y, cartesian_pos.z)); - - - ModuleBase::timer::tick("Grid_Driver","Find_atom"); - return; + local_adjs->adjacent_tau.push_back(ModuleBase::Vector3(ucell.atoms[ntype].tau[nnumber].x, ucell.atoms[ntype].tau[nnumber].y, ucell.atoms[ntype].tau[nnumber].z)); + ModuleBase::timer::tick("Grid_Driver", "Find_atom"); + return; } - -ModuleBase::Vector3 Grid_Driver::Calculate_adjacent_site(const double x, const double y, const double z, - const double &box11, const double &box12, const double &box13, - const double &box21, const double &box22, const double &box23, - const double &box31, const double &box32, const double &box33, - const short box_x, const short box_y, const short box_z) const +void Grid_Driver::Find_atom(const UnitCell& ucell, + const ModuleBase::Vector3& cartesian_posi, + const int& ntype, + const int& nnumber, + AdjacentAtomInfo* adjs) const { - ModuleBase::Vector3 adjacent_site(0, 0, 0); - adjacent_site.x = x + box_x * box11 + box_y * box12 + box_z * box13; - adjacent_site.y = y + box_x * box21 + box_y * box22 + box_z * box23; - adjacent_site.z = z + box_x * box31 + box_y * box32 + box_z * box33; - - return adjacent_site; + this->Find_atom(ucell, ntype, nnumber, adjs); } // filter_adjs delete not adjacent atoms in adjs void filter_adjs(const std::vector& is_adj, AdjacentAtomInfo& adjs) { - const int size = adjs.adj_num+1; - for(int i = size-1; i >= 0; --i) - { - if(!is_adj[i]) - { - adjs.adj_num--; - adjs.ntype.erase(adjs.ntype.begin()+i); - adjs.natom.erase(adjs.natom.begin()+i); - adjs.adjacent_tau.erase(adjs.adjacent_tau.begin()+i);//info of adjacent_tau is not used in future - adjs.box.erase(adjs.box.begin()+i); - } - } + const int size = adjs.adj_num + 1; + for (int i = size - 1; i >= 0; --i) + { + if (!is_adj[i]) + { + adjs.adj_num--; + adjs.ntype.erase(adjs.ntype.begin() + i); + adjs.natom.erase(adjs.natom.begin() + i); + adjs.adjacent_tau.erase(adjs.adjacent_tau.begin() + i); // info of adjacent_tau is not used in future + adjs.box.erase(adjs.box.begin() + i); + } + } } diff --git a/source/module_cell/module_neighbor/sltk_grid_driver.h b/source/module_cell/module_neighbor/sltk_grid_driver.h index ea4ada5f8d..1316420a1e 100644 --- a/source/module_cell/module_neighbor/sltk_grid_driver.h +++ b/source/module_cell/module_neighbor/sltk_grid_driver.h @@ -7,7 +7,6 @@ #include "module_cell/unitcell.h" #include "module_hamilt_pw/hamilt_pwdft/structure_factor.h" #include "sltk_atom.h" -#include "sltk_atom_input.h" #include "sltk_grid.h" #include @@ -50,7 +49,7 @@ class Grid_Driver : public Grid // adjacent of this atom,and store the information // in 'adj_num','ntype','natom' //========================================================== - Grid_Driver() : test_deconstructor(0){}; + Grid_Driver(){ test_deconstructor = false; }; Grid_Driver(const int& test_d_in, const int& test_grid_in); ~Grid_Driver(); @@ -66,12 +65,18 @@ class Grid_Driver : public Grid // 2. And store results into parameter adjs when adjs is // NOT NULL //========================================================== + void Find_atom(const UnitCell& ucell, + const int ntype, + const int nnumber, + AdjacentAtomInfo* adjs = nullptr) const; + + // cartesian_posi and ucell is deprecated 20241204 zhanghaochong + // this interface is deprecated, please use Find_atom above void Find_atom(const UnitCell& ucell, const ModuleBase::Vector3& cartesian_posi, const int& ntype, const int& nnumber, AdjacentAtomInfo* adjs = nullptr) const; - //========================================================== // EXPLAIN : The adjacent information for the input // cartesian_pos @@ -104,27 +109,6 @@ class Grid_Driver : public Grid private: mutable AdjacentAtomInfo adj_info; - - int test_deconstructor = 0; - - //========================================================== - // MEMBER FUNCTIONS : - // NAME : Calculate_adjacent_site - //========================================================== - ModuleBase::Vector3 Calculate_adjacent_site(const double x, - const double y, - const double z, - const double& box11, - const double& box12, - const double& box13, - const double& box21, - const double& box22, - const double& box23, - const double& box31, - const double& box32, - const double& box33, - const short box_x, // three dimensions of the target box - const short box_y, - const short box_z) const; + bool test_deconstructor; }; #endif diff --git a/source/module_cell/module_neighbor/test/CMakeLists.txt b/source/module_cell/module_neighbor/test/CMakeLists.txt index 72742a4ced..130615d900 100644 --- a/source/module_cell/module_neighbor/test/CMakeLists.txt +++ b/source/module_cell/module_neighbor/test/CMakeLists.txt @@ -9,17 +9,10 @@ AddTest( SOURCES sltk_atom_test.cpp ../sltk_atom.cpp ) -AddTest( - TARGET cell_neighbor_sltk_atom_input - LIBS parameter ${math_libs} base device cell_info - SOURCES sltk_atom_input_test.cpp ../sltk_atom_input.cpp ../sltk_atom.cpp - ../../../module_io/output.cpp -) - AddTest( TARGET cell_neighbor_sltk_grid LIBS parameter ${math_libs} base device cell_info - SOURCES sltk_grid_test.cpp ../sltk_grid.cpp ../sltk_atom_input.cpp ../sltk_atom.cpp + SOURCES sltk_grid_test.cpp ../sltk_grid.cpp ../sltk_atom.cpp ../../../module_io/output.cpp ) @@ -27,6 +20,6 @@ AddTest( TARGET cell_neighbor_sltk_atom_arrange LIBS parameter ${math_libs} base device cell_info SOURCES sltk_atom_arrange_test.cpp ../sltk_atom_arrange.cpp ../sltk_grid_driver.cpp ../sltk_grid.cpp - ../sltk_atom_input.cpp ../sltk_atom.cpp + ../sltk_atom.cpp ../../../module_io/output.cpp ) \ No newline at end of file diff --git a/source/module_cell/module_neighbor/test/sltk_atom_arrange_test.cpp b/source/module_cell/module_neighbor/test/sltk_atom_arrange_test.cpp index 31709e540a..f33e31d57e 100644 --- a/source/module_cell/module_neighbor/test/sltk_atom_arrange_test.cpp +++ b/source/module_cell/module_neighbor/test/sltk_atom_arrange_test.cpp @@ -87,11 +87,11 @@ TEST_F(SltkAtomArrangeTest, setsrNL) std::ofstream ofs; ofs.open("./to_test_arrange.txt"); test_sr = test.set_sr_NL(ofs, teststring, rcutmax_Phi, rcutmax_Beta, gamma_only_local); - EXPECT_DOUBLE_EQ(test_sr, 2.01); + EXPECT_DOUBLE_EQ(test_sr, 2.001); gamma_only_local = false; test_sr = test.set_sr_NL(ofs, teststring, rcutmax_Phi, rcutmax_Beta, gamma_only_local); - EXPECT_DOUBLE_EQ(test_sr, 6.01); + EXPECT_DOUBLE_EQ(test_sr, 6.001); const std::string teststring2 = "no"; test_sr = test.set_sr_NL(ofs, teststring2, rcutmax_Phi, rcutmax_Beta, gamma_only_local); diff --git a/source/module_cell/module_neighbor/test/sltk_atom_input_test.cpp b/source/module_cell/module_neighbor/test/sltk_atom_input_test.cpp deleted file mode 100644 index bed6207560..0000000000 --- a/source/module_cell/module_neighbor/test/sltk_atom_input_test.cpp +++ /dev/null @@ -1,264 +0,0 @@ -#include "../sltk_atom_input.h" - -#define private public -#include "module_parameter/parameter.h" -#undef private -#include - -#include "gmock/gmock.h" -#include "gtest/gtest.h" -#include "prepare_unitcell.h" - -#ifdef __LCAO -InfoNonlocal::InfoNonlocal() -{ -} -InfoNonlocal::~InfoNonlocal() -{ -} -LCAO_Orbitals::LCAO_Orbitals() -{ -} -LCAO_Orbitals::~LCAO_Orbitals() -{ -} -#endif -Magnetism::Magnetism() -{ - this->tot_magnetization = 0.0; - this->abs_magnetization = 0.0; - this->start_magnetization = nullptr; -} -Magnetism::~Magnetism() -{ - delete[] this->start_magnetization; -} - -/************************************************ - * unit test of sltk_atom_input.cpp - * *********************************************/ - -/** - * - Tested Functions: - * - Constructor: - * - the constructor of Atom_input do almost everything - * - (1) it finds the boundary of atomic coordinates (x_min, x_max, etc.), - * - (2) expands the unitcell according to the boundary condition - * and the searching radius, which is (2 * rcutmax_Phi + 0.01) in - * gamma_only calculation and (2 * (rcutmax_Phi +rcutmax_Beta) + 0.01) - * in multi-k calculation (see atom_arrange::set_sr_NL). And determine - * the number of positive and negative layers in each direction in - * Check_Expand_Condition() - * - (3) records the amount of atoms after expansion (d_amount_expand) and - * sets the expanded lattice grids, including their coordinates and their - * atomic coordinates inside in Expand_Grid() - * - (4) and calculate the number of unitcells in x, y, z directions - * in calculate_cells() - * - Getters: - * - get the values obtained in constructor, for example - * - Clength0() is to get the length in x direction of the expanded big cell in - * unit of lat0 - * - minX() will return x_min if no expanding, or -glayerX_minus in case of - * expansion - * - getCellX() will return the number of unitcells in x direction - * - getCellXLength() will return search radius if no expanding, or 1 in case of - * expansion - * - getRadius() will return the search radius - * - getLatNow() will return lat0 in Bohr - * - getAmount() will return the total number of lattice grids after expansion - */ - -void SetGlobalV() -{ - PARAM.input.test_grid = 0; -} - -class SltkAtomInputTest : public ::testing::Test -{ - protected: - UnitCell* ucell; - UcellTestPrepare utp = UcellTestLib["Si"]; - std::ofstream ofs; - std::ifstream ifs; - bool pbc = true; - double radius = ((8 + 5.01) * 2.0 + 0.01) / 10.2; - int test_atom_in = 0; - std::string output; - void SetUp() - { - SetGlobalV(); - ucell = utp.SetUcellInfo(); - } - void TearDown() - { - delete ucell; - } -}; - -using SltkAtomInputDeathTest = SltkAtomInputTest; - -TEST_F(SltkAtomInputTest, Constructor) -{ - ofs.open("test.out"); - ucell->check_dtau(); - test_atom_in = 2; - PARAM.input.test_grid = 1; - Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in); - ofs.close(); - ifs.open("test.out"); - std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("ntype = 1")); - EXPECT_THAT(str, testing::HasSubstr("Amount(atom number) = 2")); - EXPECT_THAT(str, testing::HasSubstr("Periodic_boundary = 1")); - EXPECT_THAT(str, testing::HasSubstr("Searching radius(lat0) = 2.55")); - // EXPECT_THAT(str, testing::HasSubstr("CellLength(unit: lat0) = [ 0.707107, 0.707107, 0.707107 ]")); - EXPECT_THAT(str, testing::HasSubstr("min_tau = [ -0.75, 0, 0 ]")); - EXPECT_THAT(str, testing::HasSubstr("max_tau = [ 0, 0.75, 0.75 ]")); - EXPECT_THAT(str, testing::HasSubstr("glayer+ = [ 6, 6, 6 ]")); - EXPECT_THAT(str, testing::HasSubstr("glayer- = [ 5, 5, 5 ]")); - EXPECT_THAT(str, testing::HasSubstr("CellDim = [ 11, 11, 11 ]")); - ifs.close(); - remove("test.out"); -} - -TEST_F(SltkAtomInputTest, Getters) -{ - ofs.open("test.out"); - ucell->check_dtau(); - test_atom_in = 2; - Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in); - EXPECT_TRUE(Atom_inp.getExpandFlag()); - EXPECT_EQ(Atom_inp.getBoundary(), 1); - EXPECT_NEAR(Atom_inp.getRadius(), 2.55196, 1e-5); - EXPECT_DOUBLE_EQ(Atom_inp.minX(), -0.75); - EXPECT_DOUBLE_EQ(Atom_inp.minY(), 0); - EXPECT_DOUBLE_EQ(Atom_inp.minZ(), 0); - EXPECT_EQ(Atom_inp.getCell_nX(), 11); - EXPECT_EQ(Atom_inp.getCell_nY(), 11); - EXPECT_EQ(Atom_inp.getCell_nZ(), 11); - EXPECT_EQ(Atom_inp.getGrid_layerX(), 6); - EXPECT_EQ(Atom_inp.getGrid_layerY(), 6); - EXPECT_EQ(Atom_inp.getGrid_layerZ(), 6); - EXPECT_EQ(Atom_inp.getGrid_layerX_minus(), 5); - EXPECT_EQ(Atom_inp.getGrid_layerY_minus(), 5); - EXPECT_EQ(Atom_inp.getGrid_layerZ_minus(), 5); - ofs.close(); - remove("test.out"); -} - -TEST_F(SltkAtomInputDeathTest, ConstructorWarning1) -{ - ofs.open("test.out"); - ucell->check_dtau(); - test_atom_in = 1; - radius = -1; - testing::internal::CaptureStdout(); - EXPECT_EXIT(Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in), - ::testing::ExitedWithCode(1), - ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("search radius < 0,forbidden")); - ofs.close(); - remove("test.out"); -} -/* -TEST_F(SltkAtomInputDeathTest, ConstructorWarning2) -{ - ofs.open("test.out"); - ucell->check_dtau(); - test_atom_in = 1; - ucell->atoms[0].taud[1].x = -0.25; - testing::internal::CaptureStdout(); - EXPECT_EXIT(Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in), - ::testing::ExitedWithCode(1), - ""); - // output = testing::internal::GetCapturedStdout(); - // EXPECT_THAT(output, testing::HasSubstr("dminX<0.0")); - ofs.close(); - remove("test.out"); -} - -TEST_F(SltkAtomInputDeathTest, ConstructorWarning3) -{ - ofs.open("test.out"); - ucell->check_dtau(); - test_atom_in = 1; - ucell->atoms[0].taud[1].y = -0.25; - testing::internal::CaptureStdout(); - EXPECT_EXIT(Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in), - ::testing::ExitedWithCode(1), - ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("dminY<0.0")); - ofs.close(); - remove("test.out"); -} - -TEST_F(SltkAtomInputDeathTest, ConstructorWarning4) -{ - ofs.open("test.out"); - ucell->check_dtau(); - test_atom_in = 1; - ucell->atoms[0].taud[1].z = -0.25; - testing::internal::CaptureStdout(); - EXPECT_EXIT(Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in), - ::testing::ExitedWithCode(1), - ""); - output = testing::internal::GetCapturedStdout(); - EXPECT_THAT(output, testing::HasSubstr("dminZ<0.0")); - ofs.close(); - remove("test.out"); -}*/ - -TEST_F(SltkAtomInputTest, ConstructorNoExpand) -{ - ofs.open("test.out"); - ucell->check_dtau(); - test_atom_in = 1; - PARAM.input.test_grid = 1; - // this is a bug if radius is too small - // because the expand_flag will be false! - radius = 0; - Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in); - EXPECT_FALSE(Atom_inp.getExpandFlag()); - ofs.close(); - ifs.open("test.out"); - std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("ntype = 1")); - EXPECT_THAT(str, testing::HasSubstr("Amount(atom number) = 2")); - EXPECT_THAT(str, testing::HasSubstr("Periodic_boundary = 1")); - EXPECT_THAT(str, testing::HasSubstr("Searching radius(lat0) = 0")); - // EXPECT_THAT(str, testing::HasSubstr("CellLength(unit: lat0) = [ 0.707107, 0.707107, 0.707107 ]")); - EXPECT_THAT(str, testing::HasSubstr("min_tau = [ -0.75, 0, 0 ]")); - EXPECT_THAT(str, testing::HasSubstr("max_tau = [ 0, 0.75, 0.75 ]")); - EXPECT_THAT(str, testing::HasSubstr("glayer+ = [ 2, 2, 2 ]")); - EXPECT_THAT(str, testing::HasSubstr("glayer- = [ 0, 0, 0 ]")); - ifs.close(); - remove("test.out"); -} - -TEST_F(SltkAtomInputTest, ConstructorSmallSearchRadius) -{ - ofs.open("test.out"); - ucell->check_dtau(); - test_atom_in = 1; - PARAM.input.test_grid = 1; - radius = 0.5; - Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in); - EXPECT_TRUE(Atom_inp.getExpandFlag()); - ofs.close(); - ifs.open("test.out"); - std::string str((std::istreambuf_iterator(ifs)), std::istreambuf_iterator()); - EXPECT_THAT(str, testing::HasSubstr("ntype = 1")); - EXPECT_THAT(str, testing::HasSubstr("Amount(atom number) = 2")); - EXPECT_THAT(str, testing::HasSubstr("Periodic_boundary = 1")); - EXPECT_THAT(str, testing::HasSubstr("Searching radius(lat0) = 0.5")); - // EXPECT_THAT(str, testing::HasSubstr("CellLength(unit: lat0) = [ 0.707107, 0.707107, 0.707107 ]")); - EXPECT_THAT(str, testing::HasSubstr("min_tau = [ -0.75, 0, 0 ]")); - EXPECT_THAT(str, testing::HasSubstr("max_tau = [ 0, 0.75, 0.75 ]")); - EXPECT_THAT(str, testing::HasSubstr("glayer+ = [ 2, 2, 2 ]")); - EXPECT_THAT(str, testing::HasSubstr("glayer- = [ 2, 2, 2 ]")); - EXPECT_THAT(str, testing::HasSubstr("CellDim = [ 4, 4, 4 ]")); - ifs.close(); - remove("test.out"); -} \ No newline at end of file diff --git a/source/module_cell/module_neighbor/test/sltk_atom_test.cpp b/source/module_cell/module_neighbor/test/sltk_atom_test.cpp index 57e09c9a7c..fb11b93be3 100644 --- a/source/module_cell/module_neighbor/test/sltk_atom_test.cpp +++ b/source/module_cell/module_neighbor/test/sltk_atom_test.cpp @@ -13,9 +13,6 @@ * - FAtom has a member "as", which is a shared_ptr of AdjacentSet * - allocate_AdjacentSet() is a function of FAtom to * allocate "as" - * - FAtom::delete_vector() - * - this function will call AdjacentSet::delete_vector() to - * - delete the box and offset vectors in AdjacentSet * - SetterGetters: * - the setter and getter of FAtom * - including d_x, d_y, d_z, type, natom @@ -27,25 +24,17 @@ class SltkAtomTest : public testing::Test FAtom test; }; -TEST_F(SltkAtomTest, AllocateAdjacentSet) -{ - test.clearAdjacent(); - FAtom test_temp(1.0, 2.0, 3.0, 4, 5, 0, 1, 2); - test.addAdjacent(test_temp); - EXPECT_EQ(test.getAdjacent().front()->getType(), 4); -} - TEST_F(SltkAtomTest, SetterGetters) { FAtom test_temp(1.0, 2.0, 3.0, 4, 5, 0, 1, 2); - EXPECT_DOUBLE_EQ(test_temp.x(), 1.0); - EXPECT_DOUBLE_EQ(test_temp.y(), 2.0); - EXPECT_DOUBLE_EQ(test_temp.z(), 3.0); - EXPECT_EQ(test_temp.getType(), 4); - EXPECT_EQ(test_temp.getNatom(), 5); - EXPECT_EQ(test_temp.getCellX(), 0); - EXPECT_EQ(test_temp.getCellY(), 1); - EXPECT_EQ(test_temp.getCellZ(), 2); + EXPECT_DOUBLE_EQ(test_temp.x, 1.0); + EXPECT_DOUBLE_EQ(test_temp.y, 2.0); + EXPECT_DOUBLE_EQ(test_temp.z, 3.0); + EXPECT_EQ(test_temp.type, 4); + EXPECT_EQ(test_temp.natom, 5); + EXPECT_EQ(test_temp.cell_x, 0); + EXPECT_EQ(test_temp.cell_y, 1); + EXPECT_EQ(test_temp.cell_z, 2); } diff --git a/source/module_cell/module_neighbor/test/sltk_grid_test.cpp b/source/module_cell/module_neighbor/test/sltk_grid_test.cpp index 25b5cf7204..e8e3307f98 100644 --- a/source/module_cell/module_neighbor/test/sltk_grid_test.cpp +++ b/source/module_cell/module_neighbor/test/sltk_grid_test.cpp @@ -81,15 +81,14 @@ TEST_F(SltkGridTest, Init) ucell->check_dtau(); test_atom_in = 2; PARAM.input.test_grid = 1; - Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in); Grid LatGrid(PARAM.input.test_grid); - LatGrid.init(ofs, *ucell, Atom_inp); - EXPECT_EQ(LatGrid.getCellX(), 11); - EXPECT_EQ(LatGrid.getCellY(), 11); - EXPECT_EQ(LatGrid.getCellZ(), 11); - EXPECT_EQ(LatGrid.getTrueCellX(), 5); - EXPECT_EQ(LatGrid.getTrueCellY(), 5); - EXPECT_EQ(LatGrid.getTrueCellZ(), 5); + LatGrid.init(ofs, *ucell, radius, pbc); + EXPECT_EQ(LatGrid.getGlayerX(), 6); + EXPECT_EQ(LatGrid.getGlayerY(), 6); + EXPECT_EQ(LatGrid.getGlayerZ(), 6); + EXPECT_EQ(LatGrid.getGlayerX_minus(), 5); + EXPECT_EQ(LatGrid.getGlayerY_minus(), 5); + EXPECT_EQ(LatGrid.getGlayerZ_minus(), 5); ofs.close(); remove("test.out"); } @@ -101,30 +100,25 @@ TEST_F(SltkGridTest, InitSmall) test_atom_in = 2; PARAM.input.test_grid = 1; radius = 0.5; - Atom_input Atom_inp(ofs, *ucell, ucell->nat, ucell->ntype, pbc, radius, test_atom_in); Grid LatGrid(PARAM.input.test_grid); - LatGrid.setMemberVariables(ofs, Atom_inp); - EXPECT_EQ(LatGrid.pbc, Atom_inp.getBoundary()); + LatGrid.init(ofs, *ucell, radius, pbc); + LatGrid.setMemberVariables(ofs, *ucell); + EXPECT_EQ(LatGrid.pbc, true); EXPECT_TRUE(LatGrid.pbc); - EXPECT_DOUBLE_EQ(LatGrid.sradius2, Atom_inp.getRadius() * Atom_inp.getRadius()); + EXPECT_DOUBLE_EQ(LatGrid.sradius2, radius * radius); EXPECT_DOUBLE_EQ(LatGrid.sradius2, 0.5 * 0.5); - EXPECT_DOUBLE_EQ(LatGrid.sradius, Atom_inp.getRadius()); + EXPECT_DOUBLE_EQ(LatGrid.sradius, radius); EXPECT_DOUBLE_EQ(LatGrid.sradius, 0.5); - + /* // minimal value of x, y, z - EXPECT_DOUBLE_EQ(LatGrid.d_minX, Atom_inp.minX()); - EXPECT_DOUBLE_EQ(LatGrid.d_minY, Atom_inp.minY()); - EXPECT_DOUBLE_EQ(LatGrid.d_minZ, Atom_inp.minZ()); - EXPECT_DOUBLE_EQ(LatGrid.true_cell_x, 2); - EXPECT_DOUBLE_EQ(LatGrid.true_cell_y, 2); - EXPECT_DOUBLE_EQ(LatGrid.true_cell_z, 2); + EXPECT_DOUBLE_EQ(LatGrid.true_cell_x, 1); + EXPECT_DOUBLE_EQ(LatGrid.true_cell_y, 1); + EXPECT_DOUBLE_EQ(LatGrid.true_cell_z, 1); // number of cells in x, y, z - EXPECT_EQ(LatGrid.cell_nx, Atom_inp.getCell_nX()); - EXPECT_EQ(LatGrid.cell_ny, Atom_inp.getCell_nY()); - EXPECT_EQ(LatGrid.cell_nz, Atom_inp.getCell_nZ()); - EXPECT_EQ(LatGrid.cell_nx, 4); - EXPECT_EQ(LatGrid.cell_ny, 4); - EXPECT_EQ(LatGrid.cell_nz, 4); + EXPECT_EQ(LatGrid.cell_nx, 3); + EXPECT_EQ(LatGrid.cell_ny, 3); + EXPECT_EQ(LatGrid.cell_nz, 3); + */ ofs.close(); remove("test.out"); } diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/spar_dh.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/spar_dh.cpp index cab9977595..f82a653158 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/spar_dh.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/spar_dh.cpp @@ -67,13 +67,13 @@ void sparse_format::cal_dH(const UnitCell& ucell, void sparse_format::set_R_range(std::set>& all_R_coor, const Grid_Driver& grid) { - const int RminX = int(-grid.getTrueCellX()); - const int RminY = int(-grid.getTrueCellY()); - const int RminZ = int(-grid.getTrueCellZ()); + int RminX = int(-grid.getGlayerX_minus()); + int RminY = int(-grid.getGlayerY_minus()); + int RminZ = int(-grid.getGlayerZ_minus()); - const int Rx = grid.getCellX(); - const int Ry = grid.getCellY(); - const int Rz = grid.getCellZ(); + int Rx = grid.getGlayerX() + grid.getGlayerX_minus(); + int Ry = grid.getGlayerY() + grid.getGlayerY_minus(); + int Rz = grid.getGlayerZ() + grid.getGlayerZ_minus(); for (int ix = 0; ix < Rx; ix++) { diff --git a/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects b/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects index 5bb621491c..9dd6191688 100644 --- a/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects +++ b/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects @@ -70,7 +70,6 @@ ORB_gaunt_table.o\ OBJS_NEIGHBOR=sltk_atom_arrange.o\ sltk_atom.o\ -sltk_atom_input.o\ sltk_grid.o\ sltk_grid_driver.o diff --git a/source/module_io/cal_r_overlap_R.cpp b/source/module_io/cal_r_overlap_R.cpp index 6cbf7e7306..b100c535b1 100644 --- a/source/module_io/cal_r_overlap_R.cpp +++ b/source/module_io/cal_r_overlap_R.cpp @@ -246,13 +246,13 @@ void cal_r_overlap_R::out_rR(const UnitCell& ucell, const Grid_Driver& gd, const int step = istep; // set R coor range - int R_minX = int(-gd.getTrueCellX()); - int R_minY = int(-gd.getTrueCellY()); - int R_minZ = int(-gd.getTrueCellZ()); + int R_minX = int(-gd.getGlayerX_minus()); + int R_minY = int(-gd.getGlayerY_minus()); + int R_minZ = int(-gd.getGlayerZ_minus()); - int R_x = gd.getCellX(); - int R_y = gd.getCellY(); - int R_z = gd.getCellZ(); + int R_x = gd.getGlayerX() + gd.getGlayerX_minus(); + int R_y = gd.getGlayerY() + gd.getGlayerY_minus(); + int R_z = gd.getGlayerZ() + gd.getGlayerZ_minus(); std::set> all_R_coor; for (int ix = 0; ix < R_x; ix++) diff --git a/source/module_io/to_wannier90_lcao.cpp b/source/module_io/to_wannier90_lcao.cpp index adb5893135..e55b19d8f5 100644 --- a/source/module_io/to_wannier90_lcao.cpp +++ b/source/module_io/to_wannier90_lcao.cpp @@ -306,13 +306,13 @@ void toWannier90_LCAO::initialize_orb_table(const UnitCell& ucell) void toWannier90_LCAO::set_R_coor(const UnitCell& ucell, const Grid_Driver& gd) { - int R_minX = int(-gd.getTrueCellX()); - int R_minY = int(-gd.getTrueCellY()); - int R_minZ = int(-gd.getTrueCellZ()); + int R_minX = int(-gd.getGlayerX_minus()); + int R_minY = int(-gd.getGlayerY_minus()); + int R_minZ = int(-gd.getGlayerZ_minus()); - int R_x = gd.getCellX(); - int R_y = gd.getCellY(); - int R_z = gd.getCellZ(); + int R_x = gd.getGlayerX() + gd.getGlayerX_minus(); + int R_y = gd.getGlayerY() + gd.getGlayerY_minus(); + int R_z = gd.getGlayerZ() + gd.getGlayerZ_minus(); int R_num = R_x * R_y * R_z; R_coor_car.resize(R_num); diff --git a/source/module_md/test/CMakeLists.txt b/source/module_md/test/CMakeLists.txt index 5e5e4a2c4a..1d197a5350 100644 --- a/source/module_md/test/CMakeLists.txt +++ b/source/module_md/test/CMakeLists.txt @@ -36,7 +36,6 @@ list(APPEND depend_files ../../module_base/math_integral.cpp ../../module_cell/module_neighbor/sltk_atom_arrange.cpp ../../module_cell/module_neighbor/sltk_atom.cpp - ../../module_cell/module_neighbor/sltk_atom_input.cpp ../../module_cell/module_neighbor/sltk_grid.cpp ../../module_cell/module_neighbor/sltk_grid_driver.cpp ../../module_io/output.cpp From 25865a9cee42f06ea114b3a421018cd36d329833 Mon Sep 17 00:00:00 2001 From: Chen Tao <76426373+Chentao168@users.noreply.github.com> Date: Tue, 24 Dec 2024 20:45:54 +0800 Subject: [PATCH 14/44] update the docs of exx_ccp_rmesh_times and exx_real_number (#5758) --- docs/advanced/input_files/input-main.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index a2b137e8a4..09d6aff3f4 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -2446,10 +2446,11 @@ These variables are relevant when using hybrid functionals. ### exx_ccp_rmesh_times - **Type**: Real -- **Description**: This parameter determines how many times larger the radial mesh required for calculating Columb potential is to that of atomic orbitals. For HSE, setting it to 1 is enough. But for PBE0, a much larger number must be used. +- **Description**: This parameter determines how many times larger the radial mesh required for calculating Columb potential is to that of atomic orbitals. The value should be at least 1. Reducing this value can effectively increase the speed of self-consistent calculations using hybrid functionals. - **Default**: - - 1.5: if *[dft_functional](#dft_functional)==hse* - - 5: else + - 5: if *[dft_functional](#dft_functional)==hf/pbe0/scan0/muller/power/wp22* + - 1.5: if *[dft_functional](#dft_functional)==hse/cwp22* + - 1: else ### exx_distribute_type @@ -2488,6 +2489,7 @@ These variables are relevant when using hybrid functionals. - **Description**: - True: Enforce LibRI to use `double` data type. - False: Enforce LibRI to use `complex` data type. + Setting it to True can effectively improve the speed of self-consistent calculations with hybrid functionals. - **Default**: depends on the [gamma_only](#gamma_only) option - True: if gamma_only - False: else From dc7147dcbbb360914bf7536abbe8a8a01ff1b9cc Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Tue, 24 Dec 2024 20:47:59 +0800 Subject: [PATCH 15/44] Feature: enable cal_force and cal_stress in nscf (#5752) * Feature: enable cal_force and cal_stress in nscf * Fix: enable force and stress in uspp nscf * update unit tests --- source/module_elecstate/elecstate_pw.cpp | 8 +- source/module_elecstate/elecstate_pw.h | 5 +- source/module_hsolver/hsolver_lcaopw.cpp | 4 + source/module_hsolver/hsolver_pw.cpp | 4 + .../test/hsolver_supplementary_mock.h | 42 +++++- .../module_hsolver/test/test_hsolver_sdft.cpp | 29 ---- source/module_io/read_input_item_system.cpp | 2 +- source/module_relax/relax_driver.cpp | 128 +++++++++--------- 8 files changed, 123 insertions(+), 99 deletions(-) diff --git a/source/module_elecstate/elecstate_pw.cpp b/source/module_elecstate/elecstate_pw.cpp index 05fb2b57f3..a22c87bcf7 100644 --- a/source/module_elecstate/elecstate_pw.cpp +++ b/source/module_elecstate/elecstate_pw.cpp @@ -238,7 +238,7 @@ void ElecStatePW::rhoBandK(const psi::Psi& psi) } template -void ElecStatePW::add_usrho(const psi::Psi& psi) +void ElecStatePW::cal_becsum(const psi::Psi& psi) { const T one{1, 0}; const T zero{0, 0}; @@ -392,6 +392,12 @@ void ElecStatePW::add_usrho(const psi::Psi& psi) } } delmem_complex_op()(this->ctx, becp); +} + +template +void ElecStatePW::add_usrho(const psi::Psi& psi) +{ + this->cal_becsum(psi); // transform soft charge to recip space using smooth grids T* rhog = nullptr; diff --git a/source/module_elecstate/elecstate_pw.h b/source/module_elecstate/elecstate_pw.h index d879d872ac..dc992fa37a 100644 --- a/source/module_elecstate/elecstate_pw.h +++ b/source/module_elecstate/elecstate_pw.h @@ -35,6 +35,9 @@ class ElecStatePW : public ElecState virtual void cal_tau(const psi::Psi& psi); + //! calculate becsum for uspp + void cal_becsum(const psi::Psi& psi); + Real* becsum = nullptr; //! init rho_data and kin_r_data @@ -61,7 +64,7 @@ class ElecStatePW : public ElecState //! calcualte rho for each k void rhoBandK(const psi::Psi& psi); - + //! add to the charge density in reciprocal space the part which is due to the US augmentation. void add_usrho(const psi::Psi& psi); diff --git a/source/module_hsolver/hsolver_lcaopw.cpp b/source/module_hsolver/hsolver_lcaopw.cpp index f87a15664a..1f3bb2c17b 100644 --- a/source/module_hsolver/hsolver_lcaopw.cpp +++ b/source/module_hsolver/hsolver_lcaopw.cpp @@ -281,6 +281,10 @@ void HSolverLIP::solve(hamilt::Hamilt* pHamilt, // ESolver_KS_PW::p_hamilt reinterpret_cast*>(pes)->calEBand(); if (skip_charge) { + if (PARAM.globalv.use_uspp) + { + reinterpret_cast*>(pes)->cal_becsum(psi); + } ModuleBase::timer::tick("HSolverLIP", "solve"); return; } diff --git a/source/module_hsolver/hsolver_pw.cpp b/source/module_hsolver/hsolver_pw.cpp index 1a8e7292f6..c217444a1a 100644 --- a/source/module_hsolver/hsolver_pw.cpp +++ b/source/module_hsolver/hsolver_pw.cpp @@ -337,6 +337,10 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, reinterpret_cast*>(pes)->calEBand(); if (skip_charge) { + if (PARAM.globalv.use_uspp) + { + reinterpret_cast*>(pes)->cal_becsum(psi); + } ModuleBase::timer::tick("HSolverPW", "solve"); return; } diff --git a/source/module_hsolver/test/hsolver_supplementary_mock.h b/source/module_hsolver/test/hsolver_supplementary_mock.h index 66e49fb894..436ecd6565 100644 --- a/source/module_hsolver/test/hsolver_supplementary_mock.h +++ b/source/module_hsolver/test/hsolver_supplementary_mock.h @@ -1,5 +1,5 @@ #pragma once -#include "module_elecstate/elecstate.h" +#include "module_elecstate/elecstate_pw.h" #include "module_psi/wavefunc.h" namespace elecstate @@ -62,6 +62,46 @@ void ElecState::init_ks(Charge* chg_in, // pointer for class Charge return; } +template +ElecStatePW::ElecStatePW(ModulePW::PW_Basis_K* wfc_basis_in, + Charge* chg_in, + K_Vectors* pkv_in, + UnitCell* ucell_in, + pseudopot_cell_vnl* ppcell_in, + ModulePW::PW_Basis* rhodpw_in, + ModulePW::PW_Basis* rhopw_in, + ModulePW::PW_Basis_Big* bigpw_in) + : basis(wfc_basis_in) +{ +} + +template +ElecStatePW::~ElecStatePW() +{ +} + +template +void ElecStatePW::psiToRho(const psi::Psi& psi) +{ +} + +template +void ElecStatePW::cal_tau(const psi::Psi& psi) +{ +} + +template +void ElecStatePW::cal_becsum(const psi::Psi& psi) +{ +} + +template class ElecStatePW, base_device::DEVICE_CPU>; +template class ElecStatePW, base_device::DEVICE_CPU>; +#if ((defined __CUDA) || (defined __ROCM)) +template class ElecStatePW, base_device::DEVICE_GPU>; +template class ElecStatePW, base_device::DEVICE_GPU>; +#endif + Potential::~Potential() { } diff --git a/source/module_hsolver/test/test_hsolver_sdft.cpp b/source/module_hsolver/test/test_hsolver_sdft.cpp index 4d3db33096..642ee9daae 100644 --- a/source/module_hsolver/test/test_hsolver_sdft.cpp +++ b/source/module_hsolver/test/test_hsolver_sdft.cpp @@ -23,40 +23,11 @@ Sto_Func::Sto_Func() } template class Sto_Func; - -template <> -elecstate::ElecStatePW, base_device::DEVICE_CPU>::ElecStatePW(ModulePW::PW_Basis_K* wfc_basis_in, - Charge* chg_in, - K_Vectors* pkv_in, - UnitCell* ucell_in, - pseudopot_cell_vnl* ppcell_in, - ModulePW::PW_Basis* rhodpw_in, - ModulePW::PW_Basis* rhopw_in, - ModulePW::PW_Basis_Big* bigpw_in) - : basis(wfc_basis_in) -{ -} - -template<> -elecstate::ElecStatePW, base_device::DEVICE_CPU>::~ElecStatePW() -{ -} - template<> void elecstate::ElecStatePW, base_device::DEVICE_CPU>::init_rho_data() { } -template<> -void elecstate::ElecStatePW, base_device::DEVICE_CPU>::psiToRho(const psi::Psi, base_device::DEVICE_CPU>& psi) -{ -} - -template<> -void elecstate::ElecStatePW, base_device::DEVICE_CPU>::cal_tau(const psi::Psi, base_device::DEVICE_CPU>& psi) -{ -} - template StoChe::StoChe(const int& nche, const int& method, const REAL& emax_sto, const REAL& emin_sto) { diff --git a/source/module_io/read_input_item_system.cpp b/source/module_io/read_input_item_system.cpp index 7398dc2e6a..58839c7b09 100644 --- a/source/module_io/read_input_item_system.cpp +++ b/source/module_io/read_input_item_system.cpp @@ -207,7 +207,7 @@ void ReadInput::item_system() item.annotation = "if calculate the force at the end of the electronic iteration"; item.reset_value = [](const Input_Item& item, Parameter& para) { std::vector use_force = {"cell-relax", "relax", "md"}; - std::vector not_use_force = {"get_wf", "get_pchg", "nscf", "get_S"}; + std::vector not_use_force = {"get_wf", "get_pchg", "get_S"}; if (std::find(use_force.begin(), use_force.end(), para.input.calculation) != use_force.end()) { if (!para.input.cal_force) diff --git a/source/module_relax/relax_driver.cpp b/source/module_relax/relax_driver.cpp index 752ce8687e..19fff5cc08 100644 --- a/source/module_relax/relax_driver.cpp +++ b/source/module_relax/relax_driver.cpp @@ -54,55 +54,67 @@ void Relax_Driver::relax_driver(ModuleESolver::ESolver* p_esolver, UnitCell& uce time_t fstart = time(nullptr); ModuleBase::matrix force; ModuleBase::matrix stress; - if (PARAM.inp.calculation == "scf" || PARAM.inp.calculation == "relax" || PARAM.inp.calculation == "cell-relax") - { - // I'm considering putting force and stress - // as part of ucell and use ucell to pass information - // back and forth between esolver and relaxation - // but I'll use force and stress explicitly here for now - // calculate the total energy - this->etot = p_esolver->cal_energy(); + // I'm considering putting force and stress + // as part of ucell and use ucell to pass information + // back and forth between esolver and relaxation + // but I'll use force and stress explicitly here for now + + // calculate the total energy + this->etot = p_esolver->cal_energy(); + + // calculate and gather all parts of total ionic forces + if (PARAM.inp.cal_force) + { + p_esolver->cal_force(ucell, force); + } + // calculate and gather all parts of stress + if (PARAM.inp.cal_stress) + { + p_esolver->cal_stress(ucell, stress); + } - // calculate and gather all parts of total ionic forces - if (PARAM.inp.cal_force) + if (PARAM.inp.calculation == "relax" || PARAM.inp.calculation == "cell-relax") + { + if (PARAM.inp.relax_new) { - p_esolver->cal_force(ucell, force); + stop = rl.relax_step(ucell, force, stress, this->etot); } - // calculate and gather all parts of stress - if (PARAM.inp.cal_stress) + else { - p_esolver->cal_stress(ucell, stress); + stop = rl_old.relax_step(istep, + this->etot, + ucell, + force, + stress, + force_step, + stress_step); // pengfei Li 2018-05-14 } - - if (PARAM.inp.calculation == "relax" || PARAM.inp.calculation == "cell-relax") + // print structure + // changelog 20240509 + // because I move out the dependence on GlobalV from UnitCell::print_stru_file + // so its parameter is calculated here + bool need_orb = PARAM.inp.basis_type == "pw"; + need_orb = need_orb && PARAM.inp.psi_initializer; + need_orb = need_orb && PARAM.inp.init_wfc.substr(0, 3) == "nao"; + need_orb = need_orb || PARAM.inp.basis_type == "lcao"; + need_orb = need_orb || PARAM.inp.basis_type == "lcao_in_pw"; + std::stringstream ss, ss1; + ss << PARAM.globalv.global_out_dir << "STRU_ION_D"; + ucell.print_stru_file(ss.str(), + PARAM.inp.nspin, + true, + PARAM.inp.calculation == "md", + PARAM.inp.out_mul, + need_orb, + PARAM.globalv.deepks_setorb, + GlobalV::MY_RANK); + + if (Ions_Move_Basic::out_stru) { - if (PARAM.inp.relax_new) - { - stop = rl.relax_step(ucell,force, stress, this->etot); - } - else - { - stop = rl_old.relax_step(istep, - this->etot, - ucell, - force, - stress, - force_step, - stress_step); // pengfei Li 2018-05-14 - } - // print structure - // changelog 20240509 - // because I move out the dependence on GlobalV from UnitCell::print_stru_file - // so its parameter is calculated here - bool need_orb = PARAM.inp.basis_type == "pw"; - need_orb = need_orb && PARAM.inp.psi_initializer; - need_orb = need_orb && PARAM.inp.init_wfc.substr(0, 3) == "nao"; - need_orb = need_orb || PARAM.inp.basis_type == "lcao"; - need_orb = need_orb || PARAM.inp.basis_type == "lcao_in_pw"; - std::stringstream ss, ss1; - ss << PARAM.globalv.global_out_dir << "STRU_ION_D"; - ucell.print_stru_file(ss.str(), + ss1 << PARAM.globalv.global_out_dir << "STRU_ION"; + ss1 << istep << "_D"; + ucell.print_stru_file(ss1.str(), PARAM.inp.nspin, true, PARAM.inp.calculation == "md", @@ -110,34 +122,18 @@ void Relax_Driver::relax_driver(ModuleESolver::ESolver* p_esolver, UnitCell& uce need_orb, PARAM.globalv.deepks_setorb, GlobalV::MY_RANK); - - if (Ions_Move_Basic::out_stru) - { - ss1 << PARAM.globalv.global_out_dir << "STRU_ION"; - ss1 << istep << "_D"; - ucell.print_stru_file(ss1.str(), - PARAM.inp.nspin, - true, - PARAM.inp.calculation == "md", - PARAM.inp.out_mul, - need_orb, - PARAM.globalv.deepks_setorb, - GlobalV::MY_RANK); - ModuleIO::CifParser::write(PARAM.globalv.global_out_dir + "STRU_NOW.cif", - ucell, - "# Generated by ABACUS ModuleIO::CifParser", - "data_?"); - } - - ModuleIO::output_after_relax(stop, p_esolver->conv_esolver, GlobalV::ofs_running); + ModuleIO::CifParser::write(PARAM.globalv.global_out_dir + "STRU_NOW.cif", + ucell, + "# Generated by ABACUS ModuleIO::CifParser", + "data_?"); } -#ifdef __RAPIDJSON - // add the energy to outout - Json::add_output_energy(p_esolver->cal_energy() * ModuleBase::Ry_to_eV); -#endif + ModuleIO::output_after_relax(stop, p_esolver->conv_esolver, GlobalV::ofs_running); } + #ifdef __RAPIDJSON + // add the energy to outout + Json::add_output_energy(p_esolver->cal_energy() * ModuleBase::Ry_to_eV); // add Json of cell coo stress force double unit_transform = ModuleBase::RYDBERG_SI / pow(ModuleBase::BOHR_RADIUS_SI, 3) * 1.0e-8; double fac = ModuleBase::Ry_to_eV / 0.529177; From 91b028199d360f33f63d25b18d46bc7e23e7852b Mon Sep 17 00:00:00 2001 From: Haozhi Han Date: Tue, 24 Dec 2024 20:50:45 +0800 Subject: [PATCH 16/44] Refactor: remove the Psi Constructors using `int* ngk_in` (#5745) * delete Psi(const int* ngk_in); * [pre-commit.ci lite] apply automatic fixes * format psi class * update hsolverpw * [pre-commit.ci lite] apply automatic fixes * add Constructor 8-2 * remove useless code * update operator.cpp call_act func * [pre-commit.ci lite] apply automatic fixes * change test code for psi Constructor * fix unit test bug * remove useless code --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/module_hamilt_general/operator.cpp | 14 +- source/module_hsolver/hsolver_pw.cpp | 40 ++-- source/module_hsolver/hsolver_pw.h | 3 +- source/module_hsolver/hsolver_pw_sdft.cpp | 2 +- .../test/diago_cg_float_test.cpp | 2 +- .../test/diago_cg_real_test.cpp | 2 +- source/module_hsolver/test/diago_cg_test.cpp | 2 +- .../test/diago_david_float_test.cpp | 2 +- .../test/diago_david_real_test.cpp | 2 +- .../module_hsolver/test/diago_david_test.cpp | 2 +- source/module_io/get_wf_lcao.cpp | 2 +- source/module_io/test/write_wfc_nao_test.cpp | 4 +- source/module_lr/utils/lr_util.hpp | 6 +- source/module_psi/psi.cpp | 204 ++++++++++++------ source/module_psi/psi.h | 46 ++-- source/module_psi/test/psi_test.cpp | 82 +++---- 16 files changed, 256 insertions(+), 159 deletions(-) diff --git a/source/module_hamilt_general/operator.cpp b/source/module_hamilt_general/operator.cpp index a7cf8a6437..a99e813e01 100644 --- a/source/module_hamilt_general/operator.cpp +++ b/source/module_hamilt_general/operator.cpp @@ -11,7 +11,8 @@ Operator::Operator(){} template Operator::~Operator() { - if(this->hpsi != nullptr) delete this->hpsi; + if(this->hpsi != nullptr) { delete this->hpsi; +} Operator* last = this->next_op; Operator* last_sub = this->next_sub_op; while(last != nullptr || last_sub != nullptr) @@ -61,8 +62,11 @@ typename Operator::hpsi_info Operator::hPsi(hpsi_info& inp } auto call_act = [&, this](const Operator* op, const bool& is_first_node) -> void { + // a "psi" with the bands of needed range - psi::Psi psi_wrapper(const_cast(tmpsi_in), 1, nbands, psi_input->get_nbasis()); + psi::Psi psi_wrapper(const_cast(tmpsi_in), 1, nbands, psi_input->get_nbasis(), true); + + switch (op->get_act_type()) { case 2: @@ -100,9 +104,11 @@ void Operator::init(const int ik_in) template void Operator::add(Operator* next) { - if(next==nullptr) return; + if(next==nullptr) { return; +} next->is_first_node = false; - if(next->next_op != nullptr) this->add(next->next_op); + if(next->next_op != nullptr) { this->add(next->next_op); +} Operator* last = this; //loop to end of the chain while(last->next_op != nullptr) diff --git a/source/module_hsolver/hsolver_pw.cpp b/source/module_hsolver/hsolver_pw.cpp index c217444a1a..0c1ad2e8b8 100644 --- a/source/module_hsolver/hsolver_pw.cpp +++ b/source/module_hsolver/hsolver_pw.cpp @@ -310,7 +310,7 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, #endif /// solve eigenvector and eigenvalue for H(k) - this->hamiltSolvePsiK(pHamilt, psi, precondition, eigenvalues.data() + ik * psi.get_nbands()); + this->hamiltSolvePsiK(pHamilt, psi, precondition, eigenvalues.data() + ik * psi.get_nbands(), this->wfc_basis->nks); if (skip_charge) { @@ -361,7 +361,8 @@ template void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, psi::Psi& psi, std::vector& pre_condition, - Real* eigenvalue) + Real* eigenvalue, + const int& nk_nums) { #ifdef __MPI const diag_comm_info comm_info = {POOL_WORLD, this->rank_in_pool, this->nproc_in_pool}; @@ -369,11 +370,18 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, const diag_comm_info comm_info = {this->rank_in_pool, this->nproc_in_pool}; #endif + auto ngk_pointer = psi.get_ngk_pointer(); + + std::vector ngk_vector(nk_nums, 0); + for (int i = 0; i < nk_nums; i++) + { + ngk_vector[i] = ngk_pointer[i]; + } + if (this->method == "cg") { // wrap the subspace_func into a lambda function - auto ngk_pointer = psi.get_ngk_pointer(); - auto subspace_func = [hm, ngk_pointer](const ct::Tensor& psi_in, ct::Tensor& psi_out) { + auto subspace_func = [hm, ngk_vector](const ct::Tensor& psi_in, ct::Tensor& psi_out) { // psi_in should be a 2D tensor: // psi_in.shape() = [nbands, nbasis] const auto ndim = psi_in.shape().ndim(); @@ -383,12 +391,12 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, 1, psi_in.shape().dim_size(0), psi_in.shape().dim_size(1), - ngk_pointer); + ngk_vector); auto psi_out_wrapper = psi::Psi(psi_out.data(), 1, psi_out.shape().dim_size(0), psi_out.shape().dim_size(1), - ngk_pointer); + ngk_vector); auto eigen = ct::Tensor(ct::DataTypeToEnum::value, ct::DeviceType::CpuDevice, ct::TensorShape({psi_in.shape().dim_size(0)})); @@ -407,7 +415,7 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, using ct_Device = typename ct::PsiToContainer::type; // wrap the hpsi_func and spsi_func into a lambda function - auto hpsi_func = [hm, ngk_pointer](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { + auto hpsi_func = [hm, ngk_vector](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { ModuleBase::timer::tick("DiagoCG_New", "hpsi_func"); // psi_in should be a 2D tensor: // psi_in.shape() = [nbands, nbasis] @@ -418,7 +426,7 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, 1, ndim == 1 ? 1 : psi_in.shape().dim_size(0), ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ngk_pointer); + ngk_vector); psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); using hpsi_info = typename hamilt::Operator::hpsi_info; hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data()); @@ -477,13 +485,12 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, { const int nband = psi.get_nbands(); const int nbasis = psi.get_nbasis(); - auto ngk_pointer = psi.get_ngk_pointer(); // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, ngk_pointer](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { + auto hpsi_func = [hm, ngk_vector](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { ModuleBase::timer::tick("DavSubspace", "hpsi_func"); // Convert "pointer data stucture" to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_pointer); + auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_vector); psi::Range bands_range(true, 0, 0, nvec - 1); @@ -499,13 +506,12 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, } else if (this->method == "dav_subspace") { - auto ngk_pointer = psi.get_ngk_pointer(); // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, ngk_pointer](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { + auto hpsi_func = [hm, ngk_vector](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { ModuleBase::timer::tick("DavSubspace", "hpsi_func"); // Convert "pointer data stucture" to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_pointer); + auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_vector); psi::Range bands_range(true, 0, 0, nvec - 1); @@ -550,15 +556,13 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, const int ld_psi = psi.get_nbasis(); /// leading dimension of psi // Davidson matrix-blockvector functions - - auto ngk_pointer = psi.get_ngk_pointer(); /// wrap hpsi into lambda function, Matrix \times blockvector // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, ngk_pointer](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { + auto hpsi_func = [hm, ngk_vector](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { ModuleBase::timer::tick("David", "hpsi_func"); // Convert pointer of psi_in to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_pointer); + auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_vector); psi::Range bands_range(true, 0, 0, nvec - 1); diff --git a/source/module_hsolver/hsolver_pw.h b/source/module_hsolver/hsolver_pw.h index 97b8143eba..0dee4fbdbf 100644 --- a/source/module_hsolver/hsolver_pw.h +++ b/source/module_hsolver/hsolver_pw.h @@ -56,7 +56,8 @@ class HSolverPW void hamiltSolvePsiK(hamilt::Hamilt* hm, psi::Psi& psi, std::vector& pre_condition, - Real* eigenvalue); + Real* eigenvalue, + const int& nk_nums); // calculate the precondition array for diagonalization in PW base void update_precondition(std::vector& h_diag, const int ik, const int npw, const Real vl_of_0); diff --git a/source/module_hsolver/hsolver_pw_sdft.cpp b/source/module_hsolver/hsolver_pw_sdft.cpp index d2fb35866c..68075fc111 100644 --- a/source/module_hsolver/hsolver_pw_sdft.cpp +++ b/source/module_hsolver/hsolver_pw_sdft.cpp @@ -54,7 +54,7 @@ void HSolverPW_SDFT::solve(const UnitCell& ucell, this->update_precondition(precondition, ik, this->wfc_basis->npwk[ik], pes->pot->get_vl_of_0()); /// solve eigenvector and eigenvalue for H(k) double* p_eigenvalues = &(pes->ekb(ik, 0)); - this->hamiltSolvePsiK(pHamilt, psi, precondition, p_eigenvalues); + this->hamiltSolvePsiK(pHamilt, psi, precondition, p_eigenvalues, nks); } #ifdef __MPI diff --git a/source/module_hsolver/test/diago_cg_float_test.cpp b/source/module_hsolver/test/diago_cg_float_test.cpp index bceb7143af..47fac4ef01 100644 --- a/source/module_hsolver/test/diago_cg_float_test.cpp +++ b/source/module_hsolver/test/diago_cg_float_test.cpp @@ -164,7 +164,7 @@ class DiagoCGPrepare auto psi_wrapper = psi::Psi>( psi_in.data>(), 1, ndim == 1 ? 1 : psi_in.shape().dim_size(0), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1)); + ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), true); psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); using hpsi_info = typename hamilt::Operator>::hpsi_info; hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data>()); diff --git a/source/module_hsolver/test/diago_cg_real_test.cpp b/source/module_hsolver/test/diago_cg_real_test.cpp index c58f1a763c..97872c316d 100644 --- a/source/module_hsolver/test/diago_cg_real_test.cpp +++ b/source/module_hsolver/test/diago_cg_real_test.cpp @@ -167,7 +167,7 @@ class DiagoCGPrepare auto psi_wrapper = psi::Psi( psi_in.data(), 1, ndim == 1 ? 1 : psi_in.shape().dim_size(0), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1)); + ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), true); psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); using hpsi_info = typename hamilt::Operator::hpsi_info; hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data()); diff --git a/source/module_hsolver/test/diago_cg_test.cpp b/source/module_hsolver/test/diago_cg_test.cpp index c87dc47e4e..08912bc428 100644 --- a/source/module_hsolver/test/diago_cg_test.cpp +++ b/source/module_hsolver/test/diago_cg_test.cpp @@ -158,7 +158,7 @@ class DiagoCGPrepare auto psi_wrapper = psi::Psi>( psi_in.data>(), 1, ndim == 1 ? 1 : psi_in.shape().dim_size(0), - ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1)); + ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), true); psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); using hpsi_info = typename hamilt::Operator>::hpsi_info; hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data>()); diff --git a/source/module_hsolver/test/diago_david_float_test.cpp b/source/module_hsolver/test/diago_david_float_test.cpp index 50b52593a3..c3feeea246 100644 --- a/source/module_hsolver/test/diago_david_float_test.cpp +++ b/source/module_hsolver/test/diago_david_float_test.cpp @@ -113,7 +113,7 @@ class DiagoDavPrepare auto hpsi_func = [phm](std::complex* psi_in,std::complex* hpsi_out, const int ld_psi, const int nvec) { - auto psi_iter_wrapper = psi::Psi>(psi_in, 1, nvec, ld_psi, nullptr); + auto psi_iter_wrapper = psi::Psi>(psi_in, 1, nvec, ld_psi, true); psi::Range bands_range(true, 0, 0, nvec-1); using hpsi_info = typename hamilt::Operator>::hpsi_info; hpsi_info info(&psi_iter_wrapper, bands_range, hpsi_out); diff --git a/source/module_hsolver/test/diago_david_real_test.cpp b/source/module_hsolver/test/diago_david_real_test.cpp index 0914c322ea..a1c4dee958 100644 --- a/source/module_hsolver/test/diago_david_real_test.cpp +++ b/source/module_hsolver/test/diago_david_real_test.cpp @@ -112,7 +112,7 @@ class DiagoDavPrepare auto hpsi_func = [phm](double* psi_in,double* hpsi_out, const int ld_psi, const int nvec) { - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, nullptr); + auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, true); psi::Range bands_range(true, 0, 0, nvec-1); using hpsi_info = typename hamilt::Operator::hpsi_info; hpsi_info info(&psi_iter_wrapper, bands_range, hpsi_out); diff --git a/source/module_hsolver/test/diago_david_test.cpp b/source/module_hsolver/test/diago_david_test.cpp index fa1a099207..71005a78b9 100644 --- a/source/module_hsolver/test/diago_david_test.cpp +++ b/source/module_hsolver/test/diago_david_test.cpp @@ -115,7 +115,7 @@ class DiagoDavPrepare auto hpsi_func = [phm](std::complex* psi_in,std::complex* hpsi_out, const int ld_psi, const int nvec) { - auto psi_iter_wrapper = psi::Psi>(psi_in, 1, nvec, ld_psi, nullptr); + auto psi_iter_wrapper = psi::Psi>(psi_in, 1, nvec, ld_psi, true); psi::Range bands_range(true, 0, 0, nvec-1); using hpsi_info = typename hamilt::Operator>::hpsi_info; hpsi_info info(&psi_iter_wrapper, bands_range, hpsi_out); diff --git a/source/module_io/get_wf_lcao.cpp b/source/module_io/get_wf_lcao.cpp index aa79677c32..a94e61590d 100644 --- a/source/module_io/get_wf_lcao.cpp +++ b/source/module_io/get_wf_lcao.cpp @@ -305,7 +305,7 @@ void IState_Envelope::begin(const UnitCell& ucell, printf(" Estimated on-the-fly memory consuming by IState_Envelope::begin::wfc_k_grid: %f MB\n", mem_size); // for pw_wfc in G space - psi::Psi> psi_g(kv.ngk.data()); + psi::Psi> psi_g; if (out_wf || out_wf_r) { psi_g.resize(nks, nbands, pw_wfc->npwk_max); diff --git a/source/module_io/test/write_wfc_nao_test.cpp b/source/module_io/test/write_wfc_nao_test.cpp index f0503ad80c..1b39f34a0e 100644 --- a/source/module_io/test/write_wfc_nao_test.cpp +++ b/source/module_io/test/write_wfc_nao_test.cpp @@ -167,7 +167,7 @@ class WriteWfcLcaoTest : public testing::Test TEST_F(WriteWfcLcaoTest, WriteWfcLcao) { // create a psi object - psi::Psi my_psi(psi_local_double.data(), nk, nbands_local, nbasis_local); + psi::Psi my_psi(psi_local_double.data(), nk, nbands_local, nbasis_local, true); PARAM.sys.global_out_dir = "./"; ModuleIO::write_wfc_nao(2, my_psi, ekb, wg, kvec_c, pv, -1); @@ -196,7 +196,7 @@ TEST_F(WriteWfcLcaoTest, WriteWfcLcao) TEST_F(WriteWfcLcaoTest, WriteWfcLcaoComplex) { - psi::Psi> my_psi(psi_local_complex.data(), nk, nbands_local, nbasis_local); + psi::Psi> my_psi(psi_local_complex.data(), nk, nbands_local, nbasis_local, true); PARAM.sys.global_out_dir = "./"; ModuleIO::write_wfc_nao(2, my_psi, ekb, wg, kvec_c, pv, -1); diff --git a/source/module_lr/utils/lr_util.hpp b/source/module_lr/utils/lr_util.hpp index 9fda5ccb8d..8fdc1b9b96 100644 --- a/source/module_lr/utils/lr_util.hpp +++ b/source/module_lr/utils/lr_util.hpp @@ -108,9 +108,10 @@ namespace LR_Util { assert(psi_kfirst.get_nk() == 1); assert(nk_in * nbasis_in == psi_kfirst.get_nbasis()); + int ib_now = psi_kfirst.get_current_b(); psi_kfirst.fix_b(0); // for get_pointer() to get the head pointer - psi::Psi psi_bfirst(psi_kfirst.get_pointer(), nk_in, psi_kfirst.get_nbands(), nbasis_in, psi_kfirst.get_ngk_pointer(), false); + psi::Psi psi_bfirst(psi_kfirst.get_pointer(), nk_in, psi_kfirst.get_nbands(), nbasis_in, false); psi_kfirst.fix_b(ib_now); return psi_bfirst; } @@ -121,8 +122,9 @@ namespace LR_Util { int ib_now = psi_bfirst.get_current_b(); int ik_now = psi_bfirst.get_current_k(); + psi_bfirst.fix_kb(0, 0); // for get_pointer() to get the head pointer - psi::Psi psi_kfirst(psi_bfirst.get_pointer(), 1, psi_bfirst.get_nbands(), psi_bfirst.get_nk() * psi_bfirst.get_nbasis(), psi_bfirst.get_ngk_pointer(), true); + psi::Psi psi_kfirst(psi_bfirst.get_pointer(), 1, psi_bfirst.get_nbands(), psi_bfirst.get_nk() * psi_bfirst.get_nbasis(), true); psi_bfirst.fix_kb(ik_now, ib_now); return psi_kfirst; } diff --git a/source/module_psi/psi.cpp b/source/module_psi/psi.cpp index f129d3e422..fb8abc78cd 100644 --- a/source/module_psi/psi.cpp +++ b/source/module_psi/psi.cpp @@ -1,22 +1,20 @@ #include "psi.h" -#include "module_parameter/parameter.h" #include "module_base/global_variable.h" -#include "module_base/tool_quit.h" - #include "module_base/module_device/device.h" -#include - +#include "module_base/tool_quit.h" +#include "module_parameter/parameter.h" #include #include +#include namespace psi { Range::Range(const size_t range_in) { - k_first = 1; + k_first = true; index_1 = 0; range_1 = range_in; range_2 = range_in; @@ -30,45 +28,71 @@ Range::Range(const bool k_first_in, const size_t index_1_in, const size_t range_ range_2 = range_2_in; } -template Psi::Psi() +template +Psi::Psi() { this->npol = PARAM.globalv.npol; this->device = base_device::get_device_type(this->ctx); } -template Psi::~Psi() +template +Psi::~Psi() { - if (this->allocate_inside) delete_memory_op()(this->ctx, this->psi); + if (this->allocate_inside) + { + delete_memory_op()(this->ctx, this->psi); + } } -template Psi::Psi(const int* ngk_in) +template +Psi::Psi(const int nk_in, const int nbd_in, const int nbs_in, const int* ngk_in, const bool k_first_in) { + this->k_first = k_first_in; this->ngk = ngk_in; + this->current_b = 0; + this->current_k = 0; this->npol = PARAM.globalv.npol; this->device = base_device::get_device_type(this->ctx); + this->resize(nk_in, nbd_in, nbs_in); + // Currently only GPU's implementation is supported for device recording! + base_device::information::print_device_info(this->ctx, GlobalV::ofs_device); + base_device::information::record_device_memory(this->ctx, + GlobalV::ofs_device, + "Psi->resize()", + sizeof(T) * nk_in * nbd_in * nbs_in); } -template Psi::Psi(const int nk_in, const int nbd_in, const int nbs_in, const int* ngk_in, const bool k_first_in) +// Constructor 8-1: +template +Psi::Psi(T* psi_pointer, + const int nk_in, + const int nbd_in, + const int nbs_in, + const std::vector& ngk_vector_in, + const bool k_first_in) { this->k_first = k_first_in; - this->ngk = ngk_in; + this->ngk = ngk_vector_in.data(); this->current_b = 0; this->current_k = 0; this->npol = PARAM.globalv.npol; this->device = base_device::get_device_type(this->ctx); - this->resize(nk_in, nbd_in, nbs_in); + this->nk = nk_in; + this->nbands = nbd_in; + this->nbasis = nbs_in; + this->current_nbasis = nbs_in; + this->psi_current = this->psi = psi_pointer; + this->allocate_inside = false; // Currently only GPU's implementation is supported for device recording! base_device::information::print_device_info(this->ctx, GlobalV::ofs_device); - base_device::information::record_device_memory(this->ctx, - GlobalV::ofs_device, - "Psi->resize()", - sizeof(T) * nk_in * nbd_in * nbs_in); } -template Psi::Psi(T* psi_pointer, const int nk_in, const int nbd_in, const int nbs_in, const int* ngk_in, const bool k_first_in) +// Constructor 8-2: +template +Psi::Psi(T* psi_pointer, const int nk_in, const int nbd_in, const int nbs_in, const bool k_first_in) { this->k_first = k_first_in; - this->ngk = ngk_in; + this->ngk = nullptr; this->current_b = 0; this->current_k = 0; this->npol = PARAM.globalv.npol; @@ -83,7 +107,8 @@ template Psi::Psi(T* psi_pointer, const base_device::information::print_device_info(this->ctx, GlobalV::ofs_device); } -template Psi::Psi(const Psi& psi_in, const int nk_in, int nband_in) +template +Psi::Psi(const Psi& psi_in, const int nk_in, int nband_in) { assert(nk_in <= psi_in.get_nk()); if (nband_in == 0) @@ -129,7 +154,8 @@ Psi::Psi(T* psi_pointer, const Psi& psi_in, const int nk_in, int nban this->psi = psi_pointer; } -template Psi::Psi(const Psi& psi_in) +template +Psi::Psi(const Psi& psi_in) { this->ngk = psi_in.get_ngk_pointer(); this->npol = psi_in.npol; @@ -143,10 +169,10 @@ template Psi::Psi(const Psi& psi_in) this->device = base_device::get_device_type(this->ctx); this->resize(psi_in.get_nk(), psi_in.get_nbands(), psi_in.get_nbasis()); base_device::memory::synchronize_memory_op()(this->ctx, - psi_in.get_device(), - this->psi, - psi_in.get_pointer() - psi_in.get_psi_bias(), - psi_in.size()); + psi_in.get_device(), + this->psi, + psi_in.get_pointer() - psi_in.get_psi_bias(), + psi_in.size()); this->psi_bias = psi_in.get_psi_bias(); this->current_nbasis = psi_in.get_current_nbas(); this->psi_current = this->psi + psi_in.get_psi_bias(); @@ -173,31 +199,31 @@ Psi::Psi(const Psi& psi_in) // We first malloc a memory in CPU, then cast the memory from T_in to T in CPU. // Finally, synchronize the memory from CPU to GPU. // This could help to reduce the peak memory usage of device. - if (std::is_same::value && - std::is_same::value) + if (std::is_same::value && std::is_same::value) { - auto * arr = (T*) malloc(sizeof(T) * psi_in.size()); + auto* arr = (T*)malloc(sizeof(T) * psi_in.size()); // cast the memory from T_in to T in CPU base_device::memory::cast_memory_op()(psi_in.get_device(), - psi_in.get_device(), - arr, - psi_in.get_pointer() - psi_in.get_psi_bias(), - psi_in.size()); + psi_in.get_device(), + arr, + psi_in.get_pointer() + - psi_in.get_psi_bias(), + psi_in.size()); // synchronize the memory from CPU to GPU base_device::memory::synchronize_memory_op()(this->ctx, - psi_in.get_device(), - this->psi, - arr, - psi_in.size()); + psi_in.get_device(), + this->psi, + arr, + psi_in.size()); free(arr); } else { base_device::memory::cast_memory_op()(this->ctx, - psi_in.get_device(), - this->psi, - psi_in.get_pointer() - psi_in.get_psi_bias(), - psi_in.size()); + psi_in.get_device(), + this->psi, + psi_in.get_pointer() - psi_in.get_psi_bias(), + psi_in.size()); } this->psi_bias = psi_in.get_psi_bias(); this->current_nbasis = psi_in.get_current_nbas(); @@ -218,54 +244,64 @@ void Psi::resize(const int nks_in, const int nbands_in, const int nba // GlobalV::ofs_device << "allocated xxx MB memory for psi" << std::endl; } -template T* Psi::get_pointer() const +template +T* Psi::get_pointer() const { return this->psi_current; } -template T* Psi::get_pointer(const int& ikb) const +template +T* Psi::get_pointer(const int& ikb) const { assert(ikb >= 0); assert(this->k_first ? ikb < this->nbands : ikb < this->nk); return this->psi_current + ikb * this->nbasis; } -template const int* Psi::get_ngk_pointer() const +template +const int* Psi::get_ngk_pointer() const { return this->ngk; } -template const bool& Psi::get_k_first() const +template +const bool& Psi::get_k_first() const { return this->k_first; } -template const Device* Psi::get_device() const +template +const Device* Psi::get_device() const { return this->ctx; } -template const int& Psi::get_psi_bias() const +template +const int& Psi::get_psi_bias() const { return this->psi_bias; } -template const int& Psi::get_nk() const +template +const int& Psi::get_nk() const { return this->nk; } -template const int& Psi::get_nbands() const +template +const int& Psi::get_nbands() const { return this->nbands; } -template const int& Psi::get_nbasis() const +template +const int& Psi::get_nbasis() const { return this->nbasis; } -template std::size_t Psi::size() const +template +std::size_t Psi::size() const { if (this->psi == nullptr) { @@ -274,16 +310,24 @@ template std::size_t Psi::size() const return this->nk * static_cast(this->nbands) * this->nbasis; } -template void Psi::fix_k(const int ik) const +template +void Psi::fix_k(const int ik) const { assert(ik >= 0); this->current_k = ik; if (this->ngk != nullptr && this->npol != 2) + { this->current_nbasis = this->ngk[ik]; + } else + { this->current_nbasis = this->nbasis; + } - if (this->k_first)this->current_b = 0; + if (this->k_first) + { + this->current_b = 0; + } int base = this->current_b * this->nk * this->nbasis; if (ik >= this->nk) { @@ -297,12 +341,16 @@ template void Psi::fix_k(const int ik) this->psi_current = const_cast(&(this->psi[psi_bias])); } } -template void Psi::fix_b(const int ib) const +template +void Psi::fix_b(const int ib) const { assert(ib >= 0); this->current_b = ib; - if (!this->k_first)this->current_k = 0; + if (!this->k_first) + { + this->current_k = 0; + } int base = this->current_k * this->nbands * this->nbasis; if (ib >= this->nbands) { @@ -317,13 +365,14 @@ template void Psi::fix_b(const int ib) } } -template void Psi::fix_kb(const int ik, const int ib)const +template +void Psi::fix_kb(const int ik, const int ib) const { assert(ik >= 0 && ib >= 0); this->current_k = ik; this->current_b = ib; if (ik >= this->nk || ib >= this->nbands) - { // fix to 0 + { // fix to 0 this->psi_bias = 0; this->psi_current = const_cast(&(this->psi[0])); } @@ -339,10 +388,12 @@ T& Psi::operator()(const int ikb1, const int ikb2, const int ibasis) { assert(ikb1 >= 0 && ikb2 >= 0 && ibasis >= 0); assert(this->k_first ? ikb1 < this->nk && ikb2 < this->nbands : ikb1 < this->nbands && ikb2 < this->nk); - return this->k_first ? this->psi[(ikb1 * this->nbands + ikb2) * this->nbasis + ibasis] : this->psi[(ikb1 * this->nk + ikb2) * this->nbasis + ibasis]; + return this->k_first ? this->psi[(ikb1 * this->nbands + ikb2) * this->nbasis + ibasis] + : this->psi[(ikb1 * this->nk + ikb2) * this->nbasis + ibasis]; } -template T& Psi::operator()(const int ikb2, const int ibasis) const +template +T& Psi::operator()(const int ikb2, const int ibasis) const { assert(this->k_first ? this->current_b == 0 : this->current_k == 0); assert(this->k_first ? ikb2 >= 0 && ikb2 < this->nbands : ikb2 >= 0 && ikb2 < this->nk); @@ -350,61 +401,72 @@ template T& Psi::operator()(const int i return this->psi_current[ikb2 * this->nbasis + ibasis]; } -template T& Psi::operator()(const int ibasis) const +template +T& Psi::operator()(const int ibasis) const { assert(ibasis >= 0 && ibasis < this->nbasis); return this->psi_current[ibasis]; } -template int Psi::get_current_k() const +template +int Psi::get_current_k() const { return this->current_k; } -template int Psi::get_current_b() const +template +int Psi::get_current_b() const { return this->current_b; } -template int Psi::get_current_nbas() const +template +int Psi::get_current_nbas() const { return this->current_nbasis; } -template const int& Psi::get_ngk(const int ik_in) const +template +const int& Psi::get_ngk(const int ik_in) const { - if (!this->ngk) return this->nbasis; + if (!this->ngk) + { + return this->nbasis; + } return this->ngk[ik_in]; } -template void Psi::zero_out() +template +void Psi::zero_out() { // this->psi.assign(this->psi.size(), T(0)); set_memory_op()(this->ctx, this->psi, 0, this->size()); } -template std::tuple Psi::to_range(const Range& range) const +template +std::tuple Psi::to_range(const Range& range) const { const int& i1 = range.index_1; const int& r1 = range.range_1; const int& r2 = range.range_2; - if (range.k_first != this->k_first || r1 < 0 || r2 < r1 + if (range.k_first != this->k_first || r1 < 0 + || r2 < r1 // || (range.k_first && (r2 >= this->nbands || i1 >= this->nk)) // || (!range.k_first && (r2 >= this->nk || i1 >= this->nbands))) - || (range.k_first ? (i1 >= this->nk) : (i1 >= this->nbands)) // illegal index 1 - || (range.k_first ? (i1 > 0 && r2 >= this->nbands) : (i1 > 0 && r2 >= this->nk)) // illegal range of index 2 + || (range.k_first ? (i1 >= this->nk) : (i1 >= this->nbands)) // illegal index 1 + || (range.k_first ? (i1 > 0 && r2 >= this->nbands) : (i1 > 0 && r2 >= this->nk)) // illegal range of index 2 || (range.k_first ? (i1 < 0 && r2 >= this->nk) : (i1 < 0 && r2 >= this->nbands))) // illegal range of index 1 { return std::tuple(nullptr, 0); } - else if (i1 < 0) // [r1, r2] is the range of index1 with length m + else if (i1 < 0) // [r1, r2] is the range of index1 with length m { const T* p = &this->psi[r1 * (k_first ? this->nbands : this->nk) * this->nbasis]; int m = (r2 - r1 + 1) * this->npol; return std::tuple(p, m); } - else // [r1, r2] is the range of index2 with length m + else // [r1, r2] is the range of index2 with length m { const T* p = &this->psi[(i1 * (k_first ? this->nbands : this->nk) + r1) * this->nbasis]; int m = (r2 - r1 + 1) * this->npol; diff --git a/source/module_psi/psi.h b/source/module_psi/psi.h index 283c641204..6b374c8a70 100644 --- a/source/module_psi/psi.h +++ b/source/module_psi/psi.h @@ -5,6 +5,7 @@ #include "module_base/module_device/types.h" #include +#include namespace psi { @@ -37,22 +38,43 @@ class Psi public: // Constructor 1: basic Psi(); - // Constructor 2: specify ngk only, should call resize() later - Psi(const int* ngk_in); + // Constructor 3: specify nk, nbands, nbasis, ngk, and do not need to call resize() later Psi(const int nk_in, const int nbd_in, const int nbs_in, const int* ngk_in = nullptr, const bool k_first_in = true); + // Constructor 4: copy a new Psi which have several k-points and several bands from inputted psi_in Psi(const Psi& psi_in, const int nk_in, int nband_in = 0); + // Constructor 5: a wrapper of a data pointer, used for Operator::hPsi() // in this case, fix_k can not be used Psi(T* psi_pointer, const Psi& psi_in, const int nk_in, int nband_in = 0); + // Constructor 6: initialize a new psi from the given psi_in Psi(const Psi& psi_in); + // Constructor 7: initialize a new psi from the given psi_in with a different class template // in this case, psi_in may have a different device type. - template Psi(const Psi& psi_in); - // Constructor 8: a pointer version of constructor 3 - Psi(T* psi_pointer, const int nk_in, const int nbd_in, const int nbs_in, const int* ngk_in = nullptr, const bool k_first_in = true); + template + Psi(const Psi& psi_in); + + // Constructor 8-1: a pointer version of constructor 3 + // only used in hsolver-pw function pointer. + Psi(T* psi_pointer, + const int nk_in, + const int nbd_in, + const int nbs_in, + const std::vector& ngk_vector_in, + const bool k_first_in = true); + + // Constructor 8-2: a pointer version of constructor 3 + // only used in operator.cpp call_act func + Psi(T* psi_pointer, + const int nk_in, + const int nbd_in, + const int nbs_in, + const bool k_first_in); + + // Destructor for deleting the psi array manually ~Psi(); @@ -77,11 +99,10 @@ class Psi /// if k_first=true: choose band index, then Psi(ibasis) can reach Psi(ik, iband, ibasis) /// if k_first=false: choose band index, then Psi(ik, ibasis) can reach Psi(iband, ik, ibasis) void fix_b(const int ib) const; - /// choose k-point index and band index, then Psi(ibasis) can reach + /// choose k-point index and band index, then Psi(ibasis) can reach /// Psi(ik, iband, ibasis) for k_first=true or Psi(iband, ik, ibasis) for k_first=false void fix_kb(const int ik, const int ib) const; - /// use operator "(ikb1, ikb2, ibasis)" to reach target element /// if k_first=true, ikb=ik, ikb2=iband /// if k_first=false, ikb=iband, ikb2=ik @@ -121,15 +142,15 @@ class Psi T* psi = nullptr; // avoid using C++ STL base_device::AbacusDevice_t device = {}; // track the device type (CPU, GPU and SYCL are supported currented) - Device* ctx = {}; // an context identifier for obtaining the device variable + Device* ctx = {}; // an context identifier for obtaining the device variable // dimensions - int nk = 1; // number of k points + int nk = 1; // number of k points int nbands = 1; // number of bands int nbasis = 1; // number of basis - mutable int current_k = 0; // current k point - mutable int current_b = 0; // current band index + mutable int current_k = 0; // current k point + mutable int current_b = 0; // current band index mutable int current_nbasis = 1; // current number of basis of current_k // current pointer for getting the psi @@ -141,7 +162,7 @@ class Psi bool k_first = true; - bool allocate_inside = true; ///; @@ -152,7 +173,6 @@ class Psi #endif using set_memory_op = base_device::memory::set_memory_op; using synchronize_memory_op = base_device::memory::synchronize_memory_op; - }; } // end of namespace psi diff --git a/source/module_psi/test/psi_test.cpp b/source/module_psi/test/psi_test.cpp index d031897e7e..df22b5f885 100644 --- a/source/module_psi/test/psi_test.cpp +++ b/source/module_psi/test/psi_test.cpp @@ -63,25 +63,25 @@ TEST_F(TestPsi, get_val) EXPECT_EQ(psi_object14->get_psi_bias(), 0); } -TEST_F(TestPsi, get_ngk) -{ - psi::Psi>* psi_object21 = new psi::Psi>(&ngk[0]); - psi::Psi* psi_object22 = new psi::Psi(&ngk[0]); - psi::Psi>* psi_object23 = new psi::Psi>(&ngk[0]); - psi::Psi* psi_object24 = new psi::Psi(&ngk[0]); +// TEST_F(TestPsi, get_ngk) +// { +// psi::Psi>* psi_object21 = new psi::Psi>(&ngk[0]); +// psi::Psi* psi_object22 = new psi::Psi(&ngk[0]); +// psi::Psi>* psi_object23 = new psi::Psi>(&ngk[0]); +// psi::Psi* psi_object24 = new psi::Psi(&ngk[0]); - EXPECT_EQ(psi_object21->get_ngk(2), ngk[2]); - EXPECT_EQ(psi_object21->get_ngk_pointer()[0], ngk[0]); +// EXPECT_EQ(psi_object21->get_ngk(2), ngk[2]); +// EXPECT_EQ(psi_object21->get_ngk_pointer()[0], ngk[0]); - EXPECT_EQ(psi_object22->get_ngk(2), ngk[2]); - EXPECT_EQ(psi_object22->get_ngk_pointer()[0], ngk[0]); +// EXPECT_EQ(psi_object22->get_ngk(2), ngk[2]); +// EXPECT_EQ(psi_object22->get_ngk_pointer()[0], ngk[0]); - EXPECT_EQ(psi_object23->get_ngk(2), ngk[2]); - EXPECT_EQ(psi_object23->get_ngk_pointer()[0], ngk[0]); +// EXPECT_EQ(psi_object23->get_ngk(2), ngk[2]); +// EXPECT_EQ(psi_object23->get_ngk_pointer()[0], ngk[0]); - EXPECT_EQ(psi_object24->get_ngk(2), ngk[2]); - EXPECT_EQ(psi_object24->get_ngk_pointer()[0], ngk[0]); -} +// EXPECT_EQ(psi_object24->get_ngk(2), ngk[2]); +// EXPECT_EQ(psi_object24->get_ngk_pointer()[0], ngk[0]); +// } TEST_F(TestPsi, get_pointer_op_zero_complex_double) { @@ -231,7 +231,7 @@ TEST_F(TestPsi, size) TEST_F(TestPsi, range) { psi::Range range1(1);// k_first = 1;index_1 = 0;range_1 = 1;range_2 = 1; - psi::Range range2(0,1,0,0); + psi::Range range2(false,1,0,0); EXPECT_EQ(range1.range_1, 1); EXPECT_EQ(range1.range_2, 1); EXPECT_EQ(range2.k_first, 0); @@ -316,12 +316,12 @@ TEST_F(TestPsi, band_first) EXPECT_EQ((*psi_band_32)(2), 42); // range - psi::Range b2_k11(0, 2, 1, 1); - psi::Range b13(0, -1, 1, 3); - psi::Range illegal_kfirst(1, 2, 1, 1); - psi::Range illegal_index1(0, 4, 2, 1); - psi::Range illegal_range1(0, -1, 3, 1); - psi::Range illegal_range2(0, 2, 1, 3); + psi::Range b2_k11(false, 2, 1, 1); + psi::Range b13(false, -1, 1, 3); + psi::Range illegal_kfirst(true, 2, 1, 1); + psi::Range illegal_index1(false, 4, 2, 1); + psi::Range illegal_range1(false, -1, 3, 1); + psi::Range illegal_range2(false, 2, 1, 3); EXPECT_EQ(std::get<0>(psi_band_c64->to_range(b2_k11))[1].real(), 51); EXPECT_EQ(std::get<1>(psi_band_c64->to_range(b2_k11)), 1); EXPECT_EQ(std::get<0>(psi_band_64->to_range(b13))[50], 70); @@ -333,25 +333,27 @@ TEST_F(TestPsi, band_first) // pointer constructor // band-first to k-first - psi::Psi psi_band_32_k(psi_band_32->get_pointer(), psi_band_32->get_nk(), psi_band_32->get_nbands(), psi_band_32->get_nbasis(), psi_band_32->get_ngk_pointer(), true); + // psi::Psi psi_band_32_k(psi_band_32->get_pointer(), psi_band_32->get_nk(), psi_band_32->get_nbands(), psi_band_32->get_nbasis(), psi_band_32->get_ngk_pointer(), true); // k-first to band-first - psi::Psi psi_band_32_b(psi_band_32_k.get_pointer(), psi_band_32_k.get_nk(), psi_band_32_k.get_nbands(), psi_band_32_k.get_nbasis(), psi_band_32_k.get_ngk_pointer(), false); - EXPECT_EQ(psi_band_32_k.get_nk(), ink); - EXPECT_EQ(psi_band_32_k.get_nbands(), inbands); - EXPECT_EQ(psi_band_32_k.get_nbasis(), inbasis); - EXPECT_EQ(psi_band_32_b.get_nk(), ink); - EXPECT_EQ(psi_band_32_b.get_nbands(), inbands); - EXPECT_EQ(psi_band_32_b.get_nbasis(), inbasis); - for (int ik = 0;ik < ink;++ik) - for (int ib = 0;ib < inbands;++ib) - { - psi_band_32->fix_kb(ik, ib); - psi_band_32_k.fix_kb(ik, ib); - psi_band_32_b.fix_kb(ik, ib); - EXPECT_EQ(psi_band_32->get_psi_bias(), (ib * ink + ik) * inbasis); - EXPECT_EQ(psi_band_32_k.get_psi_bias(), (ik * inbands + ib) * inbasis); - EXPECT_EQ(psi_band_32_b.get_psi_bias(), (ib * ink + ik) * inbasis); - } + // psi::Psi psi_band_32_b(psi_band_32_k.get_pointer(), psi_band_32_k.get_nk(), psi_band_32_k.get_nbands(), psi_band_32_k.get_nbasis(), psi_band_32_k.get_ngk_pointer(), false); + // EXPECT_EQ(psi_band_32_k.get_nk(), ink); + // EXPECT_EQ(psi_band_32_k.get_nbands(), inbands); + // EXPECT_EQ(psi_band_32_k.get_nbasis(), inbasis); + // EXPECT_EQ(psi_band_32_b.get_nk(), ink); + // EXPECT_EQ(psi_band_32_b.get_nbands(), inbands); + // EXPECT_EQ(psi_band_32_b.get_nbasis(), inbasis); + // for (int ik = 0;ik < ink;++ik) + // { + // for (int ib = 0;ib < inbands;++ib) + // { + // psi_band_32->fix_kb(ik, ib); + // psi_band_32_k.fix_kb(ik, ib); + // psi_band_32_b.fix_kb(ik, ib); + // EXPECT_EQ(psi_band_32->get_psi_bias(), (ib * ink + ik) * inbasis); + // EXPECT_EQ(psi_band_32_k.get_psi_bias(), (ik * inbands + ib) * inbasis); + // EXPECT_EQ(psi_band_32_b.get_psi_bias(), (ib * ink + ik) * inbasis); + // } + // } delete psi_band_c64; delete psi_band_64; From 28cb769ca781b7c232707bdeb5932417b332947e Mon Sep 17 00:00:00 2001 From: Qianrui Liu <76200646+Qianruipku@users.noreply.github.com> Date: Wed, 25 Dec 2024 17:42:53 +0800 Subject: [PATCH 17/44] fix: segment fault in GPU-Davidson (#5763) It comes from the compatible problem between c++ compiler and nvcc --- .../kernels/cuda/math_kernel_op.cu | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/source/module_hsolver/kernels/cuda/math_kernel_op.cu b/source/module_hsolver/kernels/cuda/math_kernel_op.cu index 6185433895..149b9ce389 100644 --- a/source/module_hsolver/kernels/cuda/math_kernel_op.cu +++ b/source/module_hsolver/kernels/cuda/math_kernel_op.cu @@ -760,17 +760,19 @@ void gemv_op, base_device::DEVICE_GPU>::operator()(const bas const char& trans, const int& m, const int& n, - const std::complex* alpha, + const std::complex* alpha_in, const std::complex* A, const int& lda, const std::complex* X, const int& incx, - const std::complex* beta, + const std::complex* beta_in, std::complex* Y, const int& incy) { cublasOperation_t cutrans = judge_trans_op(true, trans, "gemv_op"); - cublasErrcheck(cublasCgemv(cublas_handle, cutrans, m, n, (float2*)alpha, (float2*)A, lda, (float2*)X, incx, (float2*)beta, (float2*)Y, incx)); + cuFloatComplex alpha = make_cuFloatComplex(alpha_in->real(), alpha_in->imag()); + cuFloatComplex beta = make_cuFloatComplex(beta_in->real(), beta_in->imag()); + cublasErrcheck(cublasCgemv(cublas_handle, cutrans, m, n, &alpha, (cuFloatComplex*)A, lda, (cuFloatComplex*)X, incx, &beta, (cuFloatComplex*)Y, incx)); } template <> @@ -778,17 +780,21 @@ void gemv_op, base_device::DEVICE_GPU>::operator()(const ba const char& trans, const int& m, const int& n, - const std::complex* alpha, + const std::complex* alpha_in, const std::complex* A, const int& lda, const std::complex* X, const int& incx, - const std::complex* beta, + const std::complex* beta_in, std::complex* Y, const int& incy) { cublasOperation_t cutrans = judge_trans_op(true, trans, "gemv_op"); - cublasErrcheck(cublasZgemv(cublas_handle, cutrans, m, n, (double2*)alpha, (double2*)A, lda, (double2*)X, incx, (double2*)beta, (double2*)Y, incx)); + cuDoubleComplex alpha = make_cuDoubleComplex(alpha_in->real(), alpha_in->imag()); + cuDoubleComplex beta = make_cuDoubleComplex(beta_in->real(), beta_in->imag()); + // icpc and nvcc have some compatible problems + // We must use cuDoubleComplex instead of converting std::complex* to cuDoubleComplex* + cublasErrcheck(cublasZgemv(cublas_handle, cutrans, m, n, &alpha, (cuDoubleComplex*)A, lda, (cuDoubleComplex*)X, incx, &beta, (cuDoubleComplex*)Y, incx)); } template <> From 0cdab49a34b5c14d1217cb926475cdc30146df72 Mon Sep 17 00:00:00 2001 From: LUNASEA <33978601+maki49@users.noreply.github.com> Date: Wed, 25 Dec 2024 17:46:01 +0800 Subject: [PATCH 18/44] Feature: LR-TDDFT absorption spectrum in velocity gauge (#5760) * calculate absorption spectrum by velocity matrix * add parameter abs_gauge * refactor transition density matrix in lr_spectrum * refactor oscillator_strength and dipole in lr_spectrum * refactor and add some test functions * fix the bug at ks-lr * contract v(k) with D(k) * fix: recover Nk divided in cal_dm_trans * fix the spectra strength of singlet * update examples * fix after rebase --- examples/lr-tddft/lcao_H2O/INPUT | 3 + examples/lr-tddft/lcao_Si2/INPUT | 5 +- source/Makefile.Objects | 1 + .../module_nao/two_center_bundle.h | 1 + source/module_io/read_input_item_tddft.cpp | 6 + source/module_io/test/read_input_ptest.cpp | 1 + source/module_lr/CMakeLists.txt | 1 + source/module_lr/esolver_lrtd_lcao.cpp | 66 ++-- source/module_lr/lr_spectrum.cpp | 286 ++++++++++-------- source/module_lr/lr_spectrum.h | 131 ++++---- source/module_lr/lr_spectrum_velocity.cpp | 181 +++++++++++ source/module_lr/utils/lr_util.cpp | 13 + source/module_lr/utils/lr_util.h | 4 + source/module_lr/utils/lr_util_hcontainer.h | 31 ++ source/module_parameter/input_parameter.h | 1 + 15 files changed, 526 insertions(+), 205 deletions(-) create mode 100644 source/module_lr/lr_spectrum_velocity.cpp diff --git a/examples/lr-tddft/lcao_H2O/INPUT b/examples/lr-tddft/lcao_H2O/INPUT index 8e7164ae66..9a30e2de0c 100644 --- a/examples/lr-tddft/lcao_H2O/INPUT +++ b/examples/lr-tddft/lcao_H2O/INPUT @@ -6,6 +6,7 @@ orbital_dir ../../../tests/PP_ORB calculation scf nbands 23 symmetry -1 +nspin 2 #Parameters (2.Iteration) ecutwfc 60 ###Energy cutoff needs to be tested to ensure your calculation is reliable.[1] @@ -30,6 +31,7 @@ xc_kernel lda lr_solver dav lr_thr 1e-2 pw_diag_ndim 2 +# lr_unrestricted 1 ### use this to do TDUKS calculation for closeshell systems (openshell system will force TDUKS) esolver_type ks-lr out_alllog 1 @@ -39,6 +41,7 @@ out_alllog 1 nvirt 19 abs_wavelen_range 40 180 abs_broadening 0.01 +abs_gauge length ### [1] Energy cutoff determines the quality of numerical quadratures in your calculations. ### So it is strongly recommended to test whether your result (such as converged SCF energies) is diff --git a/examples/lr-tddft/lcao_Si2/INPUT b/examples/lr-tddft/lcao_Si2/INPUT index 11c9123140..62248494d4 100644 --- a/examples/lr-tddft/lcao_Si2/INPUT +++ b/examples/lr-tddft/lcao_Si2/INPUT @@ -5,7 +5,8 @@ pseudo_dir ../../../tests/PP_ORB orbital_dir ../../../tests/PP_ORB calculation scf nbands 23 -symmetry 0 +symmetry -1 +nspin 2 #Parameters (2.Iteration) ecutwfc 60 ###Energy cutoff needs to be tested to ensure your calculation is reliable.[1] @@ -37,6 +38,8 @@ out_alllog 1 nvirt 19 abs_wavelen_range 100 175 +abs_broadening 0.01 # in Ry +abs_gauge velocity ### velocity gauge is recommended for periodic systems ### [1] Energy cutoff determines the quality of numerical quadratures in your calculations. diff --git a/source/Makefile.Objects b/source/Makefile.Objects index 7a0ff0aadf..e7dae3ebf1 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -731,6 +731,7 @@ OBJS_TENSOR=tensor.o\ xc_kernel.o\ pot_hxc_lrtd.o\ lr_spectrum.o\ + lr_spectrum_velocity.o\ hamilt_casida.o\ esolver_lrtd_lcao.o\ diff --git a/source/module_basis/module_nao/two_center_bundle.h b/source/module_basis/module_nao/two_center_bundle.h index bc4f3bcea5..0fcd888293 100644 --- a/source/module_basis/module_nao/two_center_bundle.h +++ b/source/module_basis/module_nao/two_center_bundle.h @@ -12,6 +12,7 @@ class TwoCenterBundle public: TwoCenterBundle() = default; ~TwoCenterBundle() = default; + TwoCenterBundle& operator=(TwoCenterBundle&&) = default; // NOTE: some variables might be set only on RANK-0 void build_orb(int ntype, const std::string* file_orb0); diff --git a/source/module_io/read_input_item_tddft.cpp b/source/module_io/read_input_item_tddft.cpp index bfd0542729..236b15545b 100644 --- a/source/module_io/read_input_item_tddft.cpp +++ b/source/module_io/read_input_item_tddft.cpp @@ -360,6 +360,12 @@ void ReadInput::item_lr_tddft() sync_doublevec(input.abs_wavelen_range, 2, 0.0); this->add_item(item); } + { + Input_Item item("abs_gauge"); + item.annotation = "whether to use length or velocity gauge to calculate the absorption spectrum in LR-TDDFT"; + read_sync_string(input.abs_gauge); + this->add_item(item); + } { Input_Item item("abs_broadening"); item.annotation = "the broadening (eta) for LR-TDDFT absorption spectrum"; diff --git a/source/module_io/test/read_input_ptest.cpp b/source/module_io/test/read_input_ptest.cpp index 11acb41f43..5e02408361 100644 --- a/source/module_io/test/read_input_ptest.cpp +++ b/source/module_io/test/read_input_ptest.cpp @@ -431,6 +431,7 @@ TEST_F(InputParaTest, ParaRead) EXPECT_EQ(param.inp.abs_wavelen_range.size(), 2); EXPECT_DOUBLE_EQ(param.inp.abs_wavelen_range[0], 0.0); EXPECT_DOUBLE_EQ(param.inp.abs_broadening, 0.01); + EXPECT_EQ(param.inp.abs_gauge, "length"); EXPECT_EQ(param.inp.rdmft, 0); EXPECT_DOUBLE_EQ(param.inp.rdmft_power_alpha, 0.656); } diff --git a/source/module_lr/CMakeLists.txt b/source/module_lr/CMakeLists.txt index a672e05c92..3459ca8d3a 100644 --- a/source/module_lr/CMakeLists.txt +++ b/source/module_lr/CMakeLists.txt @@ -16,6 +16,7 @@ if(ENABLE_LCAO) operator_casida/operator_lr_exx.cpp potentials/pot_hxc_lrtd.cpp lr_spectrum.cpp + lr_spectrum_velocity.cpp hamilt_casida.cpp esolver_lrtd_lcao.cpp potentials/xc_kernel.cpp) diff --git a/source/module_lr/esolver_lrtd_lcao.cpp b/source/module_lr/esolver_lrtd_lcao.cpp index 38fb300594..8c00ef2fdd 100644 --- a/source/module_lr/esolver_lrtd_lcao.cpp +++ b/source/module_lr/esolver_lrtd_lcao.cpp @@ -62,6 +62,21 @@ inline int cal_nupdown_form_occ(const ModuleBase::matrix& wg) return nupdown; } +inline void setup_2center_table(TwoCenterBundle& two_center_bundle, LCAO_Orbitals& orb, UnitCell& ucell) +{ + // set up 2-center table +#ifdef USE_NEW_TWO_CENTER + two_center_bundle.tabulate(); +#else + two_center_bundle.tabulate(inp.lcao_ecut, inp.lcao_dk, inp.lcao_dr, inp.lcao_rmax); +#endif + if (PARAM.inp.vnl_in_h) + { + ucell.infoNL.setupNonlocal(ucell.ntype, ucell.atoms, GlobalV::ofs_running, orb); + two_center_bundle.build_beta(ucell.ntype, ucell.infoNL.Beta); + } +} + template void LR::ESolver_LR::parameter_check()const { @@ -149,8 +164,7 @@ LR::ESolver_LR::ESolver_LR(ModuleESolver::ESolver_KS_LCAO&& ks_sol this->gd = std::move(ks_sol.gd); // xc kernel - this->xc_kernel = inp.xc_kernel; - std::transform(xc_kernel.begin(), xc_kernel.end(), xc_kernel.begin(), tolower); + this->xc_kernel = LR_Util::tolower(inp.xc_kernel); //kv this->kv = std::move(ks_sol.kv); @@ -218,8 +232,7 @@ LR::ESolver_LR::ESolver_LR(ModuleESolver::ESolver_KS_LCAO&& ks_sol if (xc_kernel == "hf" || xc_kernel == "hse") { // if the same kernel is calculated in the esolver_ks, move it - std::string dft_functional = input.dft_functional; - std::transform(dft_functional.begin(), dft_functional.end(), dft_functional.begin(), tolower); + std::string dft_functional = LR_Util::tolower(input.dft_functional); if (ks_sol.exx_lri_double && std::is_same::value && xc_kernel == dft_functional) { this->move_exx_lri(ks_sol.exx_lri_double); } else if (ks_sol.exx_lri_complex && std::is_same>::value && xc_kernel == dft_functional) { @@ -237,6 +250,10 @@ LR::ESolver_LR::ESolver_LR(ModuleESolver::ESolver_KS_LCAO&& ks_sol #endif this->pelec = new elecstate::ElecStateLCAO(); orb_cutoff_ = ks_sol.orb_.cutoffs(); + if (LR_Util::tolower(input.abs_gauge) == "velocity") + { + this->two_center_bundle_ = std::move(ks_sol.two_center_bundle_); + } } template @@ -247,8 +264,7 @@ LR::ESolver_LR::ESolver_LR(const Input_para& inp, UnitCell& ucell) : inpu { ModuleBase::TITLE("ESolver_LR", "ESolver_LR(from scratch)"); // xc kernel - this->xc_kernel = inp.xc_kernel; - std::transform(xc_kernel.begin(), xc_kernel.end(), xc_kernel.begin(), tolower); + this->xc_kernel = LR_Util::tolower(inp.xc_kernel); // necessary steps in ESolver_FP ESolver_FP::before_all_runners(ucell, inp); @@ -272,6 +288,10 @@ LR::ESolver_LR::ESolver_LR(const Input_para& inp, UnitCell& ucell) : inpu LCAO_Orbitals orb; two_center_bundle_.to_LCAO_Orbitals(orb, inp.lcao_ecut, inp.lcao_dk, inp.lcao_dr, inp.lcao_rmax); orb_cutoff_ = orb.cutoffs(); + if (LR_Util::tolower(input.abs_gauge) == "velocity") + { + setup_2center_table(this->two_center_bundle_, orb, ucell); + } this->set_dimension(); // setup 2d-block distribution for AO-matrix and KS wfc @@ -320,7 +340,6 @@ LR::ESolver_LR::ESolver_LR(const Input_para& inp, UnitCell& ucell) : inpu this->init_pot(chg_gs); // search adjacent atoms and init Gint - std::cout << "ucell.infoNL.get_rcutmax_Beta(): " << ucell.infoNL.get_rcutmax_Beta() << std::endl; double search_radius = -1.0; search_radius = atom_arrange::set_sr_NL(GlobalV::ofs_running, PARAM.inp.out_level, @@ -539,26 +558,21 @@ void LR::ESolver_LR::after_all_runners(UnitCell& ucell) auto spin_types = (nspin == 2 && !openshell) ? std::vector({ "singlet", "triplet" }) : std::vector({ "updown" }); for (int is = 0;is < this->X.size();++is) { - LR_Spectrum spectrum(nspin, - this->nbasis, - this->nocc, - this->nvirt, - this->gint_, - *this->pw_rho, - *this->psi_ks, - this->ucell, - this->kv, - this->gd, - this->orb_cutoff_, - this->paraX_, - this->paraC_, - this->paraMat_, - &this->pelec->ekb.c[is * nstates], - this->X[is].template data(), - nstates, - openshell); + LR_Spectrum spectrum(nspin, this->nbasis, this->nocc, this->nvirt, this->gint_, *this->pw_rho, *this->psi_ks, + this->ucell, this->kv, this->gd, this->orb_cutoff_, this->two_center_bundle_, + this->paraX_, this->paraC_, this->paraMat_, + &this->pelec->ekb.c[is * nstates], this->X[is].template data(), nstates, openshell, + LR_Util::tolower(input.abs_gauge)); spectrum.transition_analysis(spin_types[is]); - spectrum.optical_absorption(freq, input.abs_broadening, spin_types[is]); + if (spin_types[is] != "triplet") // triplets has no transition dipole and no contribution to the spectrum + { + spectrum.optical_absorption_method1(freq, input.abs_broadening); + // =============================================== for test ==================================================== + // spectrum.optical_absorption_method2(freq, input.abs_broadening, spin_types[is]); + // spectrum.test_transition_dipoles_velocity_ks(eig_ks.c); + // spectrum.write_transition_dipole(PARAM.globalv.global_out_dir + "dipole_velocity_ks.dat"); + // =============================================== for test ==================================================== + } } } diff --git a/source/module_lr/lr_spectrum.cpp b/source/module_lr/lr_spectrum.cpp index 3a919e9dc7..c6db92c67b 100644 --- a/source/module_lr/lr_spectrum.cpp +++ b/source/module_lr/lr_spectrum.cpp @@ -6,6 +6,34 @@ #include "module_lr/utils/lr_util.h" #include "module_lr/utils/lr_util_hcontainer.h" #include "module_lr/utils/lr_util_print.h" + +template +elecstate::DensityMatrix LR::LR_Spectrum::cal_transition_density_matrix(const int istate, const T* X_in, const bool need_R) +{ + const T* const X = X_in == nullptr ? this->X : X_in; + const int offset_b = istate * ldim; //start index of band istate + elecstate::DensityMatrix DM_trans(&this->pmat, this->nspin_x, this->kv.kvec_d, this->nk); + for (int is = 0;is < this->nspin_x; ++is) + { + const int offset_x = offset_b + is * nk * this->pX[0].get_local_size(); + //1. transition density +#ifdef __MPI + std::vector dm_trans_2d = cal_dm_trans_pblas(X + offset_x, this->pX[is], psi_ks[is], this->pc, this->naos, this->nocc[is], this->nvirt[is], this->pmat); + // if (this->tdm_sym) for (auto& t : dm_trans_2d) LR_Util::matsym(t.data(), naos, pmat); +#else + std::vector dm_trans_2d = cal_dm_trans_blas(X + offset_x, this->psi_ks[is], this->nocc[is], this->nvirt[is]); + // if (this->tdm_sym) for (auto& t : dm_trans_2d) LR_Util::matsym(t.data(), naos); +#endif + for (int ik = 0;ik < this->nk;++ik) { DM_trans.set_DMK_pointer(ik + is * nk, dm_trans_2d[ik].data()); } + } + if (need_R) + { + LR_Util::initialize_DMR(DM_trans, this->pmat, this->ucell, this->gd_, this->orb_cutoff_); + DM_trans.cal_DMR(); + } + return DM_trans; +} + template void LR::LR_Spectrum::cal_gint_rho(double** rho, const int& nrxx) { @@ -23,154 +51,158 @@ inline void check_sum_rule(const double& osc_tot) } } -template <> -void LR::LR_Spectrum::oscillator_strength(const Grid_Driver& gd, const std::vector& orb_cutoff) +template<> +ModuleBase::Vector3 LR::LR_Spectrum::cal_transition_dipole_istate_length(const int istate) { - ModuleBase::TITLE("LR::LR_Spectrum", "oscillator_strength"); - std::vector& osc = this->oscillator_strength_; // unit: Ry - osc.resize(nstate, 0.0); - double osc_tot = 0.0; - elecstate::DensityMatrix DM_trans(&this->pmat, 1, this->kv.kvec_d, this->nk); - LR_Util::initialize_DMR(DM_trans, this->pmat, this->ucell, gd, orb_cutoff); - this->transition_dipole_.resize(nstate, ModuleBase::Vector3(0.0, 0.0, 0.0)); - for (int istate = 0;istate < nstate;++istate) + ModuleBase::Vector3 trans_dipole(0.0, 0.0, 0.0); + // 1. transition density matrix + const elecstate::DensityMatrix& DM_trans = this->cal_transition_density_matrix(istate); + for (int is = 0;is < this->nspin_x;++is) { - const int offset_b = istate * ldim; //start index of band istate - for (int is = 0;is < this->nspin_x;++is) + this->gint->transfer_DM2DtoGrid({ DM_trans.get_DMR_vector().at(is) }); + + // 2. transition density + double** rho_trans; + LR_Util::_allocate_2order_nested_ptr(rho_trans, 1, this->rho_basis.nrxx); + this->cal_gint_rho(rho_trans, this->rho_basis.nrxx); + + // 3. transition dipole moment + for (int ir = 0; ir < rho_basis.nrxx; ++ir) { - const int offset_x = offset_b + is * nk * pX[0].get_local_size(); - //1. transition density -#ifdef __MPI - std::vector dm_trans_2d = cal_dm_trans_pblas(X + offset_x, this->pX[is], psi_ks[is], this->pc, this->naos, this->nocc[is], this->nvirt[is], this->pmat); - // if (this->tdm_sym) for (auto& t : dm_trans_2d) LR_Util::matsym(t.data(), naos, pmat); -#else - std::vector dm_trans_2d = cal_dm_trans_blas(X + offset_x, this->psi_ks[is], this->nocc[is], this->nvirt[is]); - // if (this->tdm_sym) for (auto& t : dm_trans_2d) LR_Util::matsym(t.data(), naos); -#endif - for (int ik = 0;ik < this->nk;++ik) { DM_trans.set_DMK_pointer(ik, dm_trans_2d[ik].data()); } - DM_trans.cal_DMR(); - this->gint->transfer_DM2DtoGrid(DM_trans.get_DMR_vector()); + int i = ir / (rho_basis.ny * rho_basis.nplane); + int j = ir / rho_basis.nplane - i * rho_basis.ny; + int k = ir % rho_basis.nplane + rho_basis.startz_current; + ModuleBase::Vector3 rd(static_cast(i) / rho_basis.nx, static_cast(j) / rho_basis.ny, static_cast(k) / rho_basis.nz); //+1/2 better? + rd -= ModuleBase::Vector3(0.5, 0.5, 0.5); //shift to the center of the grid (need ?) + ModuleBase::Vector3 rc = rd * ucell.latvec * ucell.lat0; // real coordinate + trans_dipole += rc * rho_trans[0][ir]; + } + LR_Util::_deallocate_2order_nested_ptr(rho_trans, 1); + } + trans_dipole *= (ucell.omega / static_cast(gint->get_ncxyz())); // dv + trans_dipole *= static_cast(this->nk); // nk is divided inside DM_trans, now recover it + if (this->nspin_x == 1) { trans_dipole *= sqrt(2.0); } // *2 for 2 spins, /sqrt(2) for the halfed dimension of X in the normalizaiton + Parallel_Reduce::reduce_all(trans_dipole.x); + Parallel_Reduce::reduce_all(trans_dipole.y); + Parallel_Reduce::reduce_all(trans_dipole.z); + return trans_dipole; +} - // 2. transition density - double** rho_trans; - LR_Util::_allocate_2order_nested_ptr(rho_trans, 1, this->rho_basis.nrxx); - this->cal_gint_rho(rho_trans, this->rho_basis.nrxx); +template<> +ModuleBase::Vector3> LR::LR_Spectrum>::cal_transition_dipole_istate_length(const int istate) +{ - // 3. transition dipole moment - for (int ir = 0; ir < rho_basis.nrxx; ++ir) - { - int i = ir / (rho_basis.ny * rho_basis.nplane); - int j = ir / rho_basis.nplane - i * rho_basis.ny; - int k = ir % rho_basis.nplane + rho_basis.startz_current; - ModuleBase::Vector3 rd(static_cast(i) / rho_basis.nx, static_cast(j) / rho_basis.ny, static_cast(k) / rho_basis.nz); //+1/2 better? - rd -= ModuleBase::Vector3(0.5, 0.5, 0.5); //shift to the center of the grid (need ?) - ModuleBase::Vector3 rc = rd * ucell.latvec * ucell.lat0; // real coordinate - transition_dipole_[istate] += rc * rho_trans[0][ir]; - } - LR_Util::_deallocate_2order_nested_ptr(rho_trans, 1); + //1. transition density matrix + ModuleBase::Vector3> trans_dipole(0.0, 0.0, 0.0); + const elecstate::DensityMatrix, std::complex>& DM_trans = this->cal_transition_density_matrix(istate); + for (int is = 0;is < this->nspin_x;++is) + { + // 2. transition density + double** rho_trans_real; + double** rho_trans_imag; + LR_Util::_allocate_2order_nested_ptr(rho_trans_real, 1, this->rho_basis.nrxx); + LR_Util::_allocate_2order_nested_ptr(rho_trans_imag, 1, this->rho_basis.nrxx); + + elecstate::DensityMatrix, double> DM_trans_real_imag(&this->pmat, 1, this->kv.kvec_d, this->nk); + LR_Util::initialize_DMR(DM_trans_real_imag, this->pmat, this->ucell, this->gd_, this->orb_cutoff_); + + // real part + LR_Util::get_DMR_real_imag_part(DM_trans, DM_trans_real_imag, ucell.nat, 'R'); + this->gint->transfer_DM2DtoGrid(DM_trans_real_imag.get_DMR_vector()); + this->cal_gint_rho(rho_trans_real, this->rho_basis.nrxx); + // LR_Util::print_grid_nonzero(rho_trans_real[0], this->rho_basis.nrxx, 10, "rho_trans"); + + // imag part + LR_Util::get_DMR_real_imag_part(DM_trans, DM_trans_real_imag, ucell.nat, 'I'); + this->gint->transfer_DM2DtoGrid(DM_trans_real_imag.get_DMR_vector()); + this->cal_gint_rho(rho_trans_imag, this->rho_basis.nrxx); + // LR_Util::print_grid_nonzero(rho_trans_imag[0], this->rho_basis.nrxx, 10, "rho_trans"); + + // 3. transition dipole moment + for (int ir = 0; ir < rho_basis.nrxx; ++ir) + { + int i = ir / (rho_basis.ny * rho_basis.nplane); + int j = ir / rho_basis.nplane - i * rho_basis.ny; + int k = ir % rho_basis.nplane + rho_basis.startz_current; + ModuleBase::Vector3 rd(static_cast(i) / rho_basis.nx, static_cast(j) / rho_basis.ny, static_cast(k) / rho_basis.nz); //+1/2 better? + rd -= ModuleBase::Vector3(0.5, 0.5, 0.5); //shift to the center of the grid (need ?) + ModuleBase::Vector3 rc = rd * ucell.latvec * ucell.lat0; // real coordinate + ModuleBase::Vector3> rc_complex(rc.x, rc.y, rc.z); + trans_dipole += rc_complex * std::complex(rho_trans_real[0][ir], rho_trans_imag[0][ir]); } - transition_dipole_[istate] *= (ucell.omega / static_cast(gint->get_ncxyz())); // dv - Parallel_Reduce::reduce_all(transition_dipole_[istate].x); - Parallel_Reduce::reduce_all(transition_dipole_[istate].y); - Parallel_Reduce::reduce_all(transition_dipole_[istate].z); - osc[istate] = transition_dipole_[istate].norm2() * eig[istate] * 2. / 3.; - osc_tot += osc[istate] / 2.; //Ry to Hartree (1/2) + LR_Util::_deallocate_2order_nested_ptr(rho_trans_real, 1); + LR_Util::_deallocate_2order_nested_ptr(rho_trans_imag, 1); } - check_sum_rule(osc_tot); + trans_dipole *= (ucell.omega / static_cast(gint->get_ncxyz())); // dv + trans_dipole *= static_cast(this->nk); // nk is divided inside DM_trans, now recover it + if (this->nspin_x == 1) { trans_dipole *= sqrt(2.0); } // *2 for 2 spins, /sqrt(2) for the halfed dimension of X in the normalizaiton + Parallel_Reduce::reduce_all(trans_dipole.x); + Parallel_Reduce::reduce_all(trans_dipole.y); + Parallel_Reduce::reduce_all(trans_dipole.z); + return trans_dipole; } -template <> -void LR::LR_Spectrum>::oscillator_strength(const Grid_Driver& gd, - const std::vector& orb_cutoff) +template<> double LR::LR_Spectrum::cal_mean_squared_dipole(ModuleBase::Vector3 dipole) +{ + return dipole.norm2() / 3.; +} +template<> double LR::LR_Spectrum>::cal_mean_squared_dipole(ModuleBase::Vector3> dipole) +{ + return dipole.norm2().real() / 3.; +} + +template +void LR::LR_Spectrum::cal_transition_dipoles_length() +{ + transition_dipole_.resize(nstate); + this->mean_squared_transition_dipole_.resize(nstate); + for (int istate = 0;istate < nstate;++istate) + { + transition_dipole_[istate] = cal_transition_dipole_istate_length(istate); + mean_squared_transition_dipole_[istate] = cal_mean_squared_dipole(transition_dipole_[istate]); + } +} + +template +void LR::LR_Spectrum::oscillator_strength() { ModuleBase::TITLE("LR::LR_Spectrum", "oscillator_strength"); std::vector& osc = this->oscillator_strength_; // unit: Ry osc.resize(nstate, 0.0); double osc_tot = 0.0; - elecstate::DensityMatrix, std::complex> DM_trans(&this->pmat, 1, this->kv.kvec_d, this->nk); - LR_Util::initialize_DMR(DM_trans, this->pmat, this->ucell, gd, orb_cutoff); - elecstate::DensityMatrix, double> DM_trans_real_imag(&this->pmat, 1, this->kv.kvec_d, this->nk); - LR_Util::initialize_DMR(DM_trans_real_imag, this->pmat, this->ucell, gd, orb_cutoff); - - this->transition_dipole_.resize(nstate, ModuleBase::Vector3>(0.0, 0.0, 0.0)); for (int istate = 0;istate < nstate;++istate) { - const int offset_b = istate * ldim; //start index of band istate - for (int is = 0;is < this->nspin_x;++is) - { - const int offset_x = offset_b + is * nk * pX[0].get_local_size(); - //1. transition density -#ifdef __MPI - std::vector dm_trans_2d = cal_dm_trans_pblas(X + offset_x, this->pX[is], psi_ks[is], this->pc, this->naos, this->nocc[is], this->nvirt[is], this->pmat, /*renorm_k=*/false, 1); - // if (this->tdm_sym) for (auto& t : dm_trans_2d) LR_Util::matsym(t.data(), naos, pmat); -#else - std::vector dm_trans_2d = cal_dm_trans_blas(X + offset_x, psi_ks[is], this->nocc[is], this->nvirt[is],/*renorm_k=*/false, 1); - // if (this->tdm_sym) for (auto& t : dm_trans_2d) LR_Util::matsym(t.data(), naos); -#endif - for (int ik = 0;ik < this->nk;++ik) { DM_trans.set_DMK_pointer(ik, dm_trans_2d[ik].data>()); } - // for (int ik = 0;ik < this->nk;++ik) - // LR_Util::print_tensor>(dm_trans_2d[ik], "1.DMK[ik=" + std::to_string(ik) + "]", dynamic_cast(&this->pmat)); - DM_trans.cal_DMR(); - - // 2. transition density - double** rho_trans_real; - double** rho_trans_imag; - LR_Util::_allocate_2order_nested_ptr(rho_trans_real, 1, this->rho_basis.nrxx); - LR_Util::_allocate_2order_nested_ptr(rho_trans_imag, 1, this->rho_basis.nrxx); - // real part - LR_Util::get_DMR_real_imag_part(DM_trans, DM_trans_real_imag, ucell.nat, 'R'); - this->gint->transfer_DM2DtoGrid(DM_trans_real_imag.get_DMR_vector()); - this->cal_gint_rho(rho_trans_real, this->rho_basis.nrxx); - // LR_Util::print_grid_nonzero(rho_trans_real[0], this->rho_basis.nrxx, 10, "rho_trans"); - - // imag part - LR_Util::get_DMR_real_imag_part(DM_trans, DM_trans_real_imag, ucell.nat, 'I'); - this->gint->transfer_DM2DtoGrid(DM_trans_real_imag.get_DMR_vector()); - this->cal_gint_rho(rho_trans_imag, this->rho_basis.nrxx); - // LR_Util::print_grid_nonzero(rho_trans_imag[0], this->rho_basis.nrxx, 10, "rho_trans"); - - // 3. transition dipole moment - for (int ir = 0; ir < rho_basis.nrxx; ++ir) - { - int i = ir / (rho_basis.ny * rho_basis.nplane); - int j = ir / rho_basis.nplane - i * rho_basis.ny; - int k = ir % rho_basis.nplane + rho_basis.startz_current; - ModuleBase::Vector3 rd(static_cast(i) / rho_basis.nx, static_cast(j) / rho_basis.ny, static_cast(k) / rho_basis.nz); //+1/2 better? - rd -= ModuleBase::Vector3(0.5, 0.5, 0.5); //shift to the center of the grid (need ?) - ModuleBase::Vector3 rc = rd * ucell.latvec * ucell.lat0; // real coordinate - ModuleBase::Vector3> rc_complex(rc.x, rc.y, rc.z); - transition_dipole_[istate] += rc_complex * std::complex(rho_trans_real[0][ir], rho_trans_imag[0][ir]); - } - LR_Util::_deallocate_2order_nested_ptr(rho_trans_real, 1); - LR_Util::_deallocate_2order_nested_ptr(rho_trans_imag, 1); - } - transition_dipole_[istate] *= (ucell.omega / static_cast(gint->get_ncxyz())); // dv - Parallel_Reduce::reduce_all(transition_dipole_[istate].x); - Parallel_Reduce::reduce_all(transition_dipole_[istate].y); - Parallel_Reduce::reduce_all(transition_dipole_[istate].z); - auto norm2 = [](const ModuleBase::Vector3>& v) -> double - { - return v.x.real() * v.x.real() + v.y.real() * v.y.real() + v.z.real() * v.z.real() - + v.x.imag() * v.x.imag() + v.y.imag() * v.y.imag() + v.z.imag() * v.z.imag(); - }; - osc[istate] = norm2(transition_dipole_[istate]) * eig[istate] * 2. / 3.; - osc_tot += osc[istate] / 2.; // Ry to Hartree (1/2) + osc[istate] = this->mean_squared_transition_dipole_[istate] * this->eig[istate] * 2.; + osc_tot += osc[istate] / 2.; //Ry to Hartree (1/2) } check_sum_rule(osc_tot); } + template -void LR::LR_Spectrum::optical_absorption(const std::vector& freq, const double eta, const std::string& spintype) +void LR::LR_Spectrum::optical_absorption_method1(const std::vector& freq, const double eta) { + // ============test dipole================ + // this->cal_transition_dipoles_length(); + // this->write_transition_dipole(PARAM.globalv.global_out_dir + "dipole_length.dat"); + // this->cal_transition_dipoles_velocity(); + // this->write_transition_dipole(PARAM.globalv.global_out_dir + "dipole_velocity.dat"); + // exit(0); + // ============test dipole================ ModuleBase::TITLE("LR::LR_Spectrum", "optical_absorption"); + // 4*pi^2/V * mean_squared_dipole *delta(w-Omega_S) + // = -8*pi*Omega_S/V * mean_squared_dipole * Im[1/[(w+i\eta)^2-\Omega_S^2]] + // = -4*pi/V * oscilator_strength * Im[1/[(w+i\eta)^2-\Omega_S^2]] std::vector& osc = this->oscillator_strength_; - std::ofstream ofs(PARAM.globalv.global_out_dir + "absorption_" + spintype + ".dat"); + std::ofstream ofs(PARAM.globalv.global_out_dir + "absorption.dat"); if (GlobalV::MY_RANK == 0) { ofs << "Frequency (eV) | wave length(nm) | Absorption (a.u.)" << std::endl; } double FourPI_div_c = ModuleBase::FOUR_PI / 137.036; + double fac = 4 * M_PI / ucell.omega * ModuleBase::e2 / this->nk; // e2 for Ry to Hartree in the denominator for (int f = 0;f < freq.size();++f) { std::complex f_complex = std::complex(freq[f], eta); double abs = 0.0; - for (int i = 0;i < osc.size();++i) { abs += (osc[i] / (f_complex * f_complex - eig[i] * eig[i])).imag() * freq[f] * FourPI_div_c; } + // for (int i = 0;i < osc.size();++i) { abs += (osc[i] / (f_complex * f_complex - eig[i] * eig[i])).imag() * freq[f] * FourPI_div_c; } + for (int i = 0;i < osc.size();++i) { abs += (osc[i] / (f_complex * f_complex - eig[i] * eig[i])).imag() * fac; } if (GlobalV::MY_RANK == 0) { ofs << freq[f] * ModuleBase::Ry_to_eV << "\t" << 91.126664 / freq[f] << "\t" << std::abs(abs) << std::endl; } } ofs.close(); @@ -247,5 +279,21 @@ std::map LR::LR_Spectrum::get_pair_info(const int i) return { {"ispin", ispin}, {"ik", ik}, {"iocc", iocc}, {"ivirt", ivirt} }; } +template +void LR::LR_Spectrum::write_transition_dipole(const std::string& filename) +{ + std::ofstream ofs(filename); + ofs << "Transition dipole moment (a.u.)" << std::endl; + ofs << std::setw(20) << "State" << std::setw(20) << "x" << std::setw(20) << "y" << std::setw(20) << "z" << std::setw(20) << "average" << std::endl; + for (int istate = 0;istate < nstate;++istate) + { + ofs << std::setw(20) << istate << std::setw(20) << transition_dipole_[istate].x << std::setw(20) + << transition_dipole_[istate].y << std::setw(20) + << transition_dipole_[istate].z << std::setw(20) + << mean_squared_transition_dipole_[istate] << std::endl; + } + ofs.close(); +} + template class LR::LR_Spectrum; template class LR::LR_Spectrum>; \ No newline at end of file diff --git a/source/module_lr/lr_spectrum.h b/source/module_lr/lr_spectrum.h index 80e1326343..1ef65320a6 100644 --- a/source/module_lr/lr_spectrum.h +++ b/source/module_lr/lr_spectrum.h @@ -1,79 +1,92 @@ +#pragma once #include "module_cell/klist.h" #include "module_lr/utils/gint_template.h" #include "module_psi/psi.h" #include "module_elecstate/module_dm/density_matrix.h" #include "module_lr/utils/lr_util.h" - +#include "module_basis/module_nao/two_center_bundle.h" +#include "module_hamilt_lcao/module_tddft/td_current.h" namespace LR { template class LR_Spectrum { public: - LR_Spectrum(const int& nspin_global, - const int& naos, - const std::vector& nocc, - const std::vector& nvirt, - typename TGint::type* gint, - const ModulePW::PW_Basis& rho_basis, - psi::Psi& psi_ks_in, - const UnitCell& ucell, - const K_Vectors& kv_in, - const Grid_Driver& gd, - const std::vector& orb_cutoff, - const std::vector& pX_in, - const Parallel_2D& pc_in, - const Parallel_Orbitals& pmat_in, - const double* eig, - const T* X, - const int& nstate, - const bool& openshell) - : nspin_x(openshell ? 2 : 1), naos(naos), nocc(nocc), nvirt(nvirt), nk(kv_in.get_nks() / nspin_global), - gint(gint), rho_basis(rho_basis), ucell(ucell), kv(kv_in), pX(pX_in), pc(pc_in), pmat(pmat_in), eig(eig), - X(X), nstate(nstate), - ldim(nk - * (nspin_x == 2 ? pX_in[0].get_local_size() + pX_in[1].get_local_size() : pX_in[0].get_local_size())), - gdim(nk * std::inner_product(nocc.begin(), nocc.end(), nvirt.begin(), 0)) - { - for (int is = 0; is < nspin_global; ++is) - { - psi_ks.emplace_back(LR_Util::get_psi_spin(psi_ks_in, is, nk)); - } - this->oscillator_strength(gd, orb_cutoff); + LR_Spectrum(const int& nspin_global, const int& naos, const std::vector& nocc, const std::vector& nvirt, + typename TGint::type* gint, const ModulePW::PW_Basis& rho_basis, psi::Psi& psi_ks_in, + const UnitCell& ucell, const K_Vectors& kv_in, const Grid_Driver& gd, const std::vector& orb_cutoff, + const TwoCenterBundle& two_center_bundle_, + const std::vector& pX_in, const Parallel_2D& pc_in, const Parallel_Orbitals& pmat_in, + const double* eig, const T* X, const int& nstate, const bool& openshell, + const std::string& gauge = "length") : + nspin_x(openshell ? 2 : 1), naos(naos), nocc(nocc), nvirt(nvirt), nk(kv_in.get_nks() / nspin_global), + gint(gint), rho_basis(rho_basis), ucell(ucell), kv(kv_in), gd_(gd), + orb_cutoff_(orb_cutoff), two_center_bundle_(two_center_bundle_), + pX(pX_in), pc(pc_in), pmat(pmat_in), + eig(eig), X(X), nstate(nstate), + ldim(nk* (nspin_x == 2 ? pX_in[0].get_local_size() + pX_in[1].get_local_size() : pX_in[0].get_local_size())), + gdim(nk* std::inner_product(nocc.begin(), nocc.end(), nvirt.begin(), 0)) + { + for (int is = 0;is < nspin_global;++is) { psi_ks.emplace_back(LR_Util::get_psi_spin(psi_ks_in, is, nk)); } + gauge == "velocity" ? this->cal_transition_dipoles_velocity() : this->cal_transition_dipoles_length(); + this->oscillator_strength(); }; - /// @brief calculate the optical absorption spectrum - void optical_absorption(const std::vector& freq, const double eta, const std::string& spintype); + /// @brief calculate the optical absorption spectrum with $Im[1/[(w+i\eta)^2-\Omega_S^2]]$ + void optical_absorption_method1(const std::vector& freq, const double eta); + /// @brief calculate the optical absorption spectrum with lorentzian delta function + void optical_absorption_method2(const std::vector& freq, const double eta); /// @brief print out the transition dipole moment and the main contributions to the transition amplitude void transition_analysis(const std::string& spintype); + + //========================================== test functions ============================================== + /// @brief write transition dipole + void write_transition_dipole(const std::string& filename); + /// @brief calculate transition dipole in velocity gauge using ks eigenvalues instead of excitation energies + void test_transition_dipoles_velocity_ks(const double* const ks_eig); + //====================================================================================================== private: /// $$2/3\Omega\sum_{ia\sigma} |\braket{\psi_{i}|\mathbf{r}|\psi_{a}} |^2\int \rho_{\alpha\beta}(\mathbf{r}) \mathbf{r} d\mathbf{r}$$ - void oscillator_strength(const Grid_Driver& gd, const std::vector& orb_cutoff); - const int nspin_x = 1; ///< 1 for singlet/triplet, 2 for updown(openshell) - const int naos = 1; - const std::vector& nocc; - const std::vector& nvirt; - const int nk = 1; - const int nstate = 1; - const int ldim = 1; ///< local leading dimension of X, or the data size of each state - const int gdim = 1; ///< global leading dimension of X - const double ana_thr = 0.3; ///< {abs(X) > thr} will appear in the transition analysis log - const double* eig; - const T* X; - const K_Vectors& kv; - std::vector> psi_ks; - const std::vector& pX; - const Parallel_2D& pc; - const Parallel_Orbitals& pmat; - typename TGint::type* gint = nullptr; - const ModulePW::PW_Basis& rho_basis; - const UnitCell& ucell; + void oscillator_strength(); + /// calculate the transition dipole of state S in length gauge: $\sum_{iak}X^S_{iak}$ + ModuleBase::Vector3 cal_transition_dipole_istate_length(const int istate); + /// calculate the transition dipole of all states in length gauge + void cal_transition_dipoles_length(); + /// calculate the transition dipole of state S in velocity gauge: $i(\sum_{iak}X^S_{iak})/\Omega_S$ + ModuleBase::Vector3 cal_transition_dipole_istate_velocity_R(const int istate, const TD_current& vR); + ModuleBase::Vector3 cal_transition_dipole_istate_velocity_k(const int istate, const TD_current& vR); + /// calculate the transition dipole of all states in velocity gauge + void cal_transition_dipoles_velocity(); + double cal_mean_squared_dipole(ModuleBase::Vector3 dipole); + /// calculate the transition density matrix + elecstate::DensityMatrix cal_transition_density_matrix(const int istate, const T* X_in = nullptr, const bool need_R = true); + const int nspin_x = 1; ///< 1 for singlet/triplet, 2 for updown(openshell) + const int naos = 1; + const std::vector& nocc; + const std::vector& nvirt; + const int nk = 1; + const int nstate = 1; + const int ldim = 1;///< local leading dimension of X, or the data size of each state + const int gdim = 1;///< global leading dimension of X + const double ana_thr = 0.3; ///< {abs(X) > thr} will appear in the transition analysis log + const double* eig; + const T* X; + const K_Vectors& kv; + std::vector> psi_ks; + const std::vector& pX; + const Parallel_2D& pc; + const Parallel_Orbitals& pmat; + typename TGint::type* gint = nullptr; + const ModulePW::PW_Basis& rho_basis; + const Grid_Driver& gd_; + const UnitCell& ucell; + const std::vector& orb_cutoff_; + const TwoCenterBundle& two_center_bundle_; - void cal_gint_rho(double** rho, const int& nrxx); - std::map get_pair_info( - const int i); ///< given the index in X, return its ispin, ik, iocc, ivirt + void cal_gint_rho(double** rho, const int& nrxx); + std::map get_pair_info(const int i); ///< given the index in X, return its ispin, ik, iocc, ivirt - std::vector> transition_dipole_; ///< $\braket{ \psi_{i} | \mathbf{r} | \psi_{a} }$ - std::vector - oscillator_strength_; ///< $2/3\Omega |\sum_{ia\sigma} \braket{\psi_{i}|\mathbf{r}|\psi_{a}} |^2$ + std::vector> transition_dipole_; ///< $\braket{ \psi_{i} | \mathbf{r} | \psi_{a} }$ + std::vector mean_squared_transition_dipole_; /// $|dipole|^2/3$, atomic unit (Hartree) + std::vector oscillator_strength_;///< $2/3\Omega |\sum_{ia\sigma} \braket{\psi_{i}|\mathbf{r}|\psi_{a}} |^2$, atomic unit (Hartree) }; } diff --git a/source/module_lr/lr_spectrum_velocity.cpp b/source/module_lr/lr_spectrum_velocity.cpp new file mode 100644 index 0000000000..5a6927f74d --- /dev/null +++ b/source/module_lr/lr_spectrum_velocity.cpp @@ -0,0 +1,181 @@ +#include "lr_spectrum.h" +#include "module_lr/dm_trans/dm_trans.h" +#include "module_lr/utils/lr_util_hcontainer.h" +#include "math.h" +#include "module_parameter/parameter.h" +#include "module_hamilt_lcao/module_hcontainer/hcontainer_funcs.h" +namespace LR +{ + /// get the velocity matrix v(R) + inline TD_current get_velocity_matrix_R(const UnitCell& ucell, + const Grid_Driver& gd, + const Parallel_Orbitals& pmat, + const TwoCenterBundle& two_center_bundle) + { + // convert the orbital object to the old class for TD_current + LCAO_Orbitals orb; + const auto& inp = PARAM.inp; + two_center_bundle.to_LCAO_Orbitals(orb, inp.lcao_ecut, inp.lcao_dk, inp.lcao_dr, inp.lcao_rmax); + // actually this class calculates the velocity matrix v(R) at A=0 + TD_current vR(&ucell, &gd, &pmat, orb, two_center_bundle.overlap_orb.get()); + vR.calculate_vcomm_r(); // $<\mu, 0|[Vnl, r]|\nu, R>$ + vR.calculate_grad_term(); // $<\mu, 0|\nabla|\nu, R>$ + return vR; + } + + inline double lorentz_delta(const double freq_diff, const double eta) + { + return eta / (freq_diff * freq_diff + eta * eta) / M_PI; + } + + template inline ModuleBase::Vector3 convert_vector_to_vector3(const std::vector>& vec); + template<> inline ModuleBase::Vector3 convert_vector_to_vector3(const std::vector>& vec) + { + assert(vec.size() == 3); + return ModuleBase::Vector3(vec[0].real(), vec[1].real(), vec[2].real()); + } + template<> inline ModuleBase::Vector3> convert_vector_to_vector3(const std::vector>& vec) + { + assert(vec.size() == 3); + return ModuleBase::Vector3>(vec[0], vec[1], vec[2]); + } + + /// this algorithm has bug in multi-k cases, just for test + template + ModuleBase::Vector3 LR::LR_Spectrum::cal_transition_dipole_istate_velocity_R(const int istate, const TD_current& vR) + { + // transition density matrix D(R) + const elecstate::DensityMatrix& DM_trans = this->cal_transition_density_matrix(istate); + + std::vector> trans_dipole(3, 0.0); // $=\sum_{uvR} v(R) D(R) = \sum_{iak}X_{iak}$ + const std::complex fac = ModuleBase::IMAG_UNIT / (eig[istate] / ModuleBase::e2); // eV to Hartree + for (int i = 0; i < 3; i++) + { + for (int is = 0;is < this->nspin_x; ++is) + { + trans_dipole[i] += LR_Util::dot_R_matrix(*vR.get_current_term_pointer(i), *DM_trans.get_DMR_pointer(is + 1), ucell.nat) * fac; + } // end for spin_x, only matter in open-shell system + trans_dipole[i] *= static_cast(this->nk); // nk is divided inside DM_trans, now recover it + if (this->nspin_x == 1) { trans_dipole[i] *= sqrt(2.0); } // *2 for 2 spins, /sqrt(2) for the halfed dimension of X in the normalizaiton + Parallel_Reduce::reduce_all(trans_dipole[i]); + } // end for direction + return convert_vector_to_vector3(trans_dipole); + } + + // this algorithm is actually in use + template + ModuleBase::Vector3 LR::LR_Spectrum::cal_transition_dipole_istate_velocity_k(const int istate, const TD_current& vR) + { + // transition density matrix D(R) + const elecstate::DensityMatrix& DM_trans = this->cal_transition_density_matrix(istate, this->X, false); + + std::vector> trans_dipole(3, 0.0); // $=\sum_{uvR} v(R) D(R) = \sum_{iak}X_{iak}$ + const std::complex fac = ModuleBase::IMAG_UNIT / (eig[istate] / ModuleBase::e2); // eV to Hartree + for (int i = 0; i < 3; i++) + { + for (int is = 0;is < this->nspin_x;++is) + { + for (int ik = 0;ik < nk;++ik) + { + std::vector> vk(pmat.get_local_size(), 0.0); + hamilt::folding_HR(*vR.get_current_term_pointer(i), vk.data(), kv.kvec_d[ik], pmat.get_row_size(), 1); + trans_dipole[i] += std::inner_product(vk.begin(), vk.end(), DM_trans.get_DMK_pointer(is * nk + ik), std::complex(0., 0.)) * fac; + } + } // end for spin_x, only matter in open-shell system + trans_dipole[i] *= static_cast(this->nk); // nk is divided inside DM_trans, now recover it + if (this->nspin_x == 1) { trans_dipole[i] *= sqrt(2.0); } // *2 for 2 spins, /sqrt(2) for the halfed dimension of X in the normalizaiton + Parallel_Reduce::reduce_all(trans_dipole[i]); + } // end for direction + return convert_vector_to_vector3(trans_dipole); + } + + template + void LR::LR_Spectrum::cal_transition_dipoles_velocity() + { + const TD_current& vR = get_velocity_matrix_R(ucell, gd_, pmat, two_center_bundle_); // velocity matrix v(R) + transition_dipole_.resize(nstate); + this->mean_squared_transition_dipole_.resize(nstate); + for (int istate = 0;istate < nstate;++istate) + { + transition_dipole_[istate] = cal_transition_dipole_istate_velocity_k(istate, vR); + mean_squared_transition_dipole_[istate] = cal_mean_squared_dipole(transition_dipole_[istate]); + } + } + + template + void LR::LR_Spectrum::optical_absorption_method2(const std::vector& freq, const double eta) + { + ModuleBase::TITLE("LR::LR_Spectrum", "optical_absorption_velocity"); + // 4*pi^2/V * mean_squared_dipole *delta(w-Omega_S) + std::ofstream ofs(PARAM.globalv.global_out_dir + "absorption.dat"); + if (GlobalV::MY_RANK == 0) { ofs << "Frequency (eV) | wave length(nm) | Absorption (a.u.)" << std::endl; } + const double fac = 4 * M_PI * M_PI / ucell.omega * ModuleBase::e2 / this->nk; // e2: Ry to Hartree in the denominator + for (int f = 0;f < freq.size();++f) + { + double abs_value = 0.0; + for (int i = 0;i < nstate;++i) + { + abs_value += this->mean_squared_transition_dipole_[i] * lorentz_delta((freq[f] - eig[i]), eta); + } + abs_value *= fac; + if (GlobalV::MY_RANK == 0) { ofs << freq[f] * ModuleBase::Ry_to_eV << "\t" << 91.126664 / freq[f] << "\t" << abs_value << std::endl; } + } + } + + inline void cal_eig_ks_diff(double* const eig_ks_diff, const double* const eig_ks, const Parallel_2D& px, const int nk, const int nocc, const int nvirt) + { + for (int ik = 0;ik < nk;++ik) + { + const int& start_k = ik * (nocc + nvirt); + for (int io = 0;io < px.get_col_size();++io) //nocc_local + { + for (int iv = 0;iv < px.get_row_size();++iv) //nvirt_local + { + int io_g = px.local2global_col(io); + int iv_g = px.local2global_row(iv); + eig_ks_diff[ik * px.get_local_size() + io * px.get_row_size() + iv] = (eig_ks[start_k + nocc + iv_g] - eig_ks[start_k + io_g]) / ModuleBase::e2; // eV to Hartree + } + } + } + } + + template + void LR::LR_Spectrum::test_transition_dipoles_velocity_ks(const double* const ks_eig) + { + // velocity matrix v(R) + const TD_current& vR = get_velocity_matrix_R(ucell, gd_, pmat, two_center_bundle_); + // (e_c-e_v) of KS eigenvalues + std::vector eig_ks_diff(this->ldim); + for (int is = 0;is < this->nspin_x;++is) + { + cal_eig_ks_diff(eig_ks_diff.data() + is * nk * pX[0].get_local_size(), ks_eig, pX[is], nk, nocc[is], nvirt[is]); + } + // X/(ec-ev) + std::vector X_div_ks_eig(nstate * this->ldim); + for (int istate = 0;istate < nstate;++istate) + { + const int st = istate * this->ldim; + std::transform(X + st, X + st + ldim, eig_ks_diff.begin(), X_div_ks_eig.data() + st, std::divides()); + } + + this->transition_dipole_.resize(nstate); + this->mean_squared_transition_dipole_.resize(nstate); + for (int istate = 0;istate < nstate;++istate) + { + // transition density matrix D(R) + const elecstate::DensityMatrix& DM_trans = this->cal_transition_density_matrix(istate, X_div_ks_eig.data()); + std::vector> tmp_trans_dipole(3, 0.0); + for (int i = 0; i < 3; i++) + { + for (int is = 0;is < this->nspin_x; ++is) + { + tmp_trans_dipole[i] += LR_Util::dot_R_matrix(*vR.get_current_term_pointer(i), *DM_trans.get_DMR_pointer(is + 1), ucell.nat) * ModuleBase::IMAG_UNIT; + } // end for spin_x, only matter in open-shell system + } // end for direction + this->transition_dipole_[istate] = convert_vector_to_vector3(tmp_trans_dipole); + this->mean_squared_transition_dipole_[istate] = cal_mean_squared_dipole(transition_dipole_[istate]); + } + } +} +template class LR::LR_Spectrum; +template class LR::LR_Spectrum>; \ No newline at end of file diff --git a/source/module_lr/utils/lr_util.cpp b/source/module_lr/utils/lr_util.cpp index 1418764126..ceb9501e0a 100644 --- a/source/module_lr/utils/lr_util.cpp +++ b/source/module_lr/utils/lr_util.cpp @@ -179,4 +179,17 @@ namespace LR_Util vl.data(), &ldvl, vr.data(), &ldvr, work2.data(), &lwork, rwork.data(), &info); if (info) { std::cout << "ERROR: Lapack solver zgeev, info=" << info << std::endl; } } + + std::string tolower(const std::string& str) + { + std::string str_lower = str; + std::transform(str_lower.begin(), str_lower.end(), str_lower.begin(), ::tolower); + return str_lower; + } + std::string toupper(const std::string& str) + { + std::string str_upper = str; + std::transform(str_upper.begin(), str_upper.end(), str_upper.begin(), ::toupper); + return str_upper; + } } \ No newline at end of file diff --git a/source/module_lr/utils/lr_util.h b/source/module_lr/utils/lr_util.h index 9e5ec32d91..3dafe2dd0a 100644 --- a/source/module_lr/utils/lr_util.h +++ b/source/module_lr/utils/lr_util.h @@ -103,5 +103,9 @@ namespace LR_Util /// @brief diagonalize a general matrix void diag_lapack_nh(const int& n, double* mat, std::complex* eig); void diag_lapack_nh(const int& n, std::complex* mat, std::complex* eig); + + ///=================string option==================== + std::string tolower(const std::string& str); + std::string toupper(const std::string& str); } #include "lr_util.hpp" diff --git a/source/module_lr/utils/lr_util_hcontainer.h b/source/module_lr/utils/lr_util_hcontainer.h index 715e0dad8b..8937d9d733 100644 --- a/source/module_lr/utils/lr_util_hcontainer.h +++ b/source/module_lr/utils/lr_util_hcontainer.h @@ -1,5 +1,7 @@ #pragma once #include "module_elecstate/module_dm/density_matrix.h" +#include +#include "module_base/parallel_reduce.h" namespace LR_Util { template @@ -86,4 +88,33 @@ namespace LR_Util initialize_HR(hR_tmp, ucell, gd, orb_cutoff); dm.init_DMR(hR_tmp); } + + /// $\sum_{uvR} H1_{uv}(R) H2_{uv}(R)$ + template + TR1 dot_R_matrix(const hamilt::HContainer& h1, const hamilt::HContainer& h2, const int& nat) + { + const auto& pmat = *h1.get_paraV(); + TR1 sum = 0; + // in case of the different order of atom pair and R-index in h1 and h2, we search by value instead of index + for (int iat1 = 0;iat1 < nat;++iat1) + { + for (int iat2 = 0;iat2 < nat;++iat2) + { + auto ap1 = h1.find_pair(iat1, iat2); + if (!ap1) { continue; } + auto ap2 = h2.find_pair(iat1, iat2); + assert(ap2); + for (int iR = 0;iR < ap1->get_R_size();++iR) + { + const ModuleBase::Vector3& R = ap1->get_R_index(iR); + auto mat1 = ap1->get_HR_values(R.x, R.y, R.z); + auto mat2 = ap2->get_HR_values(R.x, R.y, R.z); + sum += std::inner_product(mat1.get_pointer(), mat1.get_pointer() + mat1.get_memory_size(), mat2.get_pointer(), (TR1)0.0); + } + } + } + Parallel_Reduce::reduce_all(sum); + return sum; + } + } \ No newline at end of file diff --git a/source/module_parameter/input_parameter.h b/source/module_parameter/input_parameter.h index 9b2151c945..75b2647f76 100644 --- a/source/module_parameter/input_parameter.h +++ b/source/module_parameter/input_parameter.h @@ -311,6 +311,7 @@ struct Input_para bool lr_unrestricted = false; ///< whether to use the unrestricted construction for LR-TDDFT std::vector abs_wavelen_range = {}; ///< the range of wavelength(nm) to output the absorption spectrum double abs_broadening = 0.01; ///< the broadening (eta) for LR-TDDFT absorption spectrum + std::string abs_gauge = "length"; ///< whether to use length or velocity gauge to calculate the absorption spectrum in LR-TDDFT std::string ri_hartree_benchmark = "none"; ///< whether to use the RI approximation for the Hartree potential in LR-TDDFT for benchmark (with FHI-aims/ABACUS read-in style) std::vector aims_nbasis = {}; ///< the number of basis functions for each atom type used in FHI-aims (for benchmark) // ============== #Parameters (11.Output) =========================== From 28df43d6ae41fd3dbc5d05b793f167328a1a477b Mon Sep 17 00:00:00 2001 From: Erjie Wu <110683255+ErjieWu@users.noreply.github.com> Date: Thu, 26 Dec 2024 16:04:26 +0800 Subject: [PATCH 19/44] Refactor: Replace `nlm_save` in DeePKS by HContainer object `phialpha`. (#5766) * Add set_size() for BaseMatrix. * Refactor: replace nlm_save and nlm_save_k in DeePKS by psialpha. * Add cal_stress value check for deepks_out_unittest. * Modify the integrate test result.ref to reasonable results. * Change contributeHR in deepks_lcao into template. * Update functions used in deepks/test. * Change all 'psi' into 'phi' in DeePKS. * Update deepks_lcao.h --- docs/advanced/input_files/input-main.md | 2 +- source/Makefile.Objects | 5 +- source/module_esolver/lcao_before_scf.cpp | 10 +- source/module_esolver/lcao_others.cpp | 10 +- .../hamilt_lcaodft/FORCE_STRESS.cpp | 15 +- .../hamilt_lcaodft/FORCE_gamma.cpp | 118 +++--- .../hamilt_lcaodft/FORCE_k.cpp | 204 +++++----- .../operator_lcao/deepks_lcao.cpp | 78 +--- .../operator_lcao/deepks_lcao.h | 3 + .../module_deepks/CMakeLists.txt | 5 +- .../module_deepks/LCAO_deepks.cpp | 329 ++++++++------- .../module_deepks/LCAO_deepks.h | 110 +++-- .../module_deepks/LCAO_deepks_interface.cpp | 6 +- .../module_deepks/LCAO_deepks_io.cpp | 34 +- .../module_deepks/LCAO_deepks_io.h | 10 +- .../module_deepks/LCAO_deepks_pdm.cpp | 331 ++++++++------- .../module_deepks/LCAO_deepks_phialpha.cpp | 341 ++++++++++++++++ .../module_deepks/LCAO_deepks_psialpha.cpp | 279 ------------- .../module_deepks/LCAO_deepks_torch.cpp | 371 +++++++++-------- .../module_deepks/cal_gdmx.cpp | 332 ++++++++------- .../module_deepks/deepks_fgamma.cpp | 381 ------------------ .../module_deepks/deepks_fk.cpp | 277 ------------- .../module_deepks/deepks_force.cpp | 381 ++++++++++++++++++ .../module_deepks/deepks_force.h | 38 +- .../module_deepks/orbital_precalc.cpp | 185 ++++----- .../module_deepks/test/LCAO_deepks_test.cpp | 30 +- .../module_deepks/test/LCAO_deepks_test.h | 2 +- .../module_deepks/test/Makefile.Objects | 2 +- .../module_deepks/test/main_deepks.cpp | 2 +- .../module_deepks/v_delta_precalc.cpp | 266 ++++++------ .../module_hcontainer/atom_pair.cpp | 4 + .../module_hcontainer/base_matrix.cpp | 8 + .../module_hcontainer/base_matrix.h | 6 +- source/module_io/read_input_item_deepks.cpp | 6 +- .../602_NO_deepks_d_H2O_md_lda2pbe/result.ref | 14 +- .../result.ref | 12 +- .../603_NO_deepks_H2O_v_delta_2/result.ref | 2 +- tests/integrate/tools/catch_properties.sh | 4 +- 38 files changed, 1962 insertions(+), 2251 deletions(-) create mode 100644 source/module_hamilt_lcao/module_deepks/LCAO_deepks_phialpha.cpp delete mode 100644 source/module_hamilt_lcao/module_deepks/LCAO_deepks_psialpha.cpp delete mode 100644 source/module_hamilt_lcao/module_deepks/deepks_fgamma.cpp delete mode 100644 source/module_hamilt_lcao/module_deepks/deepks_fk.cpp create mode 100644 source/module_hamilt_lcao/module_deepks/deepks_force.cpp diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 09d6aff3f4..1e1cfc3ba3 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -2060,7 +2060,7 @@ Warning: this function is not robust enough for the current version. Please try - **Type**: int - **Availability**: numerical atomic orbital basis - **Description**: Include V_delta label for DeePKS training. When `deepks_out_labels` is true and `deepks_v_delta` > 0, ABACUS will output h_base.npy, v_delta.npy and h_tot.npy(h_tot=h_base+v_delta). - Meanwhile, when `deepks_v_delta` equals 1, ABACUS will also output v_delta_precalc.npy, which is used to calculate V_delta during DeePKS training. However, when the number of atoms grows, the size of v_delta_precalc.npy will be very large. In this case, it's recommended to set `deepks_v_delta` as 2, and ABACUS will output psialpha.npy and grad_evdm.npy but not v_delta_precalc.npy. These two files are small and can be used to calculate v_delta_precalc in the procedure of training DeePKS. + Meanwhile, when `deepks_v_delta` equals 1, ABACUS will also output v_delta_precalc.npy, which is used to calculate V_delta during DeePKS training. However, when the number of atoms grows, the size of v_delta_precalc.npy will be very large. In this case, it's recommended to set `deepks_v_delta` as 2, and ABACUS will output phialpha.npy and grad_evdm.npy but not v_delta_precalc.npy. These two files are small and can be used to calculate v_delta_precalc in the procedure of training DeePKS. - **Default**: 0 ### deepks_out_unittest diff --git a/source/Makefile.Objects b/source/Makefile.Objects index e7dae3ebf1..ae6a7bf00b 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -189,13 +189,12 @@ OBJS_CELL=atom_pseudo.o\ check_atomic_stru.o\ OBJS_DEEPKS=LCAO_deepks.o\ - deepks_fgamma.o\ - deepks_fk.o\ + deepks_force.o\ LCAO_deepks_odelta.o\ LCAO_deepks_io.o\ LCAO_deepks_mpi.o\ LCAO_deepks_pdm.o\ - LCAO_deepks_psialpha.o\ + LCAO_deepks_phialpha.o\ LCAO_deepks_torch.o\ LCAO_deepks_vdelta.o\ deepks_hmat.o\ diff --git a/source/module_esolver/lcao_before_scf.cpp b/source/module_esolver/lcao_before_scf.cpp index d51731bbde..8aad327da7 100644 --- a/source/module_esolver/lcao_before_scf.cpp +++ b/source/module_esolver/lcao_before_scf.cpp @@ -205,17 +205,19 @@ void ESolver_KS_LCAO::before_scf(UnitCell& ucell, const int istep) } #ifdef __DEEPKS - // for each ionic step, the overlap must be rebuilt + // for each ionic step, the overlap must be rebuilt // since it depends on ionic positions if (PARAM.globalv.deepks_setorb) { const Parallel_Orbitals* pv = &this->pv; - // build and save at beginning - GlobalC::ld.build_psialpha(PARAM.inp.cal_force, ucell, orb_, this->gd, *(two_center_bundle_.overlap_orb_alpha)); + // allocate , phialpha is different every ion step, so it is allocated here + GlobalC::ld.allocate_phialpha(PARAM.inp.cal_force, ucell, orb_, this->gd); + // build and save at beginning + GlobalC::ld.build_phialpha(PARAM.inp.cal_force, ucell, orb_, this->gd, *(two_center_bundle_.overlap_orb_alpha)); if (PARAM.inp.deepks_out_unittest) { - GlobalC::ld.check_psialpha(PARAM.inp.cal_force, ucell, orb_, this->gd); + GlobalC::ld.check_phialpha(PARAM.inp.cal_force, ucell, orb_, this->gd); } } #endif diff --git a/source/module_esolver/lcao_others.cpp b/source/module_esolver/lcao_others.cpp index fe27014192..3c8c0ff879 100644 --- a/source/module_esolver/lcao_others.cpp +++ b/source/module_esolver/lcao_others.cpp @@ -211,17 +211,19 @@ void ESolver_KS_LCAO::others(UnitCell& ucell, const int istep) } #ifdef __DEEPKS - // for each ionic step, the overlap must be rebuilt + // for each ionic step, the overlap must be rebuilt // since it depends on ionic positions if (PARAM.globalv.deepks_setorb) { const Parallel_Orbitals* pv = &this->pv; - // build and save at beginning - GlobalC::ld.build_psialpha(PARAM.inp.cal_force, ucell, orb_, this->gd, *(two_center_bundle_.overlap_orb_alpha)); + // allocate , phialpha is different every ion step, so it is allocated here + GlobalC::ld.allocate_phialpha(PARAM.inp.cal_force, ucell, orb_, this->gd); + // build and save at beginning + GlobalC::ld.build_phialpha(PARAM.inp.cal_force, ucell, orb_, this->gd, *(two_center_bundle_.overlap_orb_alpha)); if (PARAM.inp.deepks_out_unittest) { - GlobalC::ld.check_psialpha(PARAM.inp.cal_force, ucell, orb_, this->gd); + GlobalC::ld.check_phialpha(PARAM.inp.cal_force, ucell, orb_, this->gd); } } #endif diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp index 988999c777..cadf796b2c 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp @@ -12,12 +12,11 @@ #include "module_hamilt_general/module_surchem/surchem.h" //sunml add 2022-08-10 #include "module_hamilt_general/module_vdw/vdw.h" #include "module_parameter/parameter.h" -#ifdef __DEEPKS #include "module_elecstate/elecstate_lcao.h" +#ifdef __DEEPKS #include "module_hamilt_lcao/module_deepks/LCAO_deepks.h" //caoyu add for deepks 2021-06-03 #include "module_hamilt_lcao/module_deepks/LCAO_deepks_io.h" // mohan add 2024-07-22 #endif -#include "module_elecstate/elecstate_lcao.h" #include "module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dftu_lcao.h" #include "module_hamilt_lcao/hamilt_lcaodft/operator_lcao/dspin_lcao.h" #include "module_hamilt_lcao/hamilt_lcaodft/operator_lcao/nonlocal_new.h" @@ -511,7 +510,14 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, { const std::vector>& dm_gamma = dynamic_cast*>(pelec)->get_DM()->get_DMK_vector(); - GlobalC::ld.cal_gdmx(dm_gamma, ucell, orb, gd, kv.get_nks(), kv.kvec_d, isstress); + GlobalC::ld.cal_gdmx(dm_gamma, + ucell, + orb, + gd, + kv.get_nks(), + kv.kvec_d, + GlobalC::ld.phialpha, + isstress); } else { @@ -520,7 +526,8 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, ->get_DM() ->get_DMK_vector(); - GlobalC::ld.cal_gdmx(dm_k, ucell, orb, gd, kv.get_nks(), kv.kvec_d, isstress); + GlobalC::ld + .cal_gdmx(dm_k, ucell, orb, gd, kv.get_nks(), kv.kvec_d, GlobalC::ld.phialpha, isstress); } if (PARAM.inp.deepks_out_unittest) { diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp index 41b26e7e9f..e54d0b4d3f 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp @@ -1,10 +1,10 @@ #include "FORCE.h" #include "module_base/memory.h" -#include "module_parameter/parameter.h" #include "module_base/parallel_reduce.h" #include "module_base/timer.h" #include "module_cell/module_neighbor/sltk_grid_driver.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" +#include "module_parameter/parameter.h" #ifdef __DEEPKS #include "module_hamilt_lcao/module_deepks/LCAO_deepks.h" //caoyu add for deepks on 20210813 #include "module_hamilt_lcao/module_deepks/LCAO_deepks_io.h" @@ -12,8 +12,8 @@ #include "module_cell/module_neighbor/sltk_grid_driver.h" //GridD #include "module_elecstate/elecstate_lcao.h" #include "module_hamilt_lcao/hamilt_lcaodft/LCAO_domain.h" -#include "module_io/write_HS.h" #include "module_hamilt_lcao/hamilt_lcaodft/pulay_force_stress.h" +#include "module_io/write_HS.h" template <> void Force_LCAO::allocate(const UnitCell& ucell, @@ -147,28 +147,28 @@ void Force_LCAO::finish_ftable(ForceStressArrays& fsr) return; } -//template <> -//void Force_LCAO::test(Parallel_Orbitals& pv, double* mm, const std::string& name) +// template <> +// void Force_LCAO::test(Parallel_Orbitals& pv, double* mm, const std::string& name) //{ -// std::cout << "\n PRINT " << name << std::endl; -// std::cout << std::setprecision(6) << std::endl; -// for (int i = 0; i < PARAM.globalv.nlocal; i++) -// { -// for (int j = 0; j < PARAM.globalv.nlocal; j++) -// { -// if (std::abs(mm[i * PARAM.globalv.nlocal + j]) > 1.0e-5) -// { -// std::cout << std::setw(12) << mm[i * PARAM.globalv.nlocal + j]; -// } -// else -// { -// std::cout << std::setw(12) << "0"; -// } -// } -// std::cout << std::endl; -// } -// return; -//} +// std::cout << "\n PRINT " << name << std::endl; +// std::cout << std::setprecision(6) << std::endl; +// for (int i = 0; i < PARAM.globalv.nlocal; i++) +// { +// for (int j = 0; j < PARAM.globalv.nlocal; j++) +// { +// if (std::abs(mm[i * PARAM.globalv.nlocal + j]) > 1.0e-5) +// { +// std::cout << std::setw(12) << mm[i * PARAM.globalv.nlocal + j]; +// } +// else +// { +// std::cout << std::setw(12) << "0"; +// } +// } +// std::cout << std::endl; +// } +// return; +// } // be called in force_lo.cpp template <> @@ -210,20 +210,40 @@ void Force_LCAO::ftable(const bool isforce, // allocate DHloc_fixed_x, DHloc_fixed_y, DHloc_fixed_z this->allocate(ucell, gd, pv, fsr, two_center_bundle, orb); - const double* dSx[3] = { fsr.DSloc_x, fsr.DSloc_y, fsr.DSloc_z }; - const double* dSxy[6] = { fsr.DSloc_11, fsr.DSloc_12, fsr.DSloc_13, fsr.DSloc_22, fsr.DSloc_23, fsr.DSloc_33 }; + const double* dSx[3] = {fsr.DSloc_x, fsr.DSloc_y, fsr.DSloc_z}; + const double* dSxy[6] = {fsr.DSloc_11, fsr.DSloc_12, fsr.DSloc_13, fsr.DSloc_22, fsr.DSloc_23, fsr.DSloc_33}; // calculate the force related to 'energy density matrix'. - PulayForceStress::cal_pulay_fs(foverlap, soverlap, + PulayForceStress::cal_pulay_fs( + foverlap, + soverlap, this->cal_edm(pelec, *psi, *dm, *kv, pv, PARAM.inp.nspin, PARAM.inp.nbands, ucell, *ra), - ucell, pv, dSx, dSxy, isforce, isstress); - - const double* dHx[3] = { fsr.DHloc_fixed_x, fsr.DHloc_fixed_y, fsr.DHloc_fixed_z }; - const double* dHxy[6] = { fsr.DHloc_fixed_11, fsr.DHloc_fixed_12, fsr.DHloc_fixed_13, fsr.DHloc_fixed_22, fsr.DHloc_fixed_23, fsr.DHloc_fixed_33 }; - //tvnl_dphi + ucell, + pv, + dSx, + dSxy, + isforce, + isstress); + + const double* dHx[3] = {fsr.DHloc_fixed_x, fsr.DHloc_fixed_y, fsr.DHloc_fixed_z}; + const double* dHxy[6] = {fsr.DHloc_fixed_11, + fsr.DHloc_fixed_12, + fsr.DHloc_fixed_13, + fsr.DHloc_fixed_22, + fsr.DHloc_fixed_23, + fsr.DHloc_fixed_33}; + // tvnl_dphi PulayForceStress::cal_pulay_fs(ftvnl_dphi, stvnl_dphi, *dm, ucell, pv, dHx, dHxy, isforce, isstress); // vl_dphi - PulayForceStress::cal_pulay_fs(fvl_dphi, svl_dphi, *dm, ucell, pelec->pot, gint, isforce, isstress, false/*reset dm to gint*/); + PulayForceStress::cal_pulay_fs(fvl_dphi, + svl_dphi, + *dm, + ucell, + pelec->pot, + gint, + isforce, + isstress, + false /*reset dm to gint*/); #ifdef __DEEPKS if (PARAM.inp.deepks_scf) @@ -237,21 +257,21 @@ void Force_LCAO::ftable(const bool isforce, GlobalC::ld.cal_gedm(ucell.nat); - const int nks=1; - DeePKS_domain::cal_f_delta_gamma(dm_gamma, - ucell, - orb, - gd, - *this->ParaV, - GlobalC::ld.lmaxd, - nks, - kv->kvec_d, - GlobalC::ld.nlm_save, - GlobalC::ld.gedm, - GlobalC::ld.inl_index, - GlobalC::ld.F_delta, - isstress, - svnl_dalpha); + const int nks = 1; + DeePKS_domain::cal_f_delta(dm_gamma, + ucell, + orb, + gd, + *this->ParaV, + GlobalC::ld.lmaxd, + nks, + kv->kvec_d, + GlobalC::ld.phialpha, + GlobalC::ld.gedm, + GlobalC::ld.inl_index, + GlobalC::ld.F_delta, + isstress, + svnl_dalpha); #ifdef __MPI Parallel_Reduce::reduce_all(GlobalC::ld.F_delta.c, GlobalC::ld.F_delta.nr * GlobalC::ld.F_delta.nc); @@ -265,7 +285,7 @@ void Force_LCAO::ftable(const bool isforce, if (PARAM.inp.deepks_out_unittest) { const int nks = 1; // 1 for gamma-only - LCAO_deepks_io::print_dm(nks, PARAM.globalv.nlocal, this->ParaV->nrow, dm_gamma); + LCAO_deepks_io::print_dm(nks, PARAM.globalv.nlocal, this->ParaV->nrow, dm_gamma); GlobalC::ld.check_projected_dm(); @@ -273,7 +293,7 @@ void Force_LCAO::ftable(const bool isforce, GlobalC::ld.check_gedm(); - GlobalC::ld.cal_e_delta_band(dm_gamma,nks); + GlobalC::ld.cal_e_delta_band(dm_gamma, nks); std::ofstream ofs("E_delta_bands.dat"); ofs << std::setprecision(10) << GlobalC::ld.e_delta_band; diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp index e9203d6352..2b91e7dae2 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp @@ -1,6 +1,5 @@ #include "FORCE.h" #include "module_base/memory.h" -#include "module_parameter/parameter.h" #include "module_base/parallel_reduce.h" #include "module_base/timer.h" #include "module_base/tool_threading.h" @@ -10,9 +9,10 @@ #include "module_elecstate/elecstate_lcao.h" #include "module_elecstate/module_dm/cal_dm_psi.h" #include "module_hamilt_lcao/hamilt_lcaodft/LCAO_domain.h" +#include "module_hamilt_lcao/hamilt_lcaodft/pulay_force_stress.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" #include "module_io/write_HS.h" -#include "module_hamilt_lcao/hamilt_lcaodft/pulay_force_stress.h" +#include "module_parameter/parameter.h" #include #include @@ -138,8 +138,7 @@ void Force_LCAO>::allocate(const UnitCell& ucell, { cal_deri = false; - ModuleBase::WARNING_QUIT("cal_syns", - "This function has been broken and will be fixed later."); + ModuleBase::WARNING_QUIT("cal_syns", "This function has been broken and will be fixed later."); LCAO_domain::build_ST_new(fsr, 'S', @@ -156,7 +155,7 @@ void Force_LCAO>::allocate(const UnitCell& ucell, for (int ik = 0; ik < nks; ik++) { - + bool bit = false; // LiuXh, 2017-03-21 } } @@ -188,83 +187,82 @@ void Force_LCAO>::finish_ftable(ForceStressArrays& fsr) return; } -//template <> -//void Force_LCAO>::test(Parallel_Orbitals& pv, double* mmm, const std::string& name) +// template <> +// void Force_LCAO>::test(Parallel_Orbitals& pv, double* mmm, const std::string& name) //{ -// // mohan remove 'const' for pv, 2024-03-31 -// if (GlobalV::NPROC != 1) -// { -// return; -// } +// // mohan remove 'const' for pv, 2024-03-31 +// if (GlobalV::NPROC != 1) +// { +// return; +// } // -// std::cout << "test!" << std::endl; +// std::cout << "test!" << std::endl; // -// int irr = 0; -// int ca = 0; +// int irr = 0; +// int ca = 0; // -// GlobalV::ofs_running << " Calculate the test in Force_LCAO_k" << std::endl; -// Record_adj RA; +// GlobalV::ofs_running << " Calculate the test in Force_LCAO_k" << std::endl; +// Record_adj RA; // -// // mohan update 2024-03-31 -// RA.for_2d(pv, GlobalV::GAMMA_ONLY_LOCAL, GlobalC::ORB.cutoffs()); +// // mohan update 2024-03-31 +// RA.for_2d(pv, GlobalV::GAMMA_ONLY_LOCAL, GlobalC::ORB.cutoffs()); // -// double* test; -// test = new double[PARAM.globalv.nlocal * PARAM.globalv.nlocal]; -// ModuleBase::GlobalFunc::ZEROS(test, PARAM.globalv.nlocal * PARAM.globalv.nlocal); +// double* test; +// test = new double[PARAM.globalv.nlocal * PARAM.globalv.nlocal]; +// ModuleBase::GlobalFunc::ZEROS(test, PARAM.globalv.nlocal * PARAM.globalv.nlocal); // -// for (int T1 = 0; T1 < ucell.ntype; T1++) -// { -// Atom* atom1 = &ucell.atoms[T1]; -// for (int I1 = 0; I1 < atom1->na; I1++) -// { -// // const int iat = ucell.itia2iat(T1,I1); -// const int start1 = ucell.itiaiw2iwt(T1, I1, 0); -// for (int cb = 0; cb < RA.na_each[ca]; cb++) -// { -// const int T2 = RA.info[ca][cb][3]; -// const int I2 = RA.info[ca][cb][4]; -// Atom* atom2 = &ucell.atoms[T2]; -// const int start2 = ucell.itiaiw2iwt(T2, I2, 0); +// for (int T1 = 0; T1 < ucell.ntype; T1++) +// { +// Atom* atom1 = &ucell.atoms[T1]; +// for (int I1 = 0; I1 < atom1->na; I1++) +// { +// // const int iat = ucell.itia2iat(T1,I1); +// const int start1 = ucell.itiaiw2iwt(T1, I1, 0); +// for (int cb = 0; cb < RA.na_each[ca]; cb++) +// { +// const int T2 = RA.info[ca][cb][3]; +// const int I2 = RA.info[ca][cb][4]; +// Atom* atom2 = &ucell.atoms[T2]; +// const int start2 = ucell.itiaiw2iwt(T2, I2, 0); // -// for (int jj = 0; jj < atom1->nw; jj++) -// { -// const int iw1_all = start1 + jj; -// for (int kk = 0; kk < atom2->nw; kk++) -// { -// const int iw2_all = start2 + kk; -// assert(irr < pv.nnr); -// test[iw1_all * PARAM.globalv.nlocal + iw2_all] += mmm[irr]; -// ++irr; -// } -// } -// } -// ++ca; -// } -// } +// for (int jj = 0; jj < atom1->nw; jj++) +// { +// const int iw1_all = start1 + jj; +// for (int kk = 0; kk < atom2->nw; kk++) +// { +// const int iw2_all = start2 + kk; +// assert(irr < pv.nnr); +// test[iw1_all * PARAM.globalv.nlocal + iw2_all] += mmm[irr]; +// ++irr; +// } +// } +// } +// ++ca; +// } +// } // -// std::cout << "\n " << name << std::endl; -// std::cout << std::setprecision(4); -// for (int i = 0; i < PARAM.globalv.nlocal; i++) -// { -// for (int j = 0; j < PARAM.globalv.nlocal; j++) -// { -// if (std::abs(test[i * PARAM.globalv.nlocal + j]) > 1.0e-5) -// { -// std::cout << std::setw(12) << test[i * PARAM.globalv.nlocal + j]; -// } -// else -// { -// std::cout << std::setw(12) << "0"; -// } -// } -// std::cout << std::endl; -// } -// delete[] test; +// std::cout << "\n " << name << std::endl; +// std::cout << std::setprecision(4); +// for (int i = 0; i < PARAM.globalv.nlocal; i++) +// { +// for (int j = 0; j < PARAM.globalv.nlocal; j++) +// { +// if (std::abs(test[i * PARAM.globalv.nlocal + j]) > 1.0e-5) +// { +// std::cout << std::setw(12) << test[i * PARAM.globalv.nlocal + j]; +// } +// else +// { +// std::cout << std::setw(12) << "0"; +// } +// } +// std::cout << std::endl; +// } +// delete[] test; // -// RA.delete_grid(); // xiaohui add 2015-02-04 -// return; -//} - +// RA.delete_grid(); // xiaohui add 2015-02-04 +// return; +// } // be called in Force_LCAO::start_force_calculation template <> @@ -308,21 +306,39 @@ void Force_LCAO>::ftable(const bool isforce, kv->get_nks(), kv->kvec_d); - const double* dSx[3] = { fsr.DSloc_Rx, fsr.DSloc_Ry, fsr.DSloc_Rz }; + const double* dSx[3] = {fsr.DSloc_Rx, fsr.DSloc_Ry, fsr.DSloc_Rz}; // calculate the energy density matrix // and the force related to overlap matrix and energy density matrix. - PulayForceStress::cal_pulay_fs(foverlap, soverlap, + PulayForceStress::cal_pulay_fs( + foverlap, + soverlap, this->cal_edm(pelec, *psi, *dm, *kv, pv, PARAM.inp.nspin, PARAM.inp.nbands, ucell, *ra), - ucell, pv, dSx, fsr.DH_r, isforce, isstress, ra, -1.0, 1.0); - - const double* dHx[3] = { fsr.DHloc_fixedR_x, fsr.DHloc_fixedR_y, fsr.DHloc_fixedR_z }; // T+Vnl - const double* dHxy[6] = { fsr.stvnl11, fsr.stvnl12, fsr.stvnl13, fsr.stvnl22, fsr.stvnl23, fsr.stvnl33 }; //T + ucell, + pv, + dSx, + fsr.DH_r, + isforce, + isstress, + ra, + -1.0, + 1.0); + + const double* dHx[3] = {fsr.DHloc_fixedR_x, fsr.DHloc_fixedR_y, fsr.DHloc_fixedR_z}; // T+Vnl + const double* dHxy[6] = {fsr.stvnl11, fsr.stvnl12, fsr.stvnl13, fsr.stvnl22, fsr.stvnl23, fsr.stvnl33}; // T // tvnl_dphi PulayForceStress::cal_pulay_fs(ftvnl_dphi, stvnl_dphi, *dm, ucell, pv, dHx, dHxy, isforce, isstress, ra, 1.0, -1.0); // doing on the real space grid. // vl_dphi - PulayForceStress::cal_pulay_fs(fvl_dphi, svl_dphi, *dm, ucell, pelec->pot, gint, isforce, isstress, false/*reset dm to gint*/); + PulayForceStress::cal_pulay_fs(fvl_dphi, + svl_dphi, + *dm, + ucell, + pelec->pot, + gint, + isforce, + isstress, + false /*reset dm to gint*/); #ifdef __DEEPKS if (PARAM.inp.deepks_scf) @@ -330,26 +346,26 @@ void Force_LCAO>::ftable(const bool isforce, const std::vector>>& dm_k = dm->get_DMK_vector(); // when deepks_scf is on, the init pdm should be same as the out pdm, so we should not recalculate the pdm - // GlobalC::ld.cal_projected_DM_k(dm, ucell, orb, gd); + // GlobalC::ld.cal_projected_DM(dm, ucell, orb, gd); GlobalC::ld.cal_descriptor(ucell.nat); GlobalC::ld.cal_gedm(ucell.nat); - DeePKS_domain::cal_f_delta_k(dm_k, - ucell, - orb, - gd, - pv, - GlobalC::ld.lmaxd, - kv->get_nks(), - kv->kvec_d, - GlobalC::ld.nlm_save_k, - GlobalC::ld.gedm, - GlobalC::ld.inl_index, - GlobalC::ld.F_delta, - isstress, - svnl_dalpha); + DeePKS_domain::cal_f_delta>(dm_k, + ucell, + orb, + gd, + pv, + GlobalC::ld.lmaxd, + kv->get_nks(), + kv->kvec_d, + GlobalC::ld.phialpha, + GlobalC::ld.gedm, + GlobalC::ld.inl_index, + GlobalC::ld.F_delta, + isstress, + svnl_dalpha); #ifdef __MPI Parallel_Reduce::reduce_all(GlobalC::ld.F_delta.c, GlobalC::ld.F_delta.nr * GlobalC::ld.F_delta.nc); diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp index 3d8f8260fb..131f6e25c4 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp @@ -149,85 +149,26 @@ void hamilt::DeePKS>::initialize_HR(const Grid_Driv } #endif -template <> -void DeePKS>::contributeHR() -{ - ModuleBase::TITLE("DeePKS", "contributeHR"); -#ifdef __DEEPKS - if (GlobalC::ld.get_hr_cal()) - { - ModuleBase::timer::tick("DeePKS", "contributeHR"); - const Parallel_Orbitals* pv = this->hsk->get_pv(); - GlobalC::ld.cal_projected_DM(this->DM, *this->ucell, *ptr_orb_, *(this->gd)); - GlobalC::ld.cal_descriptor(this->ucell->nat); - GlobalC::ld.cal_gedm(this->ucell->nat); - // recalculate the H_V_delta - this->H_V_delta->set_zero(); - this->calculate_HR(); - - GlobalC::ld.set_hr_cal(false); - - ModuleBase::timer::tick("DeePKS", "contributeHR"); - } - // save H_V_delta to hR - this->hR->add(*this->H_V_delta); -#endif -} - -template <> -void DeePKS, double>>::contributeHR() -{ -#ifdef __DEEPKS - ModuleBase::TITLE("DeePKS", "contributeHR"); - // if DM_K changed, HR of DeePKS need to refresh. - // the judgement is based on the status of HR in GlobalC::ld - // this operator should be informed that DM_K has changed and HR need to recalculate. - if (GlobalC::ld.get_hr_cal()) - { - ModuleBase::timer::tick("DeePKS", "contributeHR"); - - GlobalC::ld.cal_projected_DM>(this->DM, *this->ucell, *ptr_orb_, *this->gd); - GlobalC::ld.cal_descriptor(this->ucell->nat); - // calculate dE/dD - GlobalC::ld.cal_gedm(this->ucell->nat); - - // recalculate the H_V_delta - if (this->H_V_delta == nullptr) - { - this->H_V_delta = new hamilt::HContainer(*this->hR); - } - this->H_V_delta->set_zero(); - this->calculate_HR(); - - GlobalC::ld.set_hr_cal(false); - - ModuleBase::timer::tick("DeePKS", "contributeHR"); - } - // save H_V_delta to hR - this->hR->add(*this->H_V_delta); -#endif -} -template <> -void DeePKS, std::complex>>::contributeHR() +template +void hamilt::DeePKS>::contributeHR() { #ifdef __DEEPKS ModuleBase::TITLE("DeePKS", "contributeHR"); - // if DM_K changed, HR of DeePKS need to refresh. + // if DM changed, HR of DeePKS need to refresh. // the judgement is based on the status of HR in GlobalC::ld - // this operator should be informed that DM_K has changed and HR need to recalculate. + // this operator should be informed that DM has changed and HR need to recalculate. if (GlobalC::ld.get_hr_cal()) { ModuleBase::timer::tick("DeePKS", "contributeHR"); - GlobalC::ld.cal_projected_DM>(this->DM, *this->ucell, *ptr_orb_, *this->gd); + GlobalC::ld.cal_projected_DM(this->DM, *this->ucell, *ptr_orb_, *(this->gd)); GlobalC::ld.cal_descriptor(this->ucell->nat); - // calculate dE/dD GlobalC::ld.cal_gedm(this->ucell->nat); // recalculate the H_V_delta if (this->H_V_delta == nullptr) { - this->H_V_delta = new hamilt::HContainer>(*this->hR); + this->H_V_delta = new hamilt::HContainer(*this->hR); } this->H_V_delta->set_zero(); this->calculate_HR(); @@ -238,7 +179,6 @@ void DeePKS, std::complex>>::contribut } // save H_V_delta to hR this->hR->add(*this->H_V_delta); - #endif } @@ -311,7 +251,7 @@ void hamilt::DeePKS>::calculate_HR() const Parallel_Orbitals* paraV = this->H_V_delta->get_paraV(); const int npol = this->ucell->get_npol(); - // 1. calculate for each pair of atoms + // 1. calculate for each pair of atoms for (int iat0 = 0; iat0 < this->ucell->nat; iat0++) { auto tau0 = ucell->get_tau(iat0); @@ -378,7 +318,7 @@ void hamilt::DeePKS>::calculate_HR() } std::vector>>& nlm_iat = nlm_tot[iat00]; - // 2. calculate D for each pair of atoms + // 2. calculate D for each pair of atoms for (int ad1 = 0; ad1 < adjs.adj_num + 1; ++ad1) { const int T1 = adjs.ntype[ad1]; @@ -537,9 +477,7 @@ void hamilt::DeePKS>::contributeHk(int ik) #endif template class DeePKS>; - template class DeePKS, double>>; - template class DeePKS, std::complex>>; } // namespace hamilt diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h index 501298ed0e..ae51e47bbc 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h @@ -5,6 +5,7 @@ #include "module_cell/module_neighbor/sltk_grid_driver.h" #include "module_elecstate/module_dm/density_matrix.h" #include "module_hamilt_lcao/module_hcontainer/hcontainer.h" +#include "module_hamilt_lcao/module_deepks/LCAO_deepks.h" #include "operator_lcao.h" namespace hamilt @@ -57,6 +58,8 @@ class DeePKS> : public OperatorLCAO private: elecstate::DensityMatrix* DM; + // LCAO_Deepks* ld = nullptr; + const UnitCell* ucell = nullptr; const Grid_Driver* gd = nullptr; diff --git a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt index f32151bafe..8fb8ad86ab 100644 --- a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt +++ b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt @@ -1,13 +1,12 @@ if(ENABLE_DEEPKS) list(APPEND objects LCAO_deepks.cpp - deepks_fgamma.cpp - deepks_fk.cpp + deepks_force.cpp LCAO_deepks_odelta.cpp LCAO_deepks_io.cpp LCAO_deepks_mpi.cpp LCAO_deepks_pdm.cpp - LCAO_deepks_psialpha.cpp + LCAO_deepks_phialpha.cpp LCAO_deepks_torch.cpp LCAO_deepks_vdelta.cpp deepks_hmat.cpp diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp index 2e34264ab7..43d4a68784 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp @@ -1,22 +1,21 @@ -//wenfei 2022-1-5 -//This file contains constructor and destructor of the class LCAO_deepks, +// wenfei 2022-1-5 +// This file contains constructor and destructor of the class LCAO_deepks, #include "module_parameter/parameter.h" -//as well as subroutines for initializing and releasing relevant data structures - -//Other than the constructor and the destructor, it contains 3 types of subroutines: -//1. subroutines that are related to calculating descriptors: -// - init : allocates some arrays -// - init_index : records the index (inl) -// - allocate_nlm : allocates data structures (nlm_save) which is used to store -//2. subroutines that are related to calculating force label: -// - init_gdmx : allocates gdmx; it is a private subroutine -// - del_gdmx : releases gdmx -//3. subroutines that are related to calculating force label: -// - init_gdmepsl : allocates gdm_epsl; it is a private subroutine -// - del_gdmepsl : releases gdm_epsl -//4. subroutines that are related to V_delta: -// - allocate_V_delta : allocates H_V_delta; if calculating force, it also calls -// init_gdmx, as well as allocating F_delta +// as well as subroutines for initializing and releasing relevant data structures + +// Other than the constructor and the destructor, it contains 3 types of subroutines: +// 1. subroutines that are related to calculating descriptors: +// - init : allocates some arrays +// - init_index : records the index (inl) +// 2. subroutines that are related to calculating force label: +// - init_gdmx : allocates gdmx; it is a private subroutine +// - del_gdmx : releases gdmx +// 3. subroutines that are related to calculating force label: +// - init_gdmepsl : allocates gdm_epsl; it is a private subroutine +// - del_gdmepsl : releases gdm_epsl +// 4. subroutines that are related to V_delta: +// - allocate_V_delta : allocates H_V_delta; if calculating force, it also calls +// init_gdmx, as well as allocating F_delta #ifdef __DEEPKS @@ -25,19 +24,20 @@ namespace GlobalC { - LCAO_Deepks ld; +LCAO_Deepks ld; } -//Constructor of the class +// Constructor of the class LCAO_Deepks::LCAO_Deepks() { alpha_index = new ModuleBase::IntArray[1]; inl_index = new ModuleBase::IntArray[1]; inl_l = nullptr; gedm = nullptr; + this->phialpha.resize(1); } -//Desctructor of the class +// Desctructor of the class LCAO_Deepks::~LCAO_Deepks() { delete[] alpha_index; @@ -45,18 +45,18 @@ LCAO_Deepks::~LCAO_Deepks() delete[] inl_l; //=======1. to use deepks, pdm is required========== - //delete pdm** - for (int inl = 0;inl < this->inlmax;inl++) + // delete pdm** + for (int inl = 0; inl < this->inlmax; inl++) { delete[] pdm[inl]; } delete[] pdm; //=======2. "deepks_scf" part========== - //if (PARAM.inp.deepks_scf) + // if (PARAM.inp.deepks_scf) if (gedm) { - //delete gedm** - for (int inl = 0;inl < this->inlmax;inl++) + // delete gedm** + for (int inl = 0; inl < this->inlmax; inl++) { delete[] gedm[inl]; } @@ -64,16 +64,14 @@ LCAO_Deepks::~LCAO_Deepks() } del_gdmx(); - } -void LCAO_Deepks::init( - const LCAO_Orbitals& orb, - const int nat, - const int ntype, - const int nks, - const Parallel_Orbitals& pv_in, - std::vector na) +void LCAO_Deepks::init(const LCAO_Orbitals& orb, + const int nat, + const int ntype, + const int nks, + const Parallel_Orbitals& pv_in, + std::vector na) { ModuleBase::TITLE("LCAO_Deepks", "init"); @@ -86,51 +84,51 @@ void LCAO_Deepks::init( assert(lm >= 0); assert(nm >= 0); assert(tot_inl_per_atom >= 0); - + int tot_inl = tot_inl_per_atom * nat; - if(PARAM.inp.deepks_equiv) + if (PARAM.inp.deepks_equiv) { tot_inl = nat; } this->lmaxd = lm; this->nmaxd = nm; - + GlobalV::ofs_running << " lmax of descriptor = " << this->lmaxd << std::endl; GlobalV::ofs_running << " nmax of descriptor = " << nmaxd << std::endl; int pdm_size = 0; this->inlmax = tot_inl; - if(!PARAM.inp.deepks_equiv) + if (!PARAM.inp.deepks_equiv) { GlobalV::ofs_running << " total basis (all atoms) for descriptor = " << std::endl; - //init pdm** + // init pdm** pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); } else { - for(int il = 0; il < this->lmaxd + 1; il++) + for (int il = 0; il < this->lmaxd + 1; il++) { pdm_size += (2 * il + 1) * orb.Alpha[0].getNchi(il); } pdm_size = pdm_size * pdm_size; - this->des_per_atom=pdm_size; + this->des_per_atom = pdm_size; GlobalV::ofs_running << " Equivariant version, size of pdm matrices : " << pdm_size << std::endl; } - this->pdm = new double* [this->inlmax]; - for (int inl = 0;inl < this->inlmax;inl++) + this->pdm = new double*[this->inlmax]; + for (int inl = 0; inl < this->inlmax; inl++) { this->pdm[inl] = new double[pdm_size]; ModuleBase::GlobalFunc::ZEROS(this->pdm[inl], pdm_size); } // cal n(descriptor) per atom , related to Lmax, nchi(L) and m. (not total_nchi!) - if(!PARAM.inp.deepks_equiv) + if (!PARAM.inp.deepks_equiv) { - this->des_per_atom=0; // mohan add 2021-04-21 + this->des_per_atom = 0; // mohan add 2021-04-21 for (int l = 0; l <= this->lmaxd; l++) { this->des_per_atom += orb.Alpha[0].getNchi(l) * (2 * l + 1); @@ -139,14 +137,17 @@ void LCAO_Deepks::init( this->init_index(ntype, nat, na, tot_inl, orb); } - this->allocate_nlm(nat); this->pv = &pv_in; return; } -void LCAO_Deepks::init_index(const int ntype, const int nat, std::vector na, const int Total_nchi, const LCAO_Orbitals &orb) +void LCAO_Deepks::init_index(const int ntype, + const int nat, + std::vector na, + const int Total_nchi, + const LCAO_Orbitals& orb) { delete[] this->alpha_index; this->alpha_index = new ModuleBase::IntArray[ntype]; @@ -160,23 +161,18 @@ void LCAO_Deepks::init_index(const int ntype, const int nat, std::vector na int alpha = 0; for (int it = 0; it < ntype; it++) { - this->alpha_index[it].create( - na[it], - this->lmaxd + 1, // l starts from 0 - this->nmaxd, - 2 * this->lmaxd + 1); // m ==> 2*l+1 + this->alpha_index[it].create(na[it], + this->lmaxd + 1, // l starts from 0 + this->nmaxd, + 2 * this->lmaxd + 1); // m ==> 2*l+1 - this->inl_index[it].create( - na[it], - this->lmaxd + 1, - this->nmaxd); + this->inl_index[it].create(na[it], this->lmaxd + 1, this->nmaxd); - GlobalV::ofs_running << " Type " << it + 1 - << " number_of_atoms " << na[it] << std::endl; + GlobalV::ofs_running << " Type " << it + 1 << " number_of_atoms " << na[it] << std::endl; for (int ia = 0; ia < na[it]; ia++) { - //alpha + // alpha for (int l = 0; l < this->lmaxd + 1; l++) { for (int n = 0; n < orb.Alpha[0].getNchi(l); n++) @@ -191,51 +187,39 @@ void LCAO_Deepks::init_index(const int ntype, const int nat, std::vector na inl++; } } - }//end ia - }//end it + } // end ia + } // end it assert(this->n_descriptor == alpha); assert(Total_nchi == inl); GlobalV::ofs_running << " descriptors_per_atom " << this->des_per_atom << std::endl; GlobalV::ofs_running << " total_descriptors " << this->n_descriptor << std::endl; - return; -} - -void LCAO_Deepks::allocate_nlm(const int nat) -{ - if(PARAM.globalv.gamma_only_local) - { - this->nlm_save.resize(nat); - } - else - { - this->nlm_save_k.resize(nat); - } + return; } void LCAO_Deepks::init_gdmx(const int nat) { - this->gdmx = new double** [nat]; - this->gdmy = new double** [nat]; - this->gdmz = new double** [nat]; + this->gdmx = new double**[nat]; + this->gdmy = new double**[nat]; + this->gdmz = new double**[nat]; int pdm_size = 0; - if(!PARAM.inp.deepks_equiv) + if (!PARAM.inp.deepks_equiv) { pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); } else { - pdm_size = this -> des_per_atom; + pdm_size = this->des_per_atom; } - - for (int iat = 0;iat < nat;iat++) + + for (int iat = 0; iat < nat; iat++) { - this->gdmx[iat] = new double* [inlmax]; - this->gdmy[iat] = new double* [inlmax]; - this->gdmz[iat] = new double* [inlmax]; - for (int inl = 0;inl < inlmax;inl++) + this->gdmx[iat] = new double*[inlmax]; + this->gdmy[iat] = new double*[inlmax]; + this->gdmz[iat] = new double*[inlmax]; + for (int inl = 0; inl < inlmax; inl++) { - this->gdmx[iat][inl] = new double [pdm_size]; - this->gdmy[iat][inl] = new double [pdm_size]; + this->gdmx[iat][inl] = new double[pdm_size]; + this->gdmy[iat][inl] = new double[pdm_size]; this->gdmz[iat][inl] = new double[pdm_size]; ModuleBase::GlobalFunc::ZEROS(gdmx[iat][inl], pdm_size); ModuleBase::GlobalFunc::ZEROS(gdmy[iat][inl], pdm_size); @@ -246,12 +230,12 @@ void LCAO_Deepks::init_gdmx(const int nat) return; } -//void LCAO_Deepks::del_gdmx(const int nat) +// void LCAO_Deepks::del_gdmx(const int nat) void LCAO_Deepks::del_gdmx() { - for (int iat = 0;iat < nat_gdm;iat++) + for (int iat = 0; iat < nat_gdm; iat++) { - for (int inl = 0;inl < inlmax;inl++) + for (int inl = 0; inl < inlmax; inl++) { delete[] this->gdmx[iat][inl]; delete[] this->gdmy[iat][inl]; @@ -269,24 +253,24 @@ void LCAO_Deepks::del_gdmx() void LCAO_Deepks::init_gdmepsl() { - this->gdm_epsl = new double** [6]; - + this->gdm_epsl = new double**[6]; + int pdm_size = 0; - if(!PARAM.inp.deepks_equiv) + if (!PARAM.inp.deepks_equiv) { pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); } else { - pdm_size = this -> des_per_atom; - } + pdm_size = this->des_per_atom; + } - for (int ipol = 0;ipol < 6;ipol++) + for (int ipol = 0; ipol < 6; ipol++) { - this->gdm_epsl[ipol] = new double* [inlmax]; - for (int inl = 0;inl < inlmax;inl++) + this->gdm_epsl[ipol] = new double*[inlmax]; + for (int inl = 0; inl < inlmax; inl++) { - this->gdm_epsl[ipol][inl] = new double [pdm_size]; + this->gdm_epsl[ipol][inl] = new double[pdm_size]; ModuleBase::GlobalFunc::ZEROS(gdm_epsl[ipol][inl], pdm_size); } } @@ -295,9 +279,9 @@ void LCAO_Deepks::init_gdmepsl() void LCAO_Deepks::del_gdmepsl() { - for (int ipol = 0;ipol < 6;ipol++) + for (int ipol = 0; ipol < 6; ipol++) { - for (int inl = 0;inl < inlmax;inl++) + for (int inl = 0; inl < inlmax; inl++) { delete[] this->gdm_epsl[ipol][inl]; } @@ -307,14 +291,13 @@ void LCAO_Deepks::del_gdmepsl() return; } - void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) { ModuleBase::TITLE("LCAO_Deepks", "allocate_V_delta"); nks_V_delta = nks; - //initialize the H matrix H_V_delta - if(PARAM.globalv.gamma_only_local) + // initialize the H matrix H_V_delta + if (PARAM.globalv.gamma_only_local) { H_V_delta.resize(1); // the first dimension is for the consistence with H_V_delta_k this->H_V_delta[0].resize(pv->nloc); @@ -323,47 +306,46 @@ void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) else { H_V_delta_k.resize(nks); - for(int ik=0;ikH_V_delta_k[ik].resize(pv->nloc); ModuleBase::GlobalFunc::ZEROS(this->H_V_delta_k[ik].data(), pv->nloc); } } - //init gedm** + // init gedm** int pdm_size = 0; - if(!PARAM.inp.deepks_equiv) + if (!PARAM.inp.deepks_equiv) { pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); } else { - pdm_size = this -> des_per_atom; + pdm_size = this->des_per_atom; } - this->gedm = new double* [this->inlmax]; - for (int inl = 0;inl < this->inlmax;inl++) + this->gedm = new double*[this->inlmax]; + for (int inl = 0; inl < this->inlmax; inl++) { this->gedm[inl] = new double[pdm_size]; ModuleBase::GlobalFunc::ZEROS(this->gedm[inl], pdm_size); } if (PARAM.inp.cal_force) { - //init F_delta + // init F_delta F_delta.create(nat, 3); - if(PARAM.inp.deepks_out_labels) - { + if (PARAM.inp.deepks_out_labels) + { this->init_gdmx(nat); this->init_gdmepsl(); } - //gdmx is used only in calculating gvx + // gdmx is used only in calculating gvx } if (PARAM.inp.deepks_bandgap) { - //init o_delta + // init o_delta o_delta.create(nks, 1); - } return; @@ -371,20 +353,21 @@ void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) void LCAO_Deepks::init_orbital_pdm_shell(const int nks) { - - this->orbital_pdm_shell = new double*** [nks]; - for (int iks=0; iksorbital_pdm_shell = new double***[nks]; + + for (int iks = 0; iks < nks; iks++) { - this->orbital_pdm_shell[iks] = new double** [1]; - for (int hl=0; hl < 1; hl++) + this->orbital_pdm_shell[iks] = new double**[1]; + for (int hl = 0; hl < 1; hl++) { - this->orbital_pdm_shell[iks][hl] = new double* [this->inlmax]; + this->orbital_pdm_shell[iks][hl] = new double*[this->inlmax]; - for(int inl = 0; inl < this->inlmax; inl++) + for (int inl = 0; inl < this->inlmax; inl++) { - this->orbital_pdm_shell[iks][hl][inl] = new double [(2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)]; - ModuleBase::GlobalFunc::ZEROS(orbital_pdm_shell[iks][hl][inl], (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)); + this->orbital_pdm_shell[iks][hl][inl] = new double[(2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)]; + ModuleBase::GlobalFunc::ZEROS(orbital_pdm_shell[iks][hl][inl], + (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)); } } } @@ -392,14 +375,13 @@ void LCAO_Deepks::init_orbital_pdm_shell(const int nks) return; } - void LCAO_Deepks::del_orbital_pdm_shell(const int nks) { - for (int iks=0; iksinlmax; inl++) + for (int inl = 0; inl < this->inlmax; inl++) { delete[] this->orbital_pdm_shell[iks][hl][inl]; } @@ -407,57 +389,58 @@ void LCAO_Deepks::del_orbital_pdm_shell(const int nks) } delete[] this->orbital_pdm_shell[iks]; } - delete[] this->orbital_pdm_shell; + delete[] this->orbital_pdm_shell; return; } -void LCAO_Deepks::init_v_delta_pdm_shell(const int nks,const int nlocal) +void LCAO_Deepks::init_v_delta_pdm_shell(const int nks, const int nlocal) { - const int mn_size=(2 * this->lmaxd + 1) * (2 * this->lmaxd + 1); - if (nks==1){ - this->v_delta_pdm_shell = new double**** [nks]; - for (int iks=0; ikslmaxd + 1) * (2 * this->lmaxd + 1); + if (nks == 1) + { + this->v_delta_pdm_shell = new double****[nks]; + for (int iks = 0; iks < nks; iks++) { - this->v_delta_pdm_shell[iks] = new double*** [nlocal]; + this->v_delta_pdm_shell[iks] = new double***[nlocal]; - for (int mu=0; muv_delta_pdm_shell[iks][mu] = new double** [nlocal]; + this->v_delta_pdm_shell[iks][mu] = new double**[nlocal]; - for (int nu=0; nuv_delta_pdm_shell[iks][mu][nu] = new double* [this->inlmax]; + this->v_delta_pdm_shell[iks][mu][nu] = new double*[this->inlmax]; - for(int inl = 0; inl < this->inlmax; inl++) + for (int inl = 0; inl < this->inlmax; inl++) { - this->v_delta_pdm_shell[iks][mu][nu][inl] = new double [mn_size]; + this->v_delta_pdm_shell[iks][mu][nu][inl] = new double[mn_size]; ModuleBase::GlobalFunc::ZEROS(v_delta_pdm_shell[iks][mu][nu][inl], mn_size); - } + } } } } } else { - this->v_delta_pdm_shell_complex = new std::complex**** [nks]; - for (int iks=0; iksv_delta_pdm_shell_complex = new std::complex****[nks]; + for (int iks = 0; iks < nks; iks++) { - this->v_delta_pdm_shell_complex[iks] = new std::complex*** [nlocal]; + this->v_delta_pdm_shell_complex[iks] = new std::complex***[nlocal]; - for (int mu=0; muv_delta_pdm_shell_complex[iks][mu] = new std::complex** [nlocal]; + this->v_delta_pdm_shell_complex[iks][mu] = new std::complex**[nlocal]; - for (int nu=0; nuv_delta_pdm_shell_complex[iks][mu][nu] = new std::complex* [this->inlmax]; + this->v_delta_pdm_shell_complex[iks][mu][nu] = new std::complex*[this->inlmax]; - for(int inl = 0; inl < this->inlmax; inl++) + for (int inl = 0; inl < this->inlmax; inl++) { - this->v_delta_pdm_shell_complex[iks][mu][nu][inl] = new std::complex [mn_size]; + this->v_delta_pdm_shell_complex[iks][mu][nu][inl] = new std::complex[mn_size]; ModuleBase::GlobalFunc::ZEROS(v_delta_pdm_shell_complex[iks][mu][nu][inl], mn_size); - } + } } } } @@ -466,47 +449,47 @@ void LCAO_Deepks::init_v_delta_pdm_shell(const int nks,const int nlocal) return; } -void LCAO_Deepks::del_v_delta_pdm_shell(const int nks,const int nlocal) +void LCAO_Deepks::del_v_delta_pdm_shell(const int nks, const int nlocal) { - if (nks==1) + if (nks == 1) { - for (int iks=0; iksinlmax; inl++) + for (int inl = 0; inl < this->inlmax; inl++) { delete[] this->v_delta_pdm_shell[iks][mu][nu][inl]; } - delete[] this->v_delta_pdm_shell[iks][mu][nu]; + delete[] this->v_delta_pdm_shell[iks][mu][nu]; } - delete[] this->v_delta_pdm_shell[iks][mu]; + delete[] this->v_delta_pdm_shell[iks][mu]; } - delete[] this->v_delta_pdm_shell[iks]; + delete[] this->v_delta_pdm_shell[iks]; } - delete[] this->v_delta_pdm_shell; + delete[] this->v_delta_pdm_shell; } else { - for (int iks=0; iksinlmax; inl++) + for (int inl = 0; inl < this->inlmax; inl++) { delete[] this->v_delta_pdm_shell_complex[iks][mu][nu][inl]; } - delete[] this->v_delta_pdm_shell_complex[iks][mu][nu]; + delete[] this->v_delta_pdm_shell_complex[iks][mu][nu]; } - delete[] this->v_delta_pdm_shell_complex[iks][mu]; + delete[] this->v_delta_pdm_shell_complex[iks][mu]; } - delete[] this->v_delta_pdm_shell_complex[iks]; + delete[] this->v_delta_pdm_shell_complex[iks]; } - delete[] this->v_delta_pdm_shell_complex; + delete[] this->v_delta_pdm_shell_complex; } return; @@ -519,6 +502,8 @@ void LCAO_Deepks::dpks_cal_e_delta_band(const std::vector>& dm, } template void LCAO_Deepks::dpks_cal_e_delta_band(const std::vector>& dm, const int nks); -template void LCAO_Deepks::dpks_cal_e_delta_band>(const std::vector>>& dm, const int nks); +template void LCAO_Deepks::dpks_cal_e_delta_band>( + const std::vector>>& dm, + const int nks); #endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h index 89276b7835..74400976e4 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h @@ -1,8 +1,10 @@ -#ifndef LCAO_DEEPKS_H -#define LCAO_DEEPKS_H +#ifndef LCAO_DEEPKS_H +#define LCAO_DEEPKS_H #ifdef __DEEPKS +#include "deepks_force.h" +#include "deepks_hmat.h" #include "module_base/complexmatrix.h" #include "module_base/intarray.h" #include "module_base/matrix.h" @@ -11,15 +13,13 @@ #include "module_basis/module_nao/two_center_integrator.h" #include "module_cell/module_neighbor/sltk_grid_driver.h" #include "module_elecstate/module_dm/density_matrix.h" +#include "module_hamilt_lcao/module_hcontainer/hcontainer.h" #include "module_io/winput.h" #include #include #include -#include "deepks_force.h" -#include "deepks_hmat.h" - /// /// The LCAO_Deepks contains subroutines for implementation of the DeePKS method in atomic basis. /// In essential, it is a machine-learned correction term to the XC potential @@ -54,9 +54,9 @@ class LCAO_Deepks ///\rho_{HL} = c_{L, \mu}c_{L,\nu} - c_{H, \mu}c_{H,\nu} \f$ (for gamma_only) ModuleBase::matrix o_delta; - /// Correction term to the Hamiltonian matrix: \f$\langle\psi|V_\delta|\psi\rangle\f$ (for gamma only) + /// Correction term to the Hamiltonian matrix: \f$\langle\phi|V_\delta|\phi\rangle\f$ (for gamma only) /// The size of first dimension is 1, which is used for the consitence with H_V_delta_k - std::vector> H_V_delta; + std::vector> H_V_delta; /// Correction term to Hamiltonian, for multi-k std::vector>> H_V_delta_k; @@ -97,8 +97,8 @@ class LCAO_Deepks //------------------- // private variables //------------------- -// private: - public: // change to public to reconstuct the code, 2024-07-22 by mohan + // private: + public: // change to public to reconstuct the code, 2024-07-22 by mohan int lmaxd = 0; // max l of descirptors int nmaxd = 0; //#. descriptors per l int inlmax = 0; // tot. number {i,n,l} - atom, n, l @@ -111,12 +111,9 @@ class LCAO_Deepks // related derivatives. torch::jit::script::Module module; - // saves , for gamma only - std::vector>>>> nlm_save; - - // saves , for multi_k - typedef std::tuple key_tuple; - std::vector>>>> nlm_save_k; + // saves and its derivatives + // index 0 for itself and index 1-3 for derivatives over x,y,z + std::vector*> phialpha; // projected density matrix double** pdm; //[tot_Inl][2l+1][2l+1] caoyu modified 2021-05-07; if equivariant version: [nat][nlm*nlm] @@ -128,7 +125,7 @@ class LCAO_Deepks // gedm:dE/dD, [tot_Inl][2l+1][2l+1] (E: Hartree) std::vector gedm_tensor; - // gdmx: dD/dX \sum_{mu,nu} 2*c_mu*c_nu * + // gdmx: dD/dX \sum_{mu,nu} 2*c_mu*c_nu * double*** gdmx; //[natom][tot_Inl][2l+1][2l+1] double*** gdmy; double*** gdmz; @@ -164,8 +161,8 @@ class LCAO_Deepks std::complex***** v_delta_pdm_shell_complex; // for multi-k // v_delta_precalc[nks,nlocal,nlocal,NAt,NDscrpt] = gvdm * v_delta_pdm_shell; torch::Tensor v_delta_precalc_tensor; - //for v_delta==2 , new v_delta_precalc storage method - torch::Tensor psialpha_tensor; + // for v_delta==2 , new v_delta_precalc storage method + torch::Tensor phialpha_tensor; torch::Tensor gevdm_tensor; /// size of descriptor(projector) basis set @@ -198,7 +195,6 @@ class LCAO_Deepks // 1. subroutines that are related to calculating descriptors: // - init : allocates some arrays // - init_index : records the index (inl) - // - allocate_nlm : allocates data structures (nlm_save) which is used to store // 2. subroutines that are related to calculating force label: // - init_gdmx : allocates gdmx; it is a private subroutine // - del_gdmx : releases gdmx @@ -234,38 +230,44 @@ class LCAO_Deepks private: // arrange index of descriptor in all atoms void init_index(const int ntype, const int nat, std::vector na, const int tot_inl, const LCAO_Orbitals& orb); - // data structure that saves + // data structure that saves void allocate_nlm(const int nat); // for bandgap label calculation; QO added on 2022-1-7 void init_orbital_pdm_shell(const int nks); void del_orbital_pdm_shell(const int nks); - - //for v_delta label calculation; xinyuan added on 2023-2-22 - void init_v_delta_pdm_shell(const int nks,const int nlocal); - void del_v_delta_pdm_shell(const int nks,const int nlocal); + + // for v_delta label calculation; xinyuan added on 2023-2-22 + void init_v_delta_pdm_shell(const int nks, const int nlocal); + void del_v_delta_pdm_shell(const int nks, const int nlocal); //------------------- - // LCAO_deepks_psialpha.cpp + // LCAO_deepks_phialpha.cpp //------------------- - // wenfei 2022-1-5 - // This file contains 2 subroutines: - // 1. build_psialpha, which calculates the overlap - // between atomic basis and projector alpha : + // E.Wu 2024-12-24 + // This file contains 3 subroutines: + // 1. allocate_phialpha, which allocates memory for phialpha + // 2. build_phialpha, which calculates the overlap + // between atomic basis and projector alpha : // which will be used in calculating pdm, gdmx, H_V_delta, F_delta; - // 2. check_psialpha, which prints the results into .dat files + // 3. check_phialpha, which prints the results into .dat files // for checking public: // calculates - void build_psialpha(const bool& cal_deri /**< [in] 0 for 2-center intergration, 1 for its derivation*/, + void allocate_phialpha(const bool& cal_deri, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD); + + void build_phialpha(const bool& cal_deri /**< [in] 0 for 2-center intergration, 1 for its derivation*/, const UnitCell& ucell, const LCAO_Orbitals& orb, const Grid_Driver& GridD, const TwoCenterIntegrator& overlap_orb_alpha); - void check_psialpha(const bool& cal_deri /**< [in] 0 for 2-center intergration, 1 for its derivation*/, + void check_phialpha(const bool& cal_deri /**< [in] 0 for 2-center intergration, 1 for its derivation*/, const UnitCell& ucell, const LCAO_Orbitals& orb, const Grid_Driver& GridD); @@ -282,21 +284,22 @@ class LCAO_Deepks // It also contains subroutines for printing pdm and gdmx // for checking purpose - // There are 6 subroutines in this file: - // 1. cal_projected_DM, which is used for calculating pdm for gamma point calculation + // There are 4 subroutines in this file: + // 1. cal_projected_DM, which is used for calculating pdm // 2. check_projected_dm, which prints pdm to descriptor.dat - // 3. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) for gamma point + // 3. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) // 4. check_gdmx, which prints gdmx to a series of .dat files public: - /** + /** * @brief calculate projected density matrix: * pdm = sum_i,occ * 3 cases to skip calculation of pdm: * 1. NSCF calculation of DeePKS, init_chg = file and pdm has been read * 2. SCF calculation of DeePKS with init_chg = file and pdm has been read for restarting SCF - * 3. Relax/Cell-Relax/MD calculation, non-first step will use the convergence pdm from the last step as initial pdm + * 3. Relax/Cell-Relax/MD calculation, non-first step will use the convergence pdm from the last step as initial + * pdm */ template void cal_projected_DM(const elecstate::DensityMatrix* dm, @@ -316,11 +319,12 @@ class LCAO_Deepks const Grid_Driver& GridD, const int nks, const std::vector>& kvec_d, + std::vector*> phialpha, const bool isstress); void check_gdmx(const int nat); - /** + /** * @brief set init_pdm to skip the calculation of pdm in SCF iteration */ void set_init_pdm(bool ipdm) @@ -354,7 +358,6 @@ class LCAO_Deepks //! a temporary interface for cal_e_delta_band and cal_e_delta_band_k template void dpks_cal_e_delta_band(const std::vector>& dm, const int nks); - //------------------- // LCAO_deepks_odelta.cpp @@ -365,9 +368,9 @@ class LCAO_Deepks public: template - void cal_o_delta(const std::vector>& - dm_hl /**<[in] modified density matrix that contains HOMO and LUMO only*/, - const int nks); + void cal_o_delta( + const std::vector>& dm_hl /**<[in] modified density matrix that contains HOMO and LUMO only*/, + const int nks); //------------------- // LCAO_deepks_torch.cpp @@ -403,7 +406,7 @@ class LCAO_Deepks // which equals gvdm * v_delta_pdm_shell, // v_delta_pdm_shell = overlap * overlap // 12. check_v_delta_precalc : check v_delta_precalc - // 13. prepare_psialpha : prepare psialpha for outputting npy file + // 13. prepare_phialpha : prepare phialpha for outputting npy file // 14. prepare_gevdm : prepare gevdm for outputting npy file public: @@ -411,7 +414,7 @@ class LCAO_Deepks /// which are eigenvalues of pdm in blocks of I_n_l void cal_descriptor(const int nat); /// print descriptors based on LCAO basis - void check_descriptor(const UnitCell& ucell, const std::string &out_dir); + void check_descriptor(const UnitCell& ucell, const std::string& out_dir); void cal_descriptor_equiv(const int nat); @@ -448,7 +451,7 @@ class LCAO_Deepks const LCAO_Orbitals& orb, const Grid_Driver& GridD); - //calculates v_delta_precalc + // calculates v_delta_precalc template void cal_v_delta_precalc(const int nlocal, const int nat, @@ -461,9 +464,9 @@ class LCAO_Deepks template void check_v_delta_precalc(const int nat, const int nks, const int nlocal); - // prepare psialpha for outputting npy file + // prepare phialpha for outputting npy file template - void prepare_psialpha(const int nlocal, + void prepare_phialpha(const int nlocal, const int nat, const int nks, const std::vector>& kvec_d, @@ -472,12 +475,10 @@ class LCAO_Deepks const Grid_Driver& GridD); template - void check_vdp_psialpha(const int nat, const int nks, const int nlocal); - + void check_vdp_phialpha(const int nat, const int nks, const int nlocal); + // prepare gevdm for outputting npy file - void prepare_gevdm( - const int nat, - const LCAO_Orbitals &orb); + void prepare_gevdm(const int nat, const LCAO_Orbitals& orb); void check_vdp_gevdm(const int nat); private: @@ -492,15 +493,12 @@ class LCAO_Deepks int ndim, // second dimension double** mat); // the array being reduced #endif - - }; namespace GlobalC { - extern LCAO_Deepks ld; +extern LCAO_Deepks ld; } - #endif #endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp index 7639463f72..3d71c04d88 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -210,14 +210,14 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, } else if(PARAM.inp.deepks_v_delta==2)//v_delta_precalc storage method 2 { - ld->prepare_psialpha(nlocal, nat, nks, kvec_d, ucell, orb, GridD); + ld->prepare_phialpha(nlocal, nat, nks, kvec_d, ucell, orb, GridD); - LCAO_deepks_io::save_npy_psialpha(nat, + LCAO_deepks_io::save_npy_phialpha(nat, nks, nlocal, ld->inlmax, ld->lmaxd, - ld->psialpha_tensor, + ld->phialpha_tensor, PARAM.globalv.global_out_dir, my_rank); diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp index c1aa9cab0a..2543568a44 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp @@ -19,8 +19,8 @@ //7. save_npy_orbital_precalc : orbital_precalc //8. save_npy_h : Hamiltonian //9. save_npy_v_delta_precalc : v_delta_precalc -//10. save_npy_psialpha : psialpha -//11. save_npy_gevdm : grav_evdm , can use psialpha and gevdm to calculate v_delta_precalc +//10. save_npy_phialpha : phialpha +//11. save_npy_gevdm : grav_evdm , can use phialpha and gevdm to calculate v_delta_precalc #ifdef __DEEPKS @@ -483,22 +483,22 @@ void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, } template -void LCAO_deepks_io::save_npy_psialpha(const int nat, +void LCAO_deepks_io::save_npy_phialpha(const int nat, const int nks, const int nlocal, const int inlmax, const int lmaxd, - const torch::Tensor &psialpha_tensor, + const torch::Tensor &phialpha_tensor, const std::string& out_dir, const int rank) { - ModuleBase::TITLE("LCAO_deepks_io", "save_npy_psialpha"); + ModuleBase::TITLE("LCAO_deepks_io", "save_npy_phialpha"); if(rank!=0) { return; } - //save psialpha.npy (when v_delta label == 2) + //save phialpha.npy (when v_delta label == 2) //unit: a.u. const int nlmax = inlmax/nat; const int mmax = 2*lmaxd+1; @@ -507,7 +507,7 @@ void LCAO_deepks_io::save_npy_psialpha(const int nat, static_cast(nks), static_cast(nlocal), static_cast(mmax)}; - std::vector npy_psialpha; + std::vector npy_phialpha; for(int iat=0; iat< nat ; iat++) { for(int nl = 0; nl < nlmax; nl++) @@ -520,21 +520,21 @@ void LCAO_deepks_io::save_npy_psialpha(const int nat, { if constexpr (std::is_same::value) { - npy_psialpha.push_back(psialpha_tensor.index({ iat,nl, iks, mu, m }).item().toDouble()); + npy_phialpha.push_back(phialpha_tensor.index({ iat,nl, iks, mu, m }).item().toDouble()); } else { - std::complex value(torch::real(psialpha_tensor.index({ iat, nl, iks, mu, m })).item(), - torch::imag(psialpha_tensor.index({ iat, nl, iks, mu, m })).item()); - npy_psialpha.push_back(value); + std::complex value(torch::real(phialpha_tensor.index({ iat, nl, iks, mu, m })).item(), + torch::imag(phialpha_tensor.index({ iat, nl, iks, mu, m })).item()); + npy_phialpha.push_back(value); } } } } } } - const std::string file_psialpha = out_dir + "deepks_psialpha.npy"; - npy::SaveArrayAsNumpy(file_psialpha, false, 5, gshape, npy_psialpha); + const std::string file_phialpha = out_dir + "deepks_phialpha.npy"; + npy::SaveArrayAsNumpy(file_phialpha, false, 5, gshape, npy_phialpha); return; } @@ -624,21 +624,21 @@ template void LCAO_deepks_io::save_npy_v_delta_precalc>(con const std::string& out_dir, const int rank); -template void LCAO_deepks_io::save_npy_psialpha(const int nat, +template void LCAO_deepks_io::save_npy_phialpha(const int nat, const int nks, const int nlocal, const int inlmax, const int lmaxd, - const torch::Tensor &psialpha_tensor, + const torch::Tensor &phialpha_tensor, const std::string& out_dir, const int rank); -template void LCAO_deepks_io::save_npy_psialpha>(const int nat, +template void LCAO_deepks_io::save_npy_phialpha>(const int nat, const int nks, const int nlocal, const int inlmax, const int lmaxd, - const torch::Tensor &psialpha_tensor, + const torch::Tensor &phialpha_tensor, const std::string& out_dir, const int rank); diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h index 34398a21d7..9a75f739cd 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h @@ -36,8 +36,8 @@ namespace LCAO_deepks_io /// 10. save_npy_orbital_precalc: orbital_precalc -> deepks_orbpre.npy /// 11. save_npy_h : Hamiltonian /// 12. save_npy_v_delta_precalc : v_delta_precalc -> deepks_vdpre.npy - /// 13. save_npy_psialpha : psialpha -> deepks_psialpha.npy - /// 14. save_npy_gevdm : grav_evdm -> deepks_gevdm.npy, can use psialpha and gevdm to calculate v_delta_precalc + /// 13. save_npy_phialpha : phialpha -> deepks_phialpha.npy + /// 14. save_npy_gevdm : grav_evdm -> deepks_gevdm.npy, can use phialpha and gevdm to calculate v_delta_precalc /// print density matrices template @@ -104,7 +104,7 @@ void save_npy_orbital_precalc(const int nat, const std::string& out_dir, const int rank); -// save Hamiltonian and v_delta_precalc(for deepks_v_delta==1)/psialpha+gevdm(for deepks_v_delta==2) +// save Hamiltonian and v_delta_precalc(for deepks_v_delta==1)/phialpha+gevdm(for deepks_v_delta==2) template void save_npy_h(const std::vector &hamilt, const std::string &h_file, @@ -122,12 +122,12 @@ void save_npy_v_delta_precalc(const int nat, const int rank); template -void save_npy_psialpha(const int nat, +void save_npy_phialpha(const int nat, const int nks, const int nlocal, const int inlmax, const int lmaxd, - const torch::Tensor &psialpha_tensor, + const torch::Tensor &phialpha_tensor, const std::string& out_dir, const int rank); diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp index 62dfc76aef..c1c30989d1 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp @@ -1,40 +1,40 @@ -//wenfei 2022-1-11 -//This file contains subroutines for calculating pdm, +// wenfei 2022-1-11 +// This file contains subroutines for calculating pdm, #include "module_parameter/parameter.h" -//which is defind as sum_mu,nu rho_mu,nu (); -//as well as gdmx, which is the gradient of pdm, defined as -//sum_mu,nu rho_mu,nu d/dX() +// which is defind as sum_mu,nu rho_mu,nu (); +// as well as gdmx, which is the gradient of pdm, defined as +// sum_mu,nu rho_mu,nu d/dX() -//It also contains subroutines for printing pdm and gdmx -//for checking purpose +// It also contains subroutines for printing pdm and gdmx +// for checking purpose -//There are 3 subroutines in this file: -//1. read_projected_DM, which reads pdm from file -//2. cal_projected_DM, which is used for calculating pdm -//3. check_projected_dm, which prints pdm to descriptor.dat +// There are 3 subroutines in this file: +// 1. read_projected_DM, which reads pdm from file +// 2. cal_projected_DM, which is used for calculating pdm +// 3. check_projected_dm, which prints pdm to descriptor.dat #ifdef __DEEPKS #include "LCAO_deepks.h" -#include "module_base/vector3.h" -#include "module_base/timer.h" #include "module_base/constants.h" -#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" #include "module_base/libm/libm.h" +#include "module_base/timer.h" +#include "module_base/vector3.h" +#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" void LCAO_Deepks::read_projected_DM(bool read_pdm_file, bool is_equiv, const Numerical_Orbital& alpha) { - if (read_pdm_file && !this->init_pdm) //for DeePKS NSCF calculation + if (read_pdm_file && !this->init_pdm) // for DeePKS NSCF calculation { int pdm_size = 0; - if(!is_equiv) + if (!is_equiv) { pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); } else { int nproj = 0; - for(int il = 0; il < this->lmaxd + 1; il++) + for (int il = 0; il < this->lmaxd + 1; il++) { nproj += (2 * il + 1) * alpha.getNchi(il); } @@ -48,12 +48,12 @@ void LCAO_Deepks::read_projected_DM(bool read_pdm_file, bool is_equiv, const Num { ModuleBase::WARNING_QUIT("LCAO_Deepks::read_projected_DM", "Cannot find the file deepks_projdm.dat"); } - for(int inl=0;inlinlmax;inl++) + for (int inl = 0; inl < this->inlmax; inl++) { - for(int ind=0;ind> c; + ifs >> c; pdm[inl][ind] = c; } } @@ -61,95 +61,94 @@ void LCAO_Deepks::read_projected_DM(bool read_pdm_file, bool is_equiv, const Num } } -//this subroutine performs the calculation of projected density matrices -//pdm_m,m'=\sum_{mu,nu} rho_{mu,nu} +// this subroutine performs the calculation of projected density matrices +// pdm_m,m'=\sum_{mu,nu} rho_{mu,nu} template -void LCAO_Deepks::cal_projected_DM( - const elecstate::DensityMatrix* dm, - const UnitCell &ucell, - const LCAO_Orbitals &orb, - const Grid_Driver& GridD) +void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD) { ModuleBase::TITLE("LCAO_Deepks", "cal_projected_DM"); // if pdm has been initialized, skip the calculation - if(this->init_pdm) + if (this->init_pdm) { this->init_pdm = false; return; } int pdm_size = 0; - if(!PARAM.inp.deepks_equiv) + if (!PARAM.inp.deepks_equiv) { pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); } else { int nproj = 0; - for(int il = 0; il < this->lmaxd + 1; il++) + for (int il = 0; il < this->lmaxd + 1; il++) { nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); } pdm_size = nproj * nproj; } - //if(dm.size() == 0 || dm[0].size() == 0) + // if(dm.size() == 0 || dm[0].size() == 0) //{ - // return; - //} - ModuleBase::timer::tick("LCAO_Deepks","cal_projected_DM"); + // return; + // } + ModuleBase::timer::tick("LCAO_Deepks", "cal_projected_DM"); - for(int inl=0;inlna; I0++) + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) { - const int iat = ucell.itia2iat(T0,I0); + const int iat = ucell.itia2iat(T0, I0); const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); - //trace alpha orbital + // trace alpha orbital std::vector trace_alpha_row; std::vector trace_alpha_col; - if(!PARAM.inp.deepks_equiv) + if (!PARAM.inp.deepks_equiv) { - int ib=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) + int ib = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { const int inl = this->inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - - for (int m1=0; m1lmaxd + 1; il++) + for (int il = 0; il < this->lmaxd + 1; il++) { nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); } - for(int iproj = 0; iproj < nproj; iproj ++) + for (int iproj = 0; iproj < nproj; iproj++) { - for(int jproj = 0; jproj < nproj; jproj ++) + for (int jproj = 0; jproj < nproj; jproj++) { trace_alpha_row.push_back(iproj); trace_alpha_col.push_back(jproj); @@ -158,115 +157,97 @@ void LCAO_Deepks::cal_projected_DM( } const int trace_alpha_size = trace_alpha_row.size(); - for (int ad1=0; ad1 tau1 = GridD.getAdjacentTau(ad1); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw*PARAM.globalv.npol; - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - const double dist1 = (tau1-tau0).norm() * ucell.lat0; + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; if (dist1 >= Rcut_Alpha + Rcut_AO1) { continue; } - ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); - key_tuple key_1(ibt1,dR1.x,dR1.y,dR1.z); + ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); if constexpr (std::is_same>::value) { - if(this->nlm_save_k[iat].find(key_1) == this->nlm_save_k[iat].end()) - { + if (this->phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr) + { continue; } } auto row_indexes = pv->get_indexes_row(ibt1); const int row_size = row_indexes.size(); - if(row_size == 0) - { + if (row_size == 0) + { continue; } // no possible to unexist key std::vector s_1t(trace_alpha_size * row_size); std::vector g_1dmt(trace_alpha_size * row_size, 0.0); - for(int irow=0;irow::value) - { - row_ptr = this->nlm_save[iat][ad1][row_indexes[irow]][0].data(); - } - else - { - row_ptr = this->nlm_save_k[iat][key_1][row_indexes[irow]][0].data(); - } + hamilt::BaseMatrix* row_ptr = this->phialpha[0]->find_matrix(iat, ibt1, dR1); - for(int i=0;iget_value(row_indexes[irow], trace_alpha_row[i]); } } - for (int ad2=0; ad2 < GridD.getAdjacentNum()+1 ; ad2++) - { - const int T2 = GridD.getType(ad2); - const int I2 = GridD.getNatom(ad2); - const int ibt2 = ucell.itia2iat(T2,I2); - const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); - const Atom* atom2 = &ucell.atoms[T2]; - const int nw2_tot = atom2->nw*PARAM.globalv.npol; - - ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); - key_tuple key_2(ibt2,dR2.x,dR2.y,dR2.z); + for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) + { + const int T2 = GridD.getType(ad2); + const int I2 = GridD.getNatom(ad2); + const int ibt2 = ucell.itia2iat(T2, I2); + const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); + const Atom* atom2 = &ucell.atoms[T2]; + const int nw2_tot = atom2->nw * PARAM.globalv.npol; + + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); if constexpr (std::is_same>::value) { - if (this->nlm_save_k[iat].find(key_2) == this->nlm_save_k[iat].end()) - { + if (this->phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) + { continue; } } - const double Rcut_AO2 = orb.Phi[T2].getRcut(); - const double dist2 = (tau2-tau0).norm() * ucell.lat0; + const double Rcut_AO2 = orb.Phi[T2].getRcut(); + const double dist2 = (tau2 - tau0).norm() * ucell.lat0; - if (dist2 >= Rcut_Alpha + Rcut_AO2) - { - continue; - } + if (dist2 >= Rcut_Alpha + Rcut_AO2) + { + continue; + } auto col_indexes = pv->get_indexes_col(ibt2); const int col_size = col_indexes.size(); - if(col_size == 0) - { + if (col_size == 0) + { continue; } std::vector s_2t(trace_alpha_size * col_size); // no possible to unexist key - for(int icol=0;icol::value) - { - col_ptr = this->nlm_save[iat][ad2][col_indexes[icol]][0].data(); - } - else - { - col_ptr = this->nlm_save_k[iat][key_2][col_indexes[icol]][0].data(); - } - for(int i=0;i* col_ptr = this->phialpha[0]->find_matrix(iat, ibt2, dR2); + for (int i = 0; i < trace_alpha_size; i++) { - s_2t[i * col_size + icol] = col_ptr[trace_alpha_col[i]]; + s_2t[i * col_size + icol] = col_ptr->get_value(col_indexes[icol], trace_alpha_col[i]); } } // prepare DM_gamma from DMR - std::vector dm_array(row_size*col_size, 0.0); + std::vector dm_array(row_size * col_size, 0.0); const double* dm_current = nullptr; - for(int is=0;isget_DMR_vector().size();is++) + for (int is = 0; is < dm->get_DMR_vector().size(); is++) { int dRx, dRy, dRz; if constexpr (std::is_same::value) @@ -282,92 +263,99 @@ void LCAO_Deepks::cal_projected_DM( dRz = dR2.z - dR1.z; } auto* tmp = dm->get_DMR_vector()[is]->find_matrix(ibt1, ibt2, dRx, dRy, dRz); - if(tmp == nullptr) + if (tmp == nullptr) { - // in case of no deepks_scf but out_deepks_label, size of DMR would mismatch with deepks-orbitals - dm_current = nullptr; + // in case of no deepks_scf but out_deepks_label, size of DMR would mismatch with + // deepks-orbitals + dm_current = nullptr; break; } dm_current = tmp->get_pointer(); - for(int idm=0;idminl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - - for (int m1=0; m1lmaxd + 1; il++) + for (int il = 0; il < this->lmaxd + 1; il++) { nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); } - for(int iproj = 0; iproj < nproj; iproj ++) + for (int iproj = 0; iproj < nproj; iproj++) { - for(int jproj = 0; jproj < nproj; jproj ++) + for (int jproj = 0; jproj < nproj; jproj++) { - pdm[iat][iproj * nproj + jproj] += - ddot_(&row_size, g_1dmt.data()+index*row_size, &inc, s_1t.data()+index*row_size, &inc); - index ++; + pdm[iat][iproj * nproj + jproj] += ddot_(&row_size, + g_1dmt.data() + index * row_size, + &inc, + s_1t.data() + index * row_size, + &inc); + index++; } } } - }//ad1 - }//I0 - }//T0 + } // ad1 + } // I0 + } // T0 #ifdef __MPI - allsum_deepks(this->inlmax,pdm_size,this->pdm); + allsum_deepks(this->inlmax, pdm_size, this->pdm); #endif - ModuleBase::timer::tick("LCAO_Deepks","cal_projected_DM"); + ModuleBase::timer::tick("LCAO_Deepks", "cal_projected_DM"); return; } @@ -377,10 +365,10 @@ void LCAO_Deepks::check_projected_dm() std::ofstream ofs(file_projdm.c_str()); const int pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); - ofs<( - const elecstate::DensityMatrix* dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); +template void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD); template void LCAO_Deepks::cal_projected_DM>( - const elecstate::DensityMatrix, double>* dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, + const elecstate::DensityMatrix, double>* dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, const Grid_Driver& GridD); #endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_phialpha.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_phialpha.cpp new file mode 100644 index 0000000000..c73dbaffa3 --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_phialpha.cpp @@ -0,0 +1,341 @@ +// wenfei 2022-1-11 +// This file contains 2 subroutines: +// 1. build_phialpha, which calculates the overlap +// between atomic basis and projector alpha : +// which will be used in calculating pdm, gdmx, H_V_delta, F_delta; +// 2. check_phialpha, which prints the results into .dat files +// for checking + +#ifdef __DEEPKS + +#include "LCAO_deepks.h" +#include "module_base/timer.h" +#include "module_base/vector3.h" +#include "module_parameter/parameter.h" + +void LCAO_Deepks::allocate_phialpha(const bool& cal_deri, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD) +{ + ModuleBase::TITLE("LCAO_Deepks", "allocate_phialpha"); + + this->phialpha.resize(cal_deri ? 4 : 1); + + this->phialpha[0] = new hamilt::HContainer(pv); // phialpha is always real + // Do not use fix_gamma, since it may find wrong matrix for gamma-only case in DeePKS + + // cutoff for alpha is same for all types of atoms + const double Rcut_Alpha = orb.Alpha[0].getRcut(); + + // Total number of atomic basis of projected orbitals + int nw_alpha = 0; + for (int l = 0; l <= orb.Alpha[0].getLmax(); l++) + { + nw_alpha += orb.Alpha[0].getNchi(l) * (2 * l + 1); + } + + for (int T0 = 0; T0 < ucell.ntype; T0++) + { + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) + { + const int iat = ucell.itia2iat(T0, I0); + auto tau_a = atom0->tau[I0]; + GridD.Find_atom(ucell, tau_a, T0, I0); + for (int ad = 0; ad < GridD.getAdjacentNum() + 1; ++ad) + { + const int T1 = GridD.getType(ad); + const int I1 = GridD.getNatom(ad); + const int ibt = ucell.itia2iat(T1, I1); + auto tau_b = GridD.getAdjacentTau(ad); + const int iw1_start = ucell.itiaiw2iwt(T1, I1, 0); + const Atom* atom1 = &ucell.atoms[T1]; + auto R_index = GridD.getBox(ad); + + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + const double dist = (tau_b - tau_a).norm() * ucell.lat0; + if (dist > Rcut_Alpha + Rcut_AO1) + { + continue; + } + + hamilt::AtomPair pair(iat, ibt, R_index, pv); + // Notice: in AtomPair, the usage is set_size(ncol, nrow) + pair.set_size(nw_alpha, atom1->nw * PARAM.globalv.npol); + this->phialpha[0]->insert_pair(pair); + } + } + } + + this->phialpha[0]->allocate(nullptr, true); + // whether to calculate the derivative of phialpha + if (cal_deri) + { + for (int i = 1; i < 4; ++i) + { + this->phialpha[i] = new hamilt::HContainer(*this->phialpha[0], nullptr); // copy constructor + } + } + return; +} + +void LCAO_Deepks::build_phialpha(const bool& cal_deri, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const TwoCenterIntegrator& overlap_orb_alpha) +{ + ModuleBase::TITLE("LCAO_Deepks", "build_phialpha"); + ModuleBase::timer::tick("LCAO_Deepks", "build_phialpha"); + + // cutoff for alpha is same for all types of atoms + const double Rcut_Alpha = orb.Alpha[0].getRcut(); + + // Total number of atomic basis of projected orbitals + // nw_alpha will be used frequently, better to add a function in Numerical Orbital to get it + int nw_alpha = 0; + for (int l = 0; l <= orb.Alpha[0].getLmax(); l++) + { + nw_alpha += orb.Alpha[0].getNchi(l) * (2 * l + 1); + } + + for (int T0 = 0; T0 < ucell.ntype; T0++) + { + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) + { + const int iat = ucell.itia2iat(T0, I0); + auto tau_a = atom0->tau[I0]; + GridD.Find_atom(ucell, tau_a, T0, I0); + for (int ad = 0; ad < GridD.getAdjacentNum() + 1; ++ad) + { + const int T1 = GridD.getType(ad); + const int I1 = GridD.getNatom(ad); + const int ibt = ucell.itia2iat(T1, I1); + auto tau_b = GridD.getAdjacentTau(ad); + const int iw1_start = ucell.itiaiw2iwt(T1, I1, 0); + const Atom* atom1 = &ucell.atoms[T1]; + auto R_index = GridD.getBox(ad); + int R[3] = {R_index.x, R_index.y, R_index.z}; + + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + const double dist = (tau_b - tau_a).norm() * ucell.lat0; + if (dist > Rcut_Alpha + Rcut_AO1) + { + continue; + } + + double* data_pointer = this->phialpha[0]->data(iat, ibt, R); + std::vector grad_pointer(3); + if (cal_deri) + { + for (int i = 0; i < 3; ++i) + { + grad_pointer[i] = this->phialpha[i + 1]->data(iat, ibt, R); + } + } + + // Calculate phialpha + // Get all indexes of atomic basis on the neighbour atom in this core + // Notice that atom pair (a,b) and (b,a) are different when the former is changed to projected orbitals + // So we need both row and col indexes for complete calculation + auto all_indexes = pv->get_indexes_row(ibt); + auto col_indexes = pv->get_indexes_col(ibt); + all_indexes.insert(all_indexes.end(), col_indexes.begin(), col_indexes.end()); + std::sort(all_indexes.begin(), all_indexes.end()); + all_indexes.erase(std::unique(all_indexes.begin(), all_indexes.end()), all_indexes.end()); // for unique + + // inner loop : all atomic basis on the adjacent atom ad + for (int iw1l = 0; iw1l < all_indexes.size(); iw1l += PARAM.globalv.npol) + { + const int iw1 = all_indexes[iw1l] / PARAM.globalv.npol; + + std::vector> nlm; + // 2D, dim 0 contains the overlap + // dim 1-3 contains the gradient of overlap + + const int L1 = atom1->iw2l[iw1]; + const int N1 = atom1->iw2n[iw1]; + const int m1 = atom1->iw2m[iw1]; + + // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) + const int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; + + const ModuleBase::Vector3 dtau = tau_a - tau_b; + const int T0_fixed = 0; // All the projected orbitals are the same, use 0 here + overlap_orb_alpha.snap(T1, L1, N1, M1, T0_fixed, dtau * ucell.lat0, cal_deri, nlm); + + const int index_begin = all_indexes[iw1l] * nw_alpha * PARAM.globalv.npol; + for (int iw0 = 0; iw0 < nw_alpha; iw0++) + { + data_pointer[index_begin + iw0] = nlm[0][iw0]; + if (cal_deri) + { + grad_pointer[0][index_begin + iw0] = nlm[1][iw0]; + grad_pointer[1][index_begin + iw0] = nlm[2][iw0]; + grad_pointer[2][index_begin + iw0] = nlm[3][iw0]; + } + if (PARAM.globalv.npol == 2) + { + data_pointer[index_begin + iw0 + nw_alpha] = nlm[0][iw0]; + if (cal_deri) + { + grad_pointer[0][index_begin + iw0 + nw_alpha] = nlm[1][iw0]; + grad_pointer[1][index_begin + iw0 + nw_alpha] = nlm[2][iw0]; + grad_pointer[2][index_begin + iw0 + nw_alpha] = nlm[3][iw0]; + } + } + } + } // end iw + } + } + } + + ModuleBase::timer::tick("LCAO_Deepks", "build_phialpha"); + return; +} + +void LCAO_Deepks::check_phialpha(const bool& cal_deri, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD) +{ + ModuleBase::TITLE("LCAO_Deepks", "check_phialpha"); + ModuleBase::timer::tick("LCAO_Deepks", "check_phialpha"); + + const double Rcut_Alpha = orb.Alpha[0].getRcut(); + // same for all types of atoms + int nw_alpha = 0; + for (int l = 0; l <= orb.Alpha[0].getLmax(); l++) + { + nw_alpha += orb.Alpha[0].getNchi(l) * (2 * l + 1); + } + + std::ofstream ofs("phialpha.dat"); + std::ofstream ofs_x("dphialpha_x.dat"); + std::ofstream ofs_y("dphialpha_y.dat"); + std::ofstream ofs_z("dphialpha_z.dat"); + + ofs << std::setprecision(10); + ofs_x << std::setprecision(10); + ofs_y << std::setprecision(10); + ofs_z << std::setprecision(10); + + for (int T0 = 0; T0 < ucell.ntype; T0++) + { + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) + { + const int iat = ucell.itia2iat(T0, I0); + //======================================================= + // Step 1 : + // saves , where alpha runs over all projectors + // and phi runs over atomic basis sets on the current core + //======================================================= + + const ModuleBase::Vector3 tau0 = atom0->tau[I0]; + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); + + ofs << "iat : " << iat << std::endl; + ofs_x << "iat : " << iat << std::endl; + ofs_y << "iat : " << iat << std::endl; + ofs_z << "iat : " << iat << std::endl; + + for (int ad = 0; ad < GridD.getAdjacentNum() + 1; ++ad) + { + const int T1 = GridD.getType(ad); + const int I1 = GridD.getNatom(ad); + const int start1 = ucell.itiaiw2iwt(T1, I1, 0); + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + + const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad); + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; + + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; + + if (dist1 > Rcut_Alpha + Rcut_AO1) + { + continue; + } + + int ibt = ucell.itia2iat(T1, I1); + int R[3]; + + ofs << "ad : " << ad << " " << dist1 << std::endl; + ofs_x << "ad : " << ad << " " << dist1 << std::endl; + ofs_y << "ad : " << ad << " " << dist1 << std::endl; + ofs_z << "ad : " << ad << " " << dist1 << std::endl; + + R[0] = GridD.getBox(ad).x; + R[1] = GridD.getBox(ad).y; + R[2] = GridD.getBox(ad).z; + + if (!PARAM.globalv.gamma_only_local) + { + ofs << "R : " << R[0] << " " << R[1] << " " << R[2] << std::endl; + ofs_x << "R : " << R[0] << " " << R[1] << " " << R[2] << std::endl; + ofs_y << "R : " << R[0] << " " << R[1] << " " << R[2] << std::endl; + ofs_z << "R : " << R[0] << " " << R[1] << " " << R[2] << std::endl; + } + + const double* data_pointer = this->phialpha[0]->data(iat, ibt, R); + std::vector grad_pointer(3, nullptr); + if (cal_deri) + { + grad_pointer[0] = this->phialpha[1]->data(iat, ibt, R); + grad_pointer[1] = this->phialpha[2]->data(iat, ibt, R); + grad_pointer[2] = this->phialpha[3]->data(iat, ibt, R); + } + + for (int iw1 = 0; iw1 < nw1_tot; ++iw1) + { + const int iw1_all = start1 + iw1; + ofs << "iw : " << iw1_all << std::endl; + ofs_x << "iw : " << iw1_all << std::endl; + ofs_y << "iw : " << iw1_all << std::endl; + ofs_z << "iw : " << iw1_all << std::endl; + const int iw1_local = pv->global2local_row(iw1_all); + const int iw2_local = pv->global2local_col(iw1_all); + if (iw1_local < 0 && iw2_local < 0) + continue; + + for (int ind = 0; ind < nw_alpha; ind++) + { + ofs << data_pointer[iw1 * nw_alpha + ind] << " "; + if (cal_deri) + { + ofs_x << grad_pointer[0][iw1 * nw_alpha + ind] << " "; + ofs_y << grad_pointer[1][iw1 * nw_alpha + ind] << " "; + ofs_z << grad_pointer[2][iw1 * nw_alpha + ind] << " "; + } + // 6 numbers per line + if (ind % 6 == 5) + { + ofs << "\n"; + if (cal_deri) + { + ofs_x << "\n"; + ofs_y << "\n"; + ofs_z << "\n"; + } + } + } + ofs << std::endl; + if (cal_deri) + { + ofs_x << std::endl; + ofs_y << std::endl; + ofs_z << std::endl; + } + } // end iw + } // end ad + } // end I0 + } // end T0 + + ModuleBase::timer::tick("LCAO_Deepks", "check_phialpha"); + return; +} + +#endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_psialpha.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_psialpha.cpp deleted file mode 100644 index dcd8440eea..0000000000 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_psialpha.cpp +++ /dev/null @@ -1,279 +0,0 @@ -// wenfei 2022-1-11 -// This file contains 2 subroutines: -// 1. build_psialpha, which calculates the overlap -// between atomic basis and projector alpha : -// which will be used in calculating pdm, gdmx, H_V_delta, F_delta; -// 2. check_psialpha, which prints the results into .dat files -// for checking - -#ifdef __DEEPKS - -#include "LCAO_deepks.h" -#include "module_base/timer.h" -#include "module_base/vector3.h" -#include "module_parameter/parameter.h" - -void LCAO_Deepks::build_psialpha(const bool& calc_deri, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD, - const TwoCenterIntegrator& overlap_orb_alpha) -{ - ModuleBase::TITLE("LCAO_Deepks", "build_psialpha"); - ModuleBase::timer::tick("LCAO_Deepks", "build_psialpha"); - - // cutoff for alpha is same for all types of atoms - const double Rcut_Alpha = orb.Alpha[0].getRcut(); - - int job; - if (!calc_deri) - { - job = 0; - } - else - { - job = 1; - } - - for (int T0 = 0; T0 < ucell.ntype; T0++) - { - Atom* atom0 = &ucell.atoms[T0]; - for (int I0 = 0; I0 < atom0->na; I0++) - { - // iat: atom index on which |alpha> is located - const int iat = ucell.itia2iat(T0, I0); - const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); - - if (PARAM.globalv.gamma_only_local) - { - this->nlm_save[iat].resize(GridD.getAdjacentNum() + 1); - } - // outermost loop : find all adjacent atoms - for (int ad = 0; ad < GridD.getAdjacentNum() + 1; ++ad) - { - const int T1 = GridD.getType(ad); - const int I1 = GridD.getNatom(ad); - const int ibt = ucell.itia2iat(T1, I1); - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - - const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad); - const Atom* atom1 = &ucell.atoms[T1]; - - std::unordered_map>> nlm_cur; - if (PARAM.globalv.gamma_only_local) - { - this->nlm_save[iat][ad].clear(); - } - else - { - nlm_cur.clear(); - } - - const double dist1 = (tau1 - tau0).norm() * ucell.lat0; - - if (dist1 > Rcut_Alpha + Rcut_AO1) - { - continue; - } - - auto all_indexes = pv->get_indexes_row(ibt); - auto col_indexes = pv->get_indexes_col(ibt); - // insert col_indexes into all_indexes to get universal set with no repeat elements - all_indexes.insert(all_indexes.end(), col_indexes.begin(), col_indexes.end()); - std::sort(all_indexes.begin(), all_indexes.end()); - all_indexes.erase(std::unique(all_indexes.begin(), all_indexes.end()), all_indexes.end()); - - // middle loop : all atomic basis on the adjacent atom ad - for (int iw1l = 0; iw1l < all_indexes.size(); iw1l += PARAM.globalv.npol) - { - const int iw1 = all_indexes[iw1l] / PARAM.globalv.npol; - std::vector> nlm; - // 2D, dim 0 contains the overlap - // dim 1-3 contains the gradient of overlap - - int L1 = atom1->iw2l[iw1]; - int N1 = atom1->iw2n[iw1]; - int m1 = atom1->iw2m[iw1]; - - // convert m (0,1,...2l) to M (-l, -l+1, ..., l-1, l) - int M1 = (m1 % 2 == 0) ? -m1 / 2 : (m1 + 1) / 2; - - ModuleBase::Vector3 dtau = ucell.atoms[T0].tau[I0] - tau1; - overlap_orb_alpha.snap(T1, L1, N1, M1, 0, dtau * ucell.lat0, calc_deri, nlm); - - if (PARAM.globalv.gamma_only_local) - { - this->nlm_save[iat][ad].insert({all_indexes[iw1l], nlm}); - } - else - { - nlm_cur.insert({all_indexes[iw1l], nlm}); - if (PARAM.globalv.npol == 2) - nlm_cur.insert({all_indexes[iw1l + 1], nlm}); - } - } // end iw - - if (!PARAM.globalv.gamma_only_local) - { - const int rx = GridD.getBox(ad).x; - const int ry = GridD.getBox(ad).y; - const int rz = GridD.getBox(ad).z; - key_tuple key_1(ibt, rx, ry, rz); - this->nlm_save_k[iat][key_1] = nlm_cur; - } - } // end ad - } // end I0 - } // end T0 - - ModuleBase::timer::tick("LCAO_Deepks", "build_psialpha"); - return; -} - -void LCAO_Deepks::check_psialpha(const bool& calc_deri, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD) -{ - ModuleBase::TITLE("LCAO_Deepks", "check_psialpha"); - ModuleBase::timer::tick("LCAO_Deepks", "check_psialpha"); - - const double Rcut_Alpha = orb.Alpha[0].getRcut(); - // same for all types of atoms - int job; - if (!calc_deri) - { - job = 0; - } - else - { - job = 1; - } - - std::ofstream ofs("psialpha.dat"); - std::ofstream ofs_x("dpsialpha_x.dat"); - std::ofstream ofs_y("dpsialpha_y.dat"); - std::ofstream ofs_z("dpsialpha_z.dat"); - - ofs << std::setprecision(10); - ofs_x << std::setprecision(10); - ofs_y << std::setprecision(10); - ofs_z << std::setprecision(10); - - for (int T0 = 0; T0 < ucell.ntype; T0++) - { - Atom* atom0 = &ucell.atoms[T0]; - for (int I0 = 0; I0 < atom0->na; I0++) - { - const int iat = ucell.itia2iat(T0, I0); - //======================================================= - // Step 1 : - // saves , where alpha runs over all projectors - // and psi runs over atomic basis sets on the current core - //======================================================= - - const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); - - ofs << "iat : " << iat << std::endl; - ofs_x << "iat : " << iat << std::endl; - ofs_y << "iat : " << iat << std::endl; - ofs_z << "iat : " << iat << std::endl; - - for (int ad = 0; ad < GridD.getAdjacentNum() + 1; ++ad) - { - const int T1 = GridD.getType(ad); - const int I1 = GridD.getNatom(ad); - const int start1 = ucell.itiaiw2iwt(T1, I1, 0); - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - - const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw * PARAM.globalv.npol; - - const double dist1 = (tau1 - tau0).norm() * ucell.lat0; - - if (dist1 > Rcut_Alpha + Rcut_AO1) - { - continue; - } - - int ibt, rx, ry, rz; - if (PARAM.globalv.gamma_only_local) - { - ofs << "ad : " << ad << " " << dist1 << std::endl; - ofs_x << "ad : " << ad << " " << dist1 << std::endl; - ofs_y << "ad : " << ad << " " << dist1 << std::endl; - ofs_z << "ad : " << ad << " " << dist1 << std::endl; - } - else - { - ibt = ucell.itia2iat(T1, I1); - rx = GridD.getBox(ad).x; - ry = GridD.getBox(ad).y; - rz = GridD.getBox(ad).z; - ofs << "key : " << ibt << " " << rx << " " << ry << " " << rz << std::endl; - ofs_x << "key : " << ibt << " " << rx << " " << ry << " " << rz << std::endl; - ofs_y << "key : " << ibt << " " << rx << " " << ry << " " << rz << std::endl; - ofs_z << "key : " << ibt << " " << rx << " " << ry << " " << rz << std::endl; - } - - for (int iw1 = 0; iw1 < nw1_tot; ++iw1) - { - const int iw1_all = start1 + iw1; - ofs << "iw : " << iw1_all << std::endl; - ofs_x << "iw : " << iw1_all << std::endl; - ofs_y << "iw : " << iw1_all << std::endl; - ofs_z << "iw : " << iw1_all << std::endl; - const int iw1_local = pv->global2local_row(iw1_all); - const int iw2_local = pv->global2local_col(iw1_all); - if (iw1_local < 0 && iw2_local < 0) - continue; - const int iw1_0 = iw1 / PARAM.globalv.npol; - - std::vector> nlm; - - if (PARAM.globalv.gamma_only_local) - { - nlm = this->nlm_save[iat][ad][iw1]; - } - else - { - key_tuple key_1(ibt, rx, ry, rz); - nlm = this->nlm_save_k[iat][key_1][iw1]; - } - - for (int ind = 0; ind < nlm[0].size(); ind++) - { - ofs << nlm[0][ind] << " "; - if (ind % 6 == 5) - ofs << "\n"; - if (calc_deri) - { - ofs_x << nlm[1][ind] << " "; - if (ind % 6 == 5) - ofs_x << "\n"; - ofs_y << nlm[2][ind] << " "; - if (ind % 6 == 5) - ofs_y << "\n"; - ofs_z << nlm[3][ind] << " "; - if (ind % 6 == 5) - ofs_z << "\n"; - } - } - ofs << std::endl; - if (calc_deri) - { - ofs_x << std::endl; - ofs_y << std::endl; - ofs_z << std::endl; - } - } // end iw - } // end ad - } // end I0 - } // end T0 - - ModuleBase::timer::tick("LCAO_Deepks", "check_psialpha"); - return; -} -#endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp index 5dbec1d76d..350c3db0e7 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp @@ -1,17 +1,17 @@ -//This file contains interfaces with libtorch, -//including loading of model and calculating gradients -//as well as subroutines that prints the results for checking - -//The file contains 8 subroutines: -// cal_gvepsl : gvepsl is used for training with stress label, which is derivative of -// descriptors wrt strain tensor, calculated by -// d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdm_epsl * gvdm -// using einsum -// cal_gvdm : d(des)/d(pdm) -// calculated using torch::autograd::grad -// load_model : loads model for applying V_delta -// prepare_psialpha : prepare psialpha for outputting npy file -// prepare_gevdm : prepare gevdm for outputting npy file +// This file contains interfaces with libtorch, +// including loading of model and calculating gradients +// as well as subroutines that prints the results for checking + +// The file contains 8 subroutines: +// cal_gvepsl : gvepsl is used for training with stress label, which is derivative of +// descriptors wrt strain tensor, calculated by +// d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdm_epsl * gvdm +// using einsum +// cal_gvdm : d(des)/d(pdm) +// calculated using torch::autograd::grad +// load_model : loads model for applying V_delta +// prepare_phialpha : prepare phialpha for outputting npy file +// prepare_gevdm : prepare gevdm for outputting npy file #ifdef __DEEPKS @@ -25,48 +25,52 @@ #include "module_parameter/parameter.h" // calculates stress of descriptors from gradient of projected density matrices -void LCAO_Deepks::cal_gvepsl(const int nat) { +void LCAO_Deepks::cal_gvepsl(const int nat) +{ ModuleBase::TITLE("LCAO_Deepks", "cal_gvepsl"); // preconditions this->cal_gvdm(nat); - if (!gdmepsl_vector.empty()) { + if (!gdmepsl_vector.empty()) + { gdmepsl_vector.erase(gdmepsl_vector.begin(), gdmepsl_vector.end()); } // gdmr_vector : nat(derivative) * 3 * inl(projector) * nm * nm - if (GlobalV::MY_RANK == 0) { + if (GlobalV::MY_RANK == 0) + { // make gdmx as tensor int nlmax = this->inlmax / nat; - for (int nl = 0; nl < nlmax; ++nl) { + for (int nl = 0; nl < nlmax; ++nl) + { std::vector bmmv; // for (int ipol=0;ipol<6;++ipol) //{ // std::vector xmmv; - for (int i = 0; i < 6; ++i) { + for (int i = 0; i < 6; ++i) + { std::vector ammv; - for (int iat = 0; iat < nat; ++iat) { + for (int iat = 0; iat < nat; ++iat) + { int inl = iat * nlmax + nl; int nm = 2 * this->inl_l[inl] + 1; std::vector mmv; - for (int m1 = 0; m1 < nm; ++m1) { - for (int m2 = 0; m2 < nm; ++m2) { + for (int m1 = 0; m1 < nm; ++m1) + { + for (int m2 = 0; m2 < nm; ++m2) + { mmv.push_back(this->gdm_epsl[i][inl][m1 * nm + m2]); } } // nm^2 torch::Tensor mm - = torch::tensor( - mmv, - torch::TensorOptions().dtype(torch::kFloat64)) - .reshape({nm, nm}); // nm*nm + = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64)).reshape({nm, nm}); // nm*nm ammv.push_back(mm); - } - torch::Tensor bmm = torch::stack(ammv, 0); // nat*nm*nm - bmmv.push_back(bmm); - } + } + torch::Tensor bmm = torch::stack(ammv, 0); // nat*nm*nm + bmmv.push_back(bmm); + } // torch::Tensor bmm = torch::stack(xmmv, 0); //3*nat*nm*nm // bmmv.push_back(bmm); //} - this->gdmepsl_vector.push_back( - torch::stack(bmmv, 0)); // nbt*3*nat*nm*nm + this->gdmepsl_vector.push_back(torch::stack(bmmv, 0)); // nbt*3*nat*nm*nm } assert(this->gdmepsl_vector.size() == nlmax); @@ -75,46 +79,45 @@ void LCAO_Deepks::cal_gvepsl(const int nat) { // gevdm_vector : a:inl * v:nm (descriptor) * m:nm (pdm, dim1) * n:nm // (pdm, dim2) gvepsl_vector : b:npol * a:inl(projector) * // m:nm(descriptor) - std::vector gvepsl_vector; - for (int nl = 0; nl < nlmax; ++nl) { - gvepsl_vector.push_back( - at::einsum("bamn, avmn->bav", - {this->gdmepsl_vector[nl], this->gevdm_vector[nl]})); - } - - // cat nv-> \sum_nl(nv) = \sum_nl(nm_nl)=des_per_atom - // concatenate index a(inl) and m(nm) - this->gvepsl_tensor = torch::cat(gvepsl_vector, -1); - assert(this->gvepsl_tensor.size(0) == 6); - assert(this->gvepsl_tensor.size(1) == nat); - assert(this->gvepsl_tensor.size(2) == this->des_per_atom); - } - - return; -} + std::vector gvepsl_vector; + for (int nl = 0; nl < nlmax; ++nl) + { + gvepsl_vector.push_back(at::einsum("bamn, avmn->bav", {this->gdmepsl_vector[nl], this->gevdm_vector[nl]})); + } + // cat nv-> \sum_nl(nv) = \sum_nl(nm_nl)=des_per_atom + // concatenate index a(inl) and m(nm) + this->gvepsl_tensor = torch::cat(gvepsl_vector, -1); + assert(this->gvepsl_tensor.size(0) == 6); + assert(this->gvepsl_tensor.size(1) == nat); + assert(this->gvepsl_tensor.size(2) == this->des_per_atom); + } + + return; +} // dDescriptor / dprojected density matrix -void LCAO_Deepks::cal_gvdm(const int nat) { +void LCAO_Deepks::cal_gvdm(const int nat) +{ ModuleBase::TITLE("LCAO_Deepks", "cal_gvdm"); - if (!gevdm_vector.empty()) { + if (!gevdm_vector.empty()) + { gevdm_vector.erase(gevdm_vector.begin(), gevdm_vector.end()); } // cal gevdm(d(EigenValue(D))/dD) int nlmax = inlmax / nat; - for (int nl = 0; nl < nlmax; ++nl) { + for (int nl = 0; nl < nlmax; ++nl) + { std::vector avmmv; - for (int iat = 0; iat < nat; ++iat) { + for (int iat = 0; iat < nat; ++iat) + { int inl = iat * nlmax + nl; int nm = 2 * this->inl_l[inl] + 1; // repeat each block for nm times in an additional dimension - torch::Tensor tmp_x - = this->pdm_tensor[inl].reshape({nm, nm}).unsqueeze(0).repeat( - {nm, 1, 1}); + torch::Tensor tmp_x = this->pdm_tensor[inl].reshape({nm, nm}).unsqueeze(0).repeat({nm, 1, 1}); // torch::Tensor tmp_y = std::get<0>(torch::symeig(tmp_x, true)); torch::Tensor tmp_y = std::get<0>(torch::linalg::eigh(tmp_x, "U")); - torch::Tensor tmp_yshell - = torch::eye(nm, torch::TensorOptions().dtype(torch::kFloat64)); + torch::Tensor tmp_yshell = torch::eye(nm, torch::TensorOptions().dtype(torch::kFloat64)); std::vector tmp_rpt; // repeated-pdm-tensor (x) std::vector tmp_rdt; // repeated-d-tensor (y) std::vector tmp_gst; // gvx-shell @@ -122,13 +125,12 @@ void LCAO_Deepks::cal_gvdm(const int nat) { tmp_rdt.push_back(tmp_y); tmp_gst.push_back(tmp_yshell); std::vector tmp_res; - tmp_res - = torch::autograd::grad(tmp_rdt, - tmp_rpt, - tmp_gst, - false, - false, - /*allow_unused*/ true); // nm(v)**nm*nm + tmp_res = torch::autograd::grad(tmp_rdt, + tmp_rpt, + tmp_gst, + false, + false, + /*allow_unused*/ true); // nm(v)**nm*nm avmmv.push_back(tmp_res[0]); } torch::Tensor avmm = torch::stack(avmmv, 0); // nat*nv**nm*nm @@ -138,12 +140,15 @@ void LCAO_Deepks::cal_gvdm(const int nat) { return; } -void LCAO_Deepks::load_model(const std::string& deepks_model) { +void LCAO_Deepks::load_model(const std::string& deepks_model) +{ ModuleBase::TITLE("LCAO_Deepks", "load_model"); - try { + try + { this->module = torch::jit::load(deepks_model); - } catch (const c10::Error& e) + } + catch (const c10::Error& e) { std::cerr << "error loading the model" << std::endl; @@ -152,9 +157,9 @@ void LCAO_Deepks::load_model(const std::string& deepks_model) { return; } -// prepare_psialpha and prepare_gevdm for deepks_v_delta = 2 +// prepare_phialpha and prepare_gevdm for deepks_v_delta = 2 template -void LCAO_Deepks::prepare_psialpha(const int nlocal, +void LCAO_Deepks::prepare_phialpha(const int nlocal, const int nat, const int nks, const std::vector>& kvec_d, @@ -162,160 +167,152 @@ void LCAO_Deepks::prepare_psialpha(const int nlocal, const LCAO_Orbitals& orb, const Grid_Driver& GridD) { - ModuleBase::TITLE("LCAO_Deepks", "prepare_psialpha"); - int nlmax = this->inlmax/nat; - int mmax = 2*this->lmaxd+1; + ModuleBase::TITLE("LCAO_Deepks", "prepare_phialpha"); + int nlmax = this->inlmax / nat; + int mmax = 2 * this->lmaxd + 1; if constexpr (std::is_same::value) { - this->psialpha_tensor = torch::zeros({ nat, nlmax, nks, nlocal, mmax }, torch::kFloat64); // support gamma-only + this->phialpha_tensor = torch::zeros({nat, nlmax, nks, nlocal, mmax}, torch::kFloat64); // support gamma-only } else { - this->psialpha_tensor = torch::zeros({ nat, nlmax, nks, nlocal, mmax }, torch::kComplexDouble); // support multi-k + this->phialpha_tensor = torch::zeros({nat, nlmax, nks, nlocal, mmax}, torch::kComplexDouble); // support multi-k } - //cutoff for alpha is same for all types of atoms + // cutoff for alpha is same for all types of atoms const double Rcut_Alpha = orb.Alpha[0].getRcut(); for (int T0 = 0; T0 < ucell.ntype; T0++) { - Atom* atom0 = &ucell.atoms[T0]; - for (int I0 =0; I0< atom0->na; I0++) + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) { - //iat: atom index on which |alpha> is located - const int iat = ucell.itia2iat(T0,I0); - const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); + // iat: atom index on which |alpha> is located + const int iat = ucell.itia2iat(T0, I0); + const ModuleBase::Vector3 tau0 = atom0->tau[I0]; + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); - //outermost loop : find all adjacent atoms - for (int ad=0; ad tau1 = GridD.getAdjacentTau(ad); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw*PARAM.globalv.npol; + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; - const double dist1 = (tau1-tau0).norm() * ucell.lat0; + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; - if (dist1 > Rcut_Alpha + Rcut_AO1) - { - continue; - } - - ModuleBase::Vector3 dR(GridD.getBox(ad).x, - GridD.getBox(ad).y, - GridD.getBox(ad).z); + if (dist1 > Rcut_Alpha + Rcut_AO1) + { + continue; + } - key_tuple key(ibt, dR.x, dR.y, dR.z); + ModuleBase::Vector3 dR(GridD.getBox(ad).x, GridD.getBox(ad).y, GridD.getBox(ad).z); if constexpr (std::is_same>::value) { - if (this->nlm_save_k[iat].find(key) - == this->nlm_save_k[iat].end()) + if (this->phialpha[0]->find_matrix(iat, ibt, dR.x, dR.y, dR.z) == nullptr) { continue; } } - //middle loop : all atomic basis on the adjacent atom ad - for (int iw1=0; iw1global2local_row(iw1_all); - const int iw2_local = pv->global2local_col(iw1_all); - if(iw1_local < 0 || iw2_local < 0) {continue;} - const int iw1_0 = iw1/PARAM.globalv.npol; - std::vector nlm; - if constexpr (std::is_same::value) - { - nlm = this->nlm_save[iat][ad][iw1][0]; - } - else + // middle loop : all atomic basis on the adjacent atom ad + for (int iw1 = 0; iw1 < nw1_tot; ++iw1) + { + const int iw1_all = start1 + iw1; + const int iw1_local = pv->global2local_row(iw1_all); + const int iw2_local = pv->global2local_col(iw1_all); + if (iw1_local < 0 || iw2_local < 0) { - nlm = this->nlm_save_k[iat][key][iw1][0]; + continue; } + hamilt::BaseMatrix* overlap = phialpha[0]->find_matrix(iat, ibt, dR); - for (int ik = 0; ik kphase = std::complex(1.0, 0.0); if constexpr (std::is_same>::value) { - const double arg = - (kvec_d[ik] * dR) * ModuleBase::TWO_PI; + const double arg = -(kvec_d[ik] * ModuleBase::Vector3(dR)) * ModuleBase::TWO_PI; double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); kphase = std::complex(cosp, sinp); } - int ib=0; - int nl=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) + int ib = 0; + int nl = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int nm = 2*L0+1; - - for (int m1=0; m1::value) { - this->psialpha_tensor[iat][nl][ik][iw1_all][m1] = nlm[ib+m1]; + this->phialpha_tensor[iat][nl][ik][iw1_all][m1] + = overlap->get_value(iw1, ib + m1); } else { - std::complex nlm_phase = nlm[ib + m1] * kphase; - torch::Tensor nlm_tensor = torch::tensor({nlm_phase.real(), nlm_phase.imag()}, torch::kDouble); + std::complex nlm_phase = overlap->get_value(iw1, ib + m1) * kphase; + torch::Tensor nlm_tensor + = torch::tensor({nlm_phase.real(), nlm_phase.imag()}, torch::kDouble); torch::Tensor complex_tensor = torch::complex(nlm_tensor[0], nlm_tensor[1]); - this->psialpha_tensor[iat][nl][ik][iw1_all][m1] = complex_tensor; + this->phialpha_tensor[iat][nl][ik][iw1_all][m1] = complex_tensor; } } - ib+=nm; + ib += nm; nl++; } - } - }//end ik - }//end iw - }//end ad - }//end I0 - }//end T0 + } + } // end ik + } // end iw + } // end ad + } // end I0 + } // end T0 #ifdef __MPI TK msg[mmax]; - for(int iat=0; iat< nat ; iat++) + for (int iat = 0; iat < nat; iat++) { - for(int nl = 0; nl < nlmax; nl++) + for (int nl = 0; nl < nlmax; nl++) { - for(int ik = 0; ik < nks; ik++) + for (int ik = 0; ik < nks; ik++) { - for(int mu = 0; mu < nlocal ; mu++) + for (int mu = 0; mu < nlocal; mu++) { - for(int m=0;m::value) { - msg[m] = this->psialpha_tensor[iat][nl][ik][mu][m].item().toDouble(); + msg[m] = this->phialpha_tensor[iat][nl][ik][mu][m].item().toDouble(); } else { - auto tensor_value = this->psialpha_tensor.index({iat, nl, ik, mu, m}); - msg[m] = std::complex(torch::real(tensor_value).item(), torch::imag(tensor_value).item()); + auto tensor_value = this->phialpha_tensor.index({iat, nl, ik, mu, m}); + msg[m] = std::complex(torch::real(tensor_value).item(), + torch::imag(tensor_value).item()); } } - Parallel_Reduce::reduce_all(msg,mmax); - for(int m=0;m::value) { - this->psialpha_tensor[iat][nl][ik][mu][m] = msg[m]; + this->phialpha_tensor[iat][nl][ik][mu][m] = msg[m]; } else { torch::Tensor msg_tensor = torch::tensor({msg[m].real(), msg[m].imag()}, torch::kDouble); torch::Tensor complex_tensor = torch::complex(msg_tensor[0], msg_tensor[1]); - this->psialpha_tensor[iat][nl][ik][mu][m] = complex_tensor; + this->phialpha_tensor[iat][nl][ik][mu][m] = complex_tensor; } } } @@ -323,38 +320,40 @@ void LCAO_Deepks::prepare_psialpha(const int nlocal, } } -#endif +#endif } template -void LCAO_Deepks::check_vdp_psialpha(const int nat, const int nks, const int nlocal) +void LCAO_Deepks::check_vdp_phialpha(const int nat, const int nks, const int nlocal) { - std::ofstream ofs("vdp_psialpha.dat"); + std::ofstream ofs("vdp_phialpha.dat"); ofs << std::setprecision(10); - - int nlmax = this->inlmax/nat; - int mmax = 2*this->lmaxd+1; - for(int iat=0; iat< nat ; iat++) + + int nlmax = this->inlmax / nat; + int mmax = 2 * this->lmaxd + 1; + for (int iat = 0; iat < nat; iat++) { - for(int nl = 0; nl < nlmax; nl++) + for (int nl = 0; nl < nlmax; nl++) { - for (int iks = 0; iks < nks ; iks++) + for (int iks = 0; iks < nks; iks++) { - for(int mu = 0; mu < nlocal ; mu++) + for (int mu = 0; mu < nlocal; mu++) { - for(int m=0; m< mmax; m++) + for (int m = 0; m < mmax; m++) { if constexpr (std::is_same::value) { - ofs << this->psialpha_tensor.index({ iat, nl, iks, mu, m }).item().toDouble() << " "; + ofs << this->phialpha_tensor.index({iat, nl, iks, mu, m}).item().toDouble() << " "; } else { - auto tensor_value = this->psialpha_tensor.index({iat, nl, iks, mu, m}); - ofs << std::complex(torch::real(tensor_value).item(), torch::imag(tensor_value).item()) << " "; + auto tensor_value = this->phialpha_tensor.index({iat, nl, iks, mu, m}); + ofs << std::complex(torch::real(tensor_value).item(), + torch::imag(tensor_value).item()) + << " "; } } - } + } } ofs << std::endl; } @@ -362,29 +361,27 @@ void LCAO_Deepks::check_vdp_psialpha(const int nat, const int nks, const int nlo ofs.close(); } -void LCAO_Deepks::prepare_gevdm( - const int nat, - const LCAO_Orbitals &orb) +void LCAO_Deepks::prepare_gevdm(const int nat, const LCAO_Orbitals& orb) { - int nlmax = this->inlmax/nat; - int mmax = 2*this->lmaxd+1; - this->gevdm_tensor = torch::zeros({ nat, nlmax, mmax, mmax, mmax}, torch::TensorOptions().dtype(torch::kFloat64)); + int nlmax = this->inlmax / nat; + int mmax = 2 * this->lmaxd + 1; + this->gevdm_tensor = torch::zeros({nat, nlmax, mmax, mmax, mmax}, torch::TensorOptions().dtype(torch::kFloat64)); this->cal_gvdm(nat); - int nl=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) + int nl = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { for (int iat = 0; iat < nat; iat++) { - const int nm = 2*L0+1; - for (int v=0; vgevdm_tensor[iat][nl][v][m][n] = this->gevdm_vector[nl][iat][v][m][n]; } @@ -402,19 +399,19 @@ void LCAO_Deepks::check_vdp_gevdm(const int nat) std::ofstream ofs("vdp_gevdm.dat"); ofs << std::setprecision(10); - int nlmax = this->inlmax/nat; - int mmax = 2*this->lmaxd+1; - for(int iat=0; iat< nat ; iat++) + int nlmax = this->inlmax / nat; + int mmax = 2 * this->lmaxd + 1; + for (int iat = 0; iat < nat; iat++) { - for(int nl = 0; nl < nlmax; nl++) + for (int nl = 0; nl < nlmax; nl++) { - for(int v=0; vgevdm_tensor.index({ iat,nl, v, m, n }).item().toDouble() << " "; + ofs << this->gevdm_tensor.index({iat, nl, v, m, n}).item().toDouble() << " "; } } } @@ -424,7 +421,7 @@ void LCAO_Deepks::check_vdp_gevdm(const int nat) ofs.close(); } -template void LCAO_Deepks::prepare_psialpha(const int nlocal, +template void LCAO_Deepks::prepare_phialpha(const int nlocal, const int nat, const int nks, const std::vector>& kvec_d, @@ -432,7 +429,7 @@ template void LCAO_Deepks::prepare_psialpha(const int nlocal, const LCAO_Orbitals& orb, const Grid_Driver& GridD); -template void LCAO_Deepks::prepare_psialpha>( +template void LCAO_Deepks::prepare_phialpha>( const int nlocal, const int nat, const int nks, @@ -441,7 +438,7 @@ template void LCAO_Deepks::prepare_psialpha>( const LCAO_Orbitals& orb, const Grid_Driver& GridD); -template void LCAO_Deepks::check_vdp_psialpha(const int nat, const int nks, const int nlocal); -template void LCAO_Deepks::check_vdp_psialpha>(const int nat, const int nks, const int nlocal); +template void LCAO_Deepks::check_vdp_phialpha(const int nat, const int nks, const int nlocal); +template void LCAO_Deepks::check_vdp_phialpha>(const int nat, const int nks, const int nlocal); #endif diff --git a/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp b/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp index b83e40f2ec..6a3b47df45 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp +++ b/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp @@ -1,23 +1,23 @@ #ifdef __DEEPKS -#include "module_parameter/parameter.h" #include "LCAO_deepks.h" -#include "module_base/vector3.h" -#include "module_base/timer.h" #include "module_base/constants.h" -#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" #include "module_base/libm/libm.h" +#include "module_base/timer.h" +#include "module_base/vector3.h" +#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" +#include "module_parameter/parameter.h" /// this subroutine calculates the gradient of projected density matrices /// gdmx_m,m = d/dX sum_{mu,nu} rho_{mu,nu} -/// if stress label is enabled, the gradient of PDM wrt strain tensor will -/// be calculated: -/// gdm_epsl = d/d\epsilon_{ab} * +/// if stress label is enabled, the gradient of PDM wrt strain tensor will +/// be calculated: +/// gdm_epsl = d/d\epsilon_{ab} * /// sum_{mu,nu} rho_{mu,nu} -//There are 2 subroutines in this file: -//1. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) for gamma point -//2. check_gdmx, which prints gdmx to a series of .dat files +// There are 2 subroutines in this file: +// 1. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) for gamma point +// 2. check_gdmx, which prints gdmx to a series of .dat files template void LCAO_Deepks::cal_gdmx(const std::vector>& dm, @@ -26,17 +26,18 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, const Grid_Driver& GridD, const int nks, const std::vector>& kvec_d, + std::vector*> phialpha, const bool isstress) { ModuleBase::TITLE("LCAO_Deepks", "cal_gdmx"); - ModuleBase::timer::tick("LCAO_Deepks","cal_gdmx"); - //get DS_alpha_mu and S_nu_beta + ModuleBase::timer::tick("LCAO_Deepks", "cal_gdmx"); + // get DS_alpha_mu and S_nu_beta int size = (2 * lmaxd + 1) * (2 * lmaxd + 1); int nrow = this->pv->nrow; - for (int iat = 0;iat < ucell.nat;iat++) + for (int iat = 0; iat < ucell.nat; iat++) { - for (int inl = 0;inl < inlmax;inl++) + for (int inl = 0; inl < inlmax; inl++) { ModuleBase::GlobalFunc::ZEROS(gdmx[iat][inl], size); ModuleBase::GlobalFunc::ZEROS(gdmy[iat][inl], size); @@ -46,9 +47,9 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, if (isstress) { - for (int ipol = 0;ipol < 6;ipol++) + for (int ipol = 0; ipol < 6; ipol++) { - for (int inl = 0;inl < inlmax;inl++) + for (int inl = 0; inl < inlmax; inl++) { ModuleBase::GlobalFunc::ZEROS(gdm_epsl[ipol][inl], size); } @@ -59,65 +60,69 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, for (int T0 = 0; T0 < ucell.ntype; T0++) { - Atom* atom0 = &ucell.atoms[T0]; - for (int I0 =0; I0< atom0->na; I0++) + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) { - const int iat = ucell.itia2iat(T0,I0);//on which alpha is located + const int iat = ucell.itia2iat(T0, I0); // on which alpha is located const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); - for (int ad1=0; ad1 tau1 = GridD.getAdjacentTau(ad1); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw*PARAM.globalv.npol; - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - - ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); - - for (int ad2=0; ad2 < GridD.getAdjacentNum()+1 ; ad2++) - { - const int T2 = GridD.getType(ad2); - const int I2 = GridD.getNatom(ad2); - const int start2 = ucell.itiaiw2iwt(T2, I2, 0); - const int ibt2 = ucell.itia2iat(T2,I2); - const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); - const Atom* atom2 = &ucell.atoms[T2]; - const int nw2_tot = atom2->nw*PARAM.globalv.npol; - ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); - - const double Rcut_AO2 = orb.Phi[T2].getRcut(); - const double dist1 = (tau1-tau0).norm() * ucell.lat0; - const double dist2 = (tau2-tau0).norm() * ucell.lat0; - - if (dist1 > Rcut_Alpha + Rcut_AO1 - || dist2 > Rcut_Alpha + Rcut_AO2) - { - continue; - } + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + + ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); + + for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) + { + const int T2 = GridD.getType(ad2); + const int I2 = GridD.getNatom(ad2); + const int start2 = ucell.itiaiw2iwt(T2, I2, 0); + const int ibt2 = ucell.itia2iat(T2, I2); + const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); + const Atom* atom2 = &ucell.atoms[T2]; + const int nw2_tot = atom2->nw * PARAM.globalv.npol; + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); + + const double Rcut_AO2 = orb.Phi[T2].getRcut(); + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; + const double dist2 = (tau2 - tau0).norm() * ucell.lat0; + + if (dist1 > Rcut_Alpha + Rcut_AO1 || dist2 > Rcut_Alpha + Rcut_AO2) + { + continue; + } double r0[3]; double r1[3]; - if(isstress) + if (isstress) { - r1[0] = ( tau1.x - tau0.x) ; - r1[1] = ( tau1.y - tau0.y) ; - r1[2] = ( tau1.z - tau0.z) ; - r0[0] = ( tau2.x - tau0.x) ; - r0[1] = ( tau2.y - tau0.y) ; - r0[2] = ( tau2.z - tau0.z) ; + r1[0] = (tau1.x - tau0.x); + r1[1] = (tau1.y - tau0.y); + r1[2] = (tau1.z - tau0.z); + r0[0] = (tau2.x - tau0.x); + r0[1] = (tau2.y - tau0.y); + r0[2] = (tau2.z - tau0.z); } auto row_indexes = pv->get_indexes_row(ibt1); auto col_indexes = pv->get_indexes_col(ibt2); - if(row_indexes.size() * col_indexes.size() == 0) continue; - + if (row_indexes.size() * col_indexes.size() == 0) + { + continue; + } + double* dm_current; - int dRx, dRy, dRz; + int dRx; + int dRy; + int dRz; if constexpr (std::is_same::value) { dRx = 0; @@ -126,13 +131,15 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, } else { - dRx = (dR2-dR1).x; - dRy = (dR2-dR1).y; - dRz = (dR2-dR1).z; + dRx = (dR2 - dR1).x; + dRy = (dR2 - dR1).y; + dRz = (dR2 - dR1).z; } + ModuleBase::Vector3 dR(dRx, dRy, dRz); + hamilt::AtomPair dm_pair(ibt1, ibt2, dRx, dRy, dRz, pv); dm_pair.allocate(nullptr, 1); - for(int ik=0;ik::value) @@ -141,12 +148,12 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, } else { - const double arg = - (kvec_d[ik] * (dR2-dR1) ) * ModuleBase::TWO_PI; + const double arg = -(kvec_d[ik] * dR) * ModuleBase::TWO_PI; double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); kphase = TK(cosp, sinp); } - if(ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) { dm_pair.add_from_matrix(dm[ik].data(), pv->get_row_size(), kphase, 1); } @@ -155,146 +162,163 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, dm_pair.add_from_matrix(dm[ik].data(), pv->get_col_size(), kphase, 0); } } - + dm_current = dm_pair.get_pointer(); - key_tuple key_1(ibt1,dR1.x,dR1.y,dR1.z); - key_tuple key_2(ibt2,dR2.x,dR2.y,dR2.z); - for (int iw1=0; iw1 nlm1; - std::vector> nlm2; + hamilt::BaseMatrix* overlap_1 = phialpha[0]->find_matrix(iat, ibt1, dR1); + hamilt::BaseMatrix* overlap_2 = phialpha[0]->find_matrix(iat, ibt2, dR2); + std::vector*> grad_overlap_1(3); + std::vector*> grad_overlap_2(3); - if constexpr (std::is_same::value) - { - nlm1 = this->nlm_save[iat][ad1][row_indexes[iw1]][0]; - nlm2 = this->nlm_save[iat][ad2][col_indexes[iw2]]; - } - else + assert(overlap_1->get_col_size() == overlap_2->get_col_size()); + + for (int i = 0; i < 3; ++i) { - nlm1 = this->nlm_save_k[iat][key_1][row_indexes[iw1]][0]; - nlm2 = this->nlm_save_k[iat][key_2][col_indexes[iw2]]; + grad_overlap_1[i] = phialpha[i + 1]->find_matrix(iat, ibt1, dR1); + grad_overlap_2[i] = phialpha[i + 1]->find_matrix(iat, ibt2, dR2); } - assert(nlm1.size()==nlm2[0].size()); - - int ib=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) + int ib = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { const int inl = this->inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - for (int m1 = 0;m1 < nm;++m1) + const int nm = 2 * L0 + 1; + for (int m1 = 0; m1 < nm; ++m1) { - for (int m2 = 0; m2 ) - gdmx[iat][inl][m1*nm+m2] += nlm2[1][ib+m2] * nlm1[ib+m1] * *dm_current; - gdmy[iat][inl][m1*nm+m2] += nlm2[2][ib+m2] * nlm1[ib+m1] * *dm_current; - gdmz[iat][inl][m1*nm+m2] += nlm2[3][ib+m2] * nlm1[ib+m1] * *dm_current; + gdmx[iat][inl][m1 * nm + m2] + += grad_overlap_2[0]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + gdmy[iat][inl][m1 * nm + m2] + += grad_overlap_2[1]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + gdmz[iat][inl][m1 * nm + m2] + += grad_overlap_2[2]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; //() - gdmx[iat][inl][m2*nm+m1] += nlm2[1][ib+m2] * nlm1[ib+m1] * *dm_current; - gdmy[iat][inl][m2*nm+m1] += nlm2[2][ib+m2] * nlm1[ib+m1] * *dm_current; - gdmz[iat][inl][m2*nm+m1] += nlm2[3][ib+m2] * nlm1[ib+m1] * *dm_current; + gdmx[iat][inl][m2 * nm + m1] + += grad_overlap_2[0]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + gdmy[iat][inl][m2 * nm + m1] + += grad_overlap_2[1]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + gdmz[iat][inl][m2 * nm + m1] + += grad_overlap_2[2]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - //() = -() - gdmx[ibt2][inl][m1*nm+m2] -= nlm2[1][ib+m2] * nlm1[ib+m1] * *dm_current; - gdmy[ibt2][inl][m1*nm+m2] -= nlm2[2][ib+m2] * nlm1[ib+m1] * *dm_current; - gdmz[ibt2][inl][m1*nm+m2] -= nlm2[3][ib+m2] * nlm1[ib+m1] * *dm_current; + //() = -() + gdmx[ibt2][inl][m1 * nm + m2] + -= grad_overlap_2[0]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + gdmy[ibt2][inl][m1 * nm + m2] + -= grad_overlap_2[1]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + gdmz[ibt2][inl][m1 * nm + m2] + -= grad_overlap_2[2]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - //() = -() - gdmx[ibt2][inl][m2*nm+m1] -= nlm2[1][ib+m2] * nlm1[ib+m1] * *dm_current; - gdmy[ibt2][inl][m2*nm+m1] -= nlm2[2][ib+m2] * nlm1[ib+m1] * *dm_current; - gdmz[ibt2][inl][m2*nm+m1] -= nlm2[3][ib+m2] * nlm1[ib+m1] * *dm_current; + //() = -() + gdmx[ibt2][inl][m2 * nm + m1] + -= grad_overlap_2[0]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + gdmy[ibt2][inl][m2 * nm + m1] + -= grad_overlap_2[1]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + gdmz[ibt2][inl][m2 * nm + m1] + -= grad_overlap_2[2]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; if (isstress) { int mm = 0; - for(int ipol=0;ipol<3;ipol++) + for (int ipol = 0; ipol < 3; ipol++) { - for(int jpol=ipol;jpol<3;jpol++) + for (int jpol = ipol; jpol < 3; jpol++) { - gdm_epsl[mm][inl][m2*nm+m1] += ucell.lat0 * - *dm_current * (nlm2[jpol+1][ib+m2] * nlm1[ib+m1] * r0[ipol]); + gdm_epsl[mm][inl][m2 * nm + m1] + += ucell.lat0 * *dm_current + * (grad_overlap_2[jpol]->get_value(col_indexes[iw2], + ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) + * r0[ipol]); mm++; } } } } } - ib+=nm; + ib += nm; } } - assert(ib==nlm1.size()); - if (isstress) + assert(ib == overlap_1->get_col_size()); + if (isstress) { - if constexpr (std::is_same::value) - { - nlm1 = this->nlm_save[iat][ad2][col_indexes[iw2]][0]; - nlm2 = this->nlm_save[iat][ad1][row_indexes[iw1]]; - } - else - { - nlm1 = this->nlm_save_k[iat][key_2][col_indexes[iw2]][0]; - nlm2 = this->nlm_save_k[iat][key_1][row_indexes[iw1]]; - } - - assert(nlm1.size()==nlm2[0].size()); - int ib=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) + int ib = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { const int inl = this->inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - for (int m1 = 0;m1 < nm; ++m1) + const int nm = 2 * L0 + 1; + for (int m1 = 0; m1 < nm; ++m1) { for (int m2 = 0; m2 < nm; ++m2) { int mm = 0; - for(int ipol=0;ipol<3;ipol++) + for (int ipol = 0; ipol < 3; ipol++) { - for(int jpol=ipol;jpol<3;jpol++) + for (int jpol = ipol; jpol < 3; jpol++) { - gdm_epsl[mm][inl][m2*nm+m1] += ucell.lat0 * - *dm_current * (nlm1[ib+m1] * nlm2[jpol+1][ib+m2] * r1[ipol]); + gdm_epsl[mm][inl][m2 * nm + m1] + += ucell.lat0 * *dm_current + * (overlap_2->get_value(col_indexes[iw2], ib + m1) + * grad_overlap_1[jpol]->get_value(row_indexes[iw1], + ib + m2) + * r1[ipol]); mm++; } } } } - ib+=nm; + ib += nm; } } } dm_current++; - }//iw2 - }//iw1 - }//ad2 - }//ad1 - }//I0 - }//T0 + } // iw2 + } // iw1 + } // ad2 + } // ad1 + } // I0 + } // T0 #ifdef __MPI - for(int iat=0;iatinlmax,size,this->gdmx[iat]); - allsum_deepks(this->inlmax,size,this->gdmy[iat]); - allsum_deepks(this->inlmax,size,this->gdmz[iat]); + allsum_deepks(this->inlmax, size, this->gdmx[iat]); + allsum_deepks(this->inlmax, size, this->gdmy[iat]); + allsum_deepks(this->inlmax, size, this->gdmz[iat]); } if (isstress) { - for(int ipol=0;ipol<6;ipol++) + for (int ipol = 0; ipol < 6; ipol++) { - allsum_deepks(this->inlmax,size,this->gdm_epsl[ipol]); + allsum_deepks(this->inlmax, size, this->gdm_epsl[ipol]); } } #endif - ModuleBase::timer::tick("LCAO_Deepks","cal_gdmx"); + ModuleBase::timer::tick("LCAO_Deepks", "cal_gdmx"); return; } @@ -305,26 +329,26 @@ void LCAO_Deepks::check_gdmx(const int nat) std::ofstream ofs_y; std::ofstream ofs_z; - ofs_x<lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); - for(int ia=0;ia(const std::vector>& kvec_d, + std::vector*> phialpha, const bool isstress); template void LCAO_Deepks::cal_gdmx>(const std::vector>>& dm, @@ -354,6 +379,7 @@ template void LCAO_Deepks::cal_gdmx>(const std::vector>& kvec_d, + std::vector*> phialpha, const bool isstress); #endif diff --git a/source/module_hamilt_lcao/module_deepks/deepks_fgamma.cpp b/source/module_hamilt_lcao/module_deepks/deepks_fgamma.cpp deleted file mode 100644 index 60077ebdac..0000000000 --- a/source/module_hamilt_lcao/module_deepks/deepks_fgamma.cpp +++ /dev/null @@ -1,381 +0,0 @@ -//wenfei 2022-1-11 -//This file contains subroutines for calculating F_delta, -#include "module_parameter/parameter.h" -//which is defind as sum_mu,nu rho_mu,nu d/dX (V(D)) - -//There are 2 subroutines in this file: -//1. cal_f_delta_gamma, which is used for gamma point calculation -//2. check_f_delta, which prints F_delta into F_delta.dat for checking - -#ifdef __DEEPKS - -#include "deepks_force.h" -#include "module_base/vector3.h" -#include "module_base/timer.h" -#include "module_base/constants.h" -#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" -#include "module_base/libm/libm.h" - -typedef std::tuple key_tuple; - -//force for gamma only calculations -//Pulay and HF terms are calculated together -void DeePKS_domain::cal_f_delta_gamma( - const std::vector>& dm, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD, - const Parallel_Orbitals& pv, - const int lmaxd, - const int nks, - const std::vector> &kvec_d, - std::vector>>>>& nlm_save, - double** gedm, - ModuleBase::IntArray* inl_index, - ModuleBase::matrix& f_delta, - const bool isstress, - ModuleBase::matrix& svnl_dalpha) -{ - ModuleBase::TITLE("DeePKS_domain", "cal_f_delta_gamma"); - - using TK = double; // temporary used, will be replaced by the template parameter - - f_delta.zero_out(); - - const double Rcut_Alpha = orb.Alpha[0].getRcut(); - - const int nrow = pv.nrow; - - for (int T0 = 0; T0 < ucell.ntype; T0++) - { - Atom* atom0 = &ucell.atoms[T0]; - for (int I0 =0; I0< atom0->na; I0++) - { - const int iat = ucell.itia2iat(T0,I0); - const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); - - for (int ad1=0; ad1 tau1 = GridD.getAdjacentTau(ad1); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw*PARAM.globalv.npol; - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - - ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); - - for (int ad2=0; ad2 < GridD.getAdjacentNum()+1 ; ad2++) - { - const int T2 = GridD.getType(ad2); - const int I2 = GridD.getNatom(ad2); - const int ibt2 = ucell.itia2iat(T2,I2); - const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); - const Atom* atom2 = &ucell.atoms[T2]; - const int nw2_tot = atom2->nw*PARAM.globalv.npol; - ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); - - const double Rcut_AO2 = orb.Phi[T2].getRcut(); - const double dist1 = (tau1-tau0).norm() * ucell.lat0; - const double dist2 = (tau2-tau0).norm() * ucell.lat0; - - if (dist1 > Rcut_Alpha + Rcut_AO1 - || dist2 > Rcut_Alpha + Rcut_AO2) - { - continue; - } - - double r0[3]; - double r1[3]; - if(isstress) - { - r1[0] = ( tau1.x - tau0.x) ; - r1[1] = ( tau1.y - tau0.y) ; - r1[2] = ( tau1.z - tau0.z) ; - r0[0] = ( tau2.x - tau0.x) ; - r0[1] = ( tau2.y - tau0.y) ; - r0[2] = ( tau2.z - tau0.z) ; - } - - auto row_indexes = pv.get_indexes_row(ibt1); - auto col_indexes = pv.get_indexes_col(ibt2); - - if(row_indexes.size() * col_indexes.size() == 0) - { - continue; - } - - int dRx; - int dRy; - int dRz; - if constexpr (std::is_same::value) - { - dRx = 0; - dRy = 0; - dRz = 0; - } - else - { - dRx = dR2.x - dR1.x; - dRy = dR2.y - dR1.y; - dRz = dR2.z - dR1.z; - } - - hamilt::AtomPair dm_pair(ibt1, ibt2, dRx, dRy, dRz, &pv); - - dm_pair.allocate(nullptr, 1); - - if constexpr (std::is_same::value) - { - for(int is=0;is kphase = std::complex(cosp, sinp); - // if(ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) - // { - // dm_pair.add_from_matrix(dm[ik].data(), pv.get_row_size(), kphase, 1); - // } - // else - // { - // dm_pair.add_from_matrix(dm[ik].data(), pv.get_col_size(), kphase, 0); - // } - // } - } - - const double* dm_current = dm_pair.get_pointer(); - - for (int iw1=0; iw1 nlm1; - std::vector> nlm2; - nlm2.resize(3); - - if constexpr (std::is_same::value) - { - nlm1 = nlm_save[iat][ad1][row_indexes[iw1]][0]; - for(int dim=0;dim<3;dim++) - { - nlm2[dim] = nlm_save[iat][ad2][col_indexes[iw2]][dim+1]; - } - } - else - { - // nlm1 = nlm_save_k[iat][key_1][row_indexes[iw1]][0]; - // for(int dim=0;dim<3;dim++) - // { - // nlm2[dim] = nlm_save_k[iat][key_2][col_indexes[iw2]][dim+1]; - // } - } - - assert(nlm1.size()==nlm2[0].size()); - - if(!PARAM.inp.deepks_equiv) - { - int ib=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) - { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) - { - const int inl = inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - for (int m1 = 0;m1 < nm; ++m1) - { - for (int m2 = 0; m2 < nm; ++m2) - { - for(int dim=0;dim<3;dim++) - { - nlm[dim] += gedm[inl][m1*nm+m2]*nlm1[ib+m1]*nlm2[dim][ib+m2]; - } - } - } - ib+=nm; - } - } - assert(ib==nlm1.size()); - } - else - { - int nproj = 0; - for(int il = 0; il < lmaxd + 1; il++) - { - nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); - } - for(int iproj = 0; iproj < nproj; iproj ++) - { - for(int jproj = 0; jproj < nproj; jproj ++) - { - for(int dim=0;dim<3;dim++) - { - nlm[dim] += gedm[iat][iproj*nproj+jproj] * nlm1[iproj] * nlm2[dim][jproj]; - } - } - } - } - - // HF term is minus, only one projector for each atom force. - f_delta(iat, 0) -= 2 * *dm_current * nlm[0]; - f_delta(iat, 1) -= 2 * *dm_current * nlm[1]; - f_delta(iat, 2) -= 2 * *dm_current * nlm[2]; - - // Pulay term is plus, only one projector for each atom force. - f_delta(ibt2, 0) += 2 * *dm_current * nlm[0]; - f_delta(ibt2, 1) += 2 * *dm_current * nlm[1]; - f_delta(ibt2, 2) += 2 * *dm_current * nlm[2]; - - if(isstress) - { - if constexpr (std::is_same::value) - { - nlm1 = nlm_save[iat][ad2][col_indexes[iw2]][0]; - for(int i=0;i<3;i++) - { - nlm2[i] = nlm_save[iat][ad1][row_indexes[iw1]][i+1]; - } - } - else - { - // nlm1 = nlm_save_k[iat][key_2][col_indexes[iw2]][0]; - // for(int i=0;i<3;i++) - // { - // nlm2[i] = nlm_save_k[iat][key_1][row_indexes[iw1]][i+1]; - // } - } - - assert(nlm1.size()==nlm2[0].size()); - - if(!PARAM.inp.deepks_equiv) - { - int ib=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) - { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) - { - const int inl = inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - - for (int m1 = 0;m1 < nm; ++m1) - { - for (int m2 = 0; m2 < nm; ++m2) - { - for(int dim=0;dim<3;++dim) - { - nlm_t[dim] += gedm[inl][m1*nm+m2]*nlm1[ib+m1]*nlm2[dim][ib+m2]; - } - } - } - ib+=nm; - } - } - assert(ib==nlm1.size()); - } - else - { - int nproj = 0; - for(int il = 0; il < lmaxd + 1; il++) - { - nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); - } - for(int iproj = 0; iproj < nproj; iproj ++) - { - for(int jproj = 0; jproj < nproj; jproj ++) - { - for(int dim=0;dim<3;dim++) - { - nlm_t[dim] += gedm[iat][iproj*nproj+jproj] * nlm1[iproj] * nlm2[dim][jproj]; - } - } - } - } - - for(int ipol=0;ipol<3;ipol++) - { - for(int jpol=ipol;jpol<3;jpol++) - { - svnl_dalpha(ipol, jpol) += *dm_current * - (nlm[jpol] * r0[ipol] + nlm_t[jpol] * r1[ipol]); - } - } - } - dm_current++; - }//iw2 - }//iw1 - }//ad2 - }//ad1 - }//end I0 - }//end T0 - - if(isstress) - { - assert(ucell.omega>0.0); - const double weight = ucell.lat0 / ucell.omega ; - for(int i=0;i<3;++i) - { - for(int j=0;j<3;++j) - { - if(j>i) - { - svnl_dalpha(j,i) = svnl_dalpha(i,j); - } - svnl_dalpha(i,j) *= weight; - } - } - } - - return; -} - - -//prints forces and stress from DeePKS (LCAO) -void DeePKS_domain::check_f_delta( - const int nat, - ModuleBase::matrix& f_delta, - ModuleBase::matrix& svnl_dalpha) -{ - ModuleBase::TITLE("LCAO_Deepks", "check_F_delta"); - - std::ofstream ofs("F_delta.dat"); - ofs< key_tuple; // used in nlm_save_k - -void DeePKS_domain::cal_f_delta_k( - const std::vector>>& dm, /**<[in] density matrix*/ - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD, - const Parallel_Orbitals& pv, - const int lmaxd, - const int nks, - const std::vector>& kvec_d, - std::vector>>>>& nlm_save_k, - double** gedm, - ModuleBase::IntArray* inl_index, - ModuleBase::matrix& f_delta, - const bool isstress, - ModuleBase::matrix& svnl_dalpha) -{ - ModuleBase::TITLE("LCAO_Deepks", "cal_f_delta_hf_k_new"); - ModuleBase::timer::tick("LCAO_Deepks","cal_f_delta_hf_k_new"); - f_delta.zero_out(); - - const double Rcut_Alpha = orb.Alpha[0].getRcut(); - const int nrow = pv.nrow; - - for (int T0 = 0; T0 < ucell.ntype; T0++) - { - Atom* atom0 = &ucell.atoms[T0]; - for (int I0 =0; I0< atom0->na; I0++) - { - const int iat = ucell.itia2iat(T0,I0); - const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); - - for (int ad1=0; ad1 tau1 = GridD.getAdjacentTau(ad1); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw*PARAM.globalv.npol; - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - - ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); - - for (int ad2=0; ad2 < GridD.getAdjacentNum()+1 ; ad2++) - { - const int T2 = GridD.getType(ad2); - const int I2 = GridD.getNatom(ad2); - const int ibt2 = ucell.itia2iat(T2,I2); - const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); - const Atom* atom2 = &ucell.atoms[T2]; - const int nw2_tot = atom2->nw*PARAM.globalv.npol; - ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); - - const double Rcut_AO2 = orb.Phi[T2].getRcut(); - const double dist1 = (tau1-tau0).norm() * ucell.lat0; - const double dist2 = (tau2-tau0).norm() * ucell.lat0; - - if (dist1 > Rcut_Alpha + Rcut_AO1 - || dist2 > Rcut_Alpha + Rcut_AO2) - { - continue; - } - - double r0[3]; - double r1[3]; - if(isstress) - { - r1[0] = ( tau1.x - tau0.x) ; - r1[1] = ( tau1.y - tau0.y) ; - r1[2] = ( tau1.z - tau0.z) ; - r0[0] = ( tau2.x - tau0.x) ; - r0[1] = ( tau2.y - tau0.y) ; - r0[2] = ( tau2.z - tau0.z) ; - } - - auto row_indexes = pv.get_indexes_row(ibt1); - auto col_indexes = pv.get_indexes_col(ibt2); - if(row_indexes.size() * col_indexes.size() == 0) { continue; -} - - hamilt::AtomPair dm_pair(ibt1, ibt2, (dR2-dR1).x, (dR2-dR1).y, (dR2-dR1).z, &pv); - dm_pair.allocate(nullptr, 1); - for(int ik=0;ik kphase = std::complex(cosp, sinp); - if(ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) - { - dm_pair.add_from_matrix(dm[ik].data(), pv.get_row_size(), kphase, 1); - } - else - { - dm_pair.add_from_matrix(dm[ik].data(), pv.get_col_size(), kphase, 0); - } - } - - const double* dm_current = dm_pair.get_pointer(); - - for (int iw1=0; iw1 nlm1 = nlm_save_k[iat][key_1][row_indexes[iw1]][0]; - std::vector> nlm2; - nlm2.resize(3); - for(int dim=0;dim<3;dim++) - { - nlm2[dim] = nlm_save_k[iat][key_2][col_indexes[iw2]][dim+1]; - } - - assert(nlm1.size()==nlm2[0].size()); - - if(!PARAM.inp.deepks_equiv) - { - int ib=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) - { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) - { - const int inl = inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - for (int m1 = 0;m1 < nm; ++m1) - { - for (int m2 = 0; m2 < nm; ++m2) - { - for(int dim=0;dim<3;dim++) - { - nlm[dim] += gedm[inl][m1*nm+m2]*nlm1[ib+m1]*nlm2[dim][ib+m2]; - } - } - } - ib+=nm; - } - } - assert(ib==nlm1.size()); - } - else - { - int nproj = 0; - for(int il = 0; il < lmaxd + 1; il++) - { - nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); - } - for(int iproj = 0; iproj < nproj; iproj ++) - { - for(int jproj = 0; jproj < nproj; jproj ++) - { - for(int dim=0;dim<3;dim++) - { - nlm[dim] += gedm[iat][iproj*nproj+jproj] * nlm1[iproj] * nlm2[dim][jproj]; - } - } - } - } - - // Pulay term is plus - f_delta(ibt2, 0) += 2.0 * *dm_current * nlm[0]; - f_delta(ibt2, 1) += 2.0 * *dm_current * nlm[1]; - f_delta(ibt2, 2) += 2.0 * *dm_current * nlm[2]; - - // HF term is minus, only one projector for each atom force. - f_delta(iat, 0) -= 2.0 * *dm_current * nlm[0]; - f_delta(iat, 1) -= 2.0 * *dm_current * nlm[1]; - f_delta(iat, 2) -= 2.0 * *dm_current * nlm[2]; - - if(isstress) - { - nlm1 = nlm_save_k[iat][key_2][col_indexes[iw2]][0]; - for(int i=0;i<3;i++) - { - nlm2[i] = nlm_save_k[iat][key_1][row_indexes[iw1]][i+1]; - } - - assert(nlm1.size()==nlm2[0].size()); - - if(!PARAM.inp.deepks_equiv) - { - int ib=0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) - { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) - { - const int inl = inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - for (int m1 = 0;m1 < nm; ++m1) - { - for (int m2 = 0; m2 < nm; ++m2) - { - for(int dim=0;dim<3;dim++) - { - nlm_t[dim] += gedm[inl][m1*nm+m2]*nlm1[ib+m1]*nlm2[dim][ib+m2]; - } - } - } - ib+=nm; - } - } - assert(ib==nlm1.size()); - } - else - { - int nproj = 0; - for(int il = 0; il < lmaxd + 1; il++) - { - nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); - } - for(int iproj = 0; iproj < nproj; iproj ++) - { - for(int jproj = 0; jproj < nproj; jproj ++) - { - for(int dim=0;dim<3;dim++) - { - nlm_t[dim] += gedm[iat][iproj*nproj+jproj] * nlm1[iproj] * nlm2[dim][jproj]; - } - } - } - } - - for(int ipol=0;ipol<3;ipol++) - { - svnl_dalpha(0,ipol) -= *dm_current * (nlm[0] * r0[ipol] + nlm_t[0] * r1[ipol])* -1.0; - svnl_dalpha(1,ipol) -= *dm_current * (nlm[1] * r0[ipol] + nlm_t[1] * r1[ipol])* -1.0; - svnl_dalpha(2,ipol) -= *dm_current * (nlm[2] * r0[ipol] + nlm_t[2] * r1[ipol])* -1.0; - } - - } - dm_current++; - }//iw2 - }//iw1 - }//ad2 - }//ad1 - }//end I0 - }//end T0 - - if(isstress) - { - assert(ucell.omega>0.0); - const double weight = ucell.lat0 / ucell.omega ; - for(int i=0;i<3;++i) - { - for(int j=0;j<3;++j) - { - if(j>i) { svnl_dalpha(j,i) = svnl_dalpha(i,j); -} - svnl_dalpha(i,j) *= weight ; - } - } - } - ModuleBase::timer::tick("LCAO_Deepks","cal_f_delta_hf_k_new"); - return; -} - -#endif diff --git a/source/module_hamilt_lcao/module_deepks/deepks_force.cpp b/source/module_hamilt_lcao/module_deepks/deepks_force.cpp new file mode 100644 index 0000000000..51992ff5ea --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/deepks_force.cpp @@ -0,0 +1,381 @@ +// wenfei 2022-1-11 +// This file contains subroutines for calculating F_delta, +#include "module_parameter/parameter.h" +// which is defind as sum_mu,nu rho_mu,nu d/dX (V(D)) + +// There are 2 subroutines in this file: +// 1. cal_f_delta, which calculates F_delta +// 2. check_f_delta, which prints F_delta into F_delta.dat for checking + +#ifdef __DEEPKS + +#include "deepks_force.h" +#include "module_base/constants.h" +#include "module_base/libm/libm.h" +#include "module_base/timer.h" +#include "module_base/vector3.h" +#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" + +template +void DeePKS_domain::cal_f_delta(const std::vector>& dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const Parallel_Orbitals& pv, + const int lmaxd, + const int nks, + const std::vector>& kvec_d, + std::vector*> phialpha, + double** gedm, + ModuleBase::IntArray* inl_index, + ModuleBase::matrix& f_delta, + const bool isstress, + ModuleBase::matrix& svnl_dalpha) +{ + ModuleBase::TITLE("DeePKS_domain", "cal_f_delta"); + + f_delta.zero_out(); + + const double Rcut_Alpha = orb.Alpha[0].getRcut(); + + const int nrow = pv.nrow; + + for (int T0 = 0; T0 < ucell.ntype; T0++) + { + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) + { + const int iat = ucell.itia2iat(T0, I0); + const ModuleBase::Vector3 tau0 = atom0->tau[I0]; + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); + + for (int ad1 = 0; ad1 < GridD.getAdjacentNum() + 1; ++ad1) + { + const int T1 = GridD.getType(ad1); + const int I1 = GridD.getNatom(ad1); + const int ibt1 = ucell.itia2iat(T1, I1); + const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad1); + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + + ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); + + for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) + { + const int T2 = GridD.getType(ad2); + const int I2 = GridD.getNatom(ad2); + const int ibt2 = ucell.itia2iat(T2, I2); + const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); + const Atom* atom2 = &ucell.atoms[T2]; + const int nw2_tot = atom2->nw * PARAM.globalv.npol; + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); + + const double Rcut_AO2 = orb.Phi[T2].getRcut(); + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; + const double dist2 = (tau2 - tau0).norm() * ucell.lat0; + + if (dist1 > Rcut_Alpha + Rcut_AO1 || dist2 > Rcut_Alpha + Rcut_AO2) + { + continue; + } + + double r0[3]; + double r1[3]; + if (isstress) + { + r1[0] = (tau1.x - tau0.x); + r1[1] = (tau1.y - tau0.y); + r1[2] = (tau1.z - tau0.z); + r0[0] = (tau2.x - tau0.x); + r0[1] = (tau2.y - tau0.y); + r0[2] = (tau2.z - tau0.z); + } + + auto row_indexes = pv.get_indexes_row(ibt1); + auto col_indexes = pv.get_indexes_col(ibt2); + + if (row_indexes.size() * col_indexes.size() == 0) + { + continue; + } + + int dRx; + int dRy; + int dRz; + if constexpr (std::is_same::value) // for gamma-only + { + dRx = 0; + dRy = 0; + dRz = 0; + } + else // for multi-k + { + dRx = dR2.x - dR1.x; + dRy = dR2.y - dR1.y; + dRz = dR2.z - dR1.z; + } + ModuleBase::Vector3 dR(dRx, dRy, dRz); + + hamilt::AtomPair dm_pair(ibt1, ibt2, dRx, dRy, dRz, &pv); + + dm_pair.allocate(nullptr, 1); + + if constexpr (std::is_same::value) // for gamma-only + { + for (int is = 0; is < dm.size(); is++) + { + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + { + dm_pair.add_from_matrix(dm[is].data(), pv.get_row_size(), 1.0, 1); + } + else + { + dm_pair.add_from_matrix(dm[is].data(), pv.get_col_size(), 1.0, 0); + } + } + } + else // for multi-k + { + for (int ik = 0; ik < nks; ik++) + { + const double arg = -(kvec_d[ik] * dR) * ModuleBase::TWO_PI; + double sinp, cosp; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + const std::complex kphase = std::complex(cosp, sinp); + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + { + dm_pair.add_from_matrix(dm[ik].data(), pv.get_row_size(), kphase, 1); + } + else + { + dm_pair.add_from_matrix(dm[ik].data(), pv.get_col_size(), kphase, 0); + } + } + } + + const double* dm_current = dm_pair.get_pointer(); + + for (int iw1 = 0; iw1 < row_indexes.size(); ++iw1) + { + for (int iw2 = 0; iw2 < col_indexes.size(); ++iw2) + { + double nlm[3] = {0, 0, 0}; + double nlm_t[3] = {0, 0, 0}; // for stress + + hamilt::BaseMatrix* overlap_1 = phialpha[0]->find_matrix(iat, ibt1, dR1); + hamilt::BaseMatrix* overlap_2 = phialpha[0]->find_matrix(iat, ibt2, dR2); + std::vector*> grad_overlap_1(3); + std::vector*> grad_overlap_2(3); + for (int i = 0; i < 3; ++i) + { + grad_overlap_1[i] = phialpha[i + 1]->find_matrix(iat, ibt1, dR1); + grad_overlap_2[i] = phialpha[i + 1]->find_matrix(iat, ibt2, dR2); + } + + assert(overlap_1->get_col_size() == overlap_2->get_col_size()); + + if (!PARAM.inp.deepks_equiv) + { + int ib = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + { + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + { + const int inl = inl_index[T0](I0, L0, N0); + const int nm = 2 * L0 + 1; + for (int m1 = 0; m1 < nm; ++m1) + { + for (int m2 = 0; m2 < nm; ++m2) + { + for (int dim = 0; dim < 3; dim++) + { + nlm[dim] + += gedm[inl][m1 * nm + m2] + * overlap_1->get_value(row_indexes[iw1], ib + m1) + * grad_overlap_2[dim]->get_value(col_indexes[iw2], ib + m2); + } + } + } + ib += nm; + } + } + assert(ib == overlap_1->get_col_size()); + } + else + { + int nproj = 0; + for (int il = 0; il < lmaxd + 1; il++) + { + nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); + } + for (int iproj = 0; iproj < nproj; iproj++) + { + for (int jproj = 0; jproj < nproj; jproj++) + { + for (int dim = 0; dim < 3; dim++) + { + nlm[dim] += gedm[iat][iproj * nproj + jproj] + * overlap_1->get_value(row_indexes[iw1], iproj) + * grad_overlap_2[dim]->get_value(col_indexes[iw2], jproj); + } + } + } + } + + // HF term is minus, only one projector for each atom force. + f_delta(iat, 0) -= 2.0 * *dm_current * nlm[0]; + f_delta(iat, 1) -= 2.0 * *dm_current * nlm[1]; + f_delta(iat, 2) -= 2.0 * *dm_current * nlm[2]; + + // Pulay term is plus, only one projector for each atom force. + f_delta(ibt2, 0) += 2.0 * *dm_current * nlm[0]; + f_delta(ibt2, 1) += 2.0 * *dm_current * nlm[1]; + f_delta(ibt2, 2) += 2.0 * *dm_current * nlm[2]; + + if (isstress) + { + if (!PARAM.inp.deepks_equiv) + { + int ib = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + { + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + { + const int inl = inl_index[T0](I0, L0, N0); + const int nm = 2 * L0 + 1; + + for (int m1 = 0; m1 < nm; ++m1) + { + for (int m2 = 0; m2 < nm; ++m2) + { + for (int dim = 0; dim < 3; ++dim) + { + nlm_t[dim] += gedm[inl][m1 * nm + m2] + * overlap_2->get_value(col_indexes[iw2], ib + m1) + * grad_overlap_1[dim]->get_value(row_indexes[iw1], + ib + m2); + } + } + } + ib += nm; + } + } + assert(ib == overlap_2->get_col_size()); + } + else + { + int nproj = 0; + for (int il = 0; il < lmaxd + 1; il++) + { + nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); + } + for (int iproj = 0; iproj < nproj; iproj++) + { + for (int jproj = 0; jproj < nproj; jproj++) + { + for (int dim = 0; dim < 3; dim++) + { + nlm_t[dim] += gedm[iat][iproj * nproj + jproj] + * overlap_2->get_value(col_indexes[iw2], iproj) + * grad_overlap_1[dim]->get_value(row_indexes[iw1], jproj); + } + } + } + } + + for (int ipol = 0; ipol < 3; ipol++) + { + for (int jpol = ipol; jpol < 3; jpol++) + { + svnl_dalpha(ipol, jpol) + += *dm_current * (nlm[ipol] * r0[jpol] + nlm_t[ipol] * r1[jpol]); + } + } + } + dm_current++; + } // iw2 + } // iw1 + } // ad2 + } // ad1 + } // end I0 + } // end T0 + + if (isstress) + { + assert(ucell.omega > 0.0); + const double weight = ucell.lat0 / ucell.omega; + // use upper triangle to make symmetric stress tensor + for (int i = 0; i < 3; ++i) + { + for (int j = 0; j < 3; ++j) + { + if (j > i) + { + svnl_dalpha(j, i) = svnl_dalpha(i, j); + } + svnl_dalpha(i, j) *= weight; + } + } + } + + return; +} + +// prints forces and stress from DeePKS (LCAO) +void DeePKS_domain::check_f_delta(const int nat, ModuleBase::matrix& f_delta, ModuleBase::matrix& svnl_dalpha) +{ + ModuleBase::TITLE("LCAO_Deepks", "check_F_delta"); + + std::ofstream ofs("F_delta.dat"); + ofs << std::setprecision(10); + + for (int iat = 0; iat < nat; iat++) + { + ofs << f_delta(iat, 0) << " " << f_delta(iat, 1) << " " << f_delta(iat, 2) << std::endl; + } + + std::ofstream ofs1("stress_delta.dat"); + ofs1 << std::setprecision(10); + for (int ipol = 0; ipol < 3; ipol++) + { + for (int jpol = 0; jpol < 3; jpol++) + { + ofs1 << svnl_dalpha(ipol, jpol) << " "; + } + ofs1 << std::endl; + } + return; +} + +template void DeePKS_domain::cal_f_delta(const std::vector>& dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const Parallel_Orbitals& pv, + const int lmaxd, + const int nks, + const std::vector>& kvec_d, + std::vector*> phialpha, + double** gedm, + ModuleBase::IntArray* inl_index, + ModuleBase::matrix& f_delta, + const bool isstress, + ModuleBase::matrix& svnl_dalpha); + +template void DeePKS_domain::cal_f_delta>(const std::vector>>& dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const Parallel_Orbitals& pv, + const int lmaxd, + const int nks, + const std::vector>& kvec_d, + std::vector*> phialpha, + double** gedm, + ModuleBase::IntArray* inl_index, + ModuleBase::matrix& f_delta, + const bool isstress, + ModuleBase::matrix& svnl_dalpha); + +#endif diff --git a/source/module_hamilt_lcao/module_deepks/deepks_force.h b/source/module_hamilt_lcao/module_deepks/deepks_force.h index 58474b9d56..bd4a183d6a 100644 --- a/source/module_hamilt_lcao/module_deepks/deepks_force.h +++ b/source/module_hamilt_lcao/module_deepks/deepks_force.h @@ -20,21 +20,19 @@ namespace DeePKS_domain { //------------------------ - // LCAO_deepks_fgamma.cpp - // LCAO_deepks_fk.cpp + // LCAO_deepks_force.cpp //------------------------ // This file contains subroutines for calculating F_delta, // which is defind as sum_mu,nu rho_mu,nu d/dX (V(D)) - // There are 3 subroutines in this file: - // 1. cal_f_delta_gamma, which is used for gamma point calculation - // 2. cal_f_delta_k, which is used for multi-k calculation - // 3. check_f_delta, which prints F_delta into F_delta.dat for checking + // There are 2 subroutines in this file: + // 1. cal_f_delta, which is used for F_delta calculation + // 2. check_f_delta, which prints F_delta into F_delta.dat for checking -// for gamma only, pulay and HF terms of force are calculated together -void cal_f_delta_gamma( - const std::vector>& dm, +template +void cal_f_delta( + const std::vector>& dm, const UnitCell& ucell, const LCAO_Orbitals& orb, const Grid_Driver& GridD, @@ -42,27 +40,7 @@ void cal_f_delta_gamma( const int lmaxd, const int nks, const std::vector>& kvec_d, - std::vector>>>>& nlm_save, - double** gedm, - ModuleBase::IntArray* inl_index, - ModuleBase::matrix& f_delta, - const bool isstress, - ModuleBase::matrix& svnl_dalpha); - -// for multi-k, pulay and HF terms of force are calculated together - -typedef std::tuple key_tuple; - -void cal_f_delta_k( - const std::vector>>& dm, /**<[in] density matrix*/ - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD, - const Parallel_Orbitals& pv, - const int lmaxd, - const int nks, - const std::vector>& kvec_d, - std::vector>>>>& nlm_save_k, + std::vector*> phialpha, double** gedm, ModuleBase::IntArray* inl_index, ModuleBase::matrix& f_delta, diff --git a/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp b/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp index da8dcdd539..6a55fa78f2 100644 --- a/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp +++ b/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp @@ -33,11 +33,11 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, this->init_orbital_pdm_shell(nks); - for (int T0 = 0; T0 < ucell.ntype; T0++) + for (int T0 = 0; T0 < ucell.ntype; T0++) { Atom* atom0 = &ucell.atoms[T0]; - for (int I0 = 0; I0 < atom0->na; I0++) + for (int I0 = 0; I0 < atom0->na; I0++) { const int iat = ucell.itia2iat(T0, I0); const ModuleBase::Vector3 tau0 = atom0->tau[I0]; @@ -47,9 +47,9 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, std::vector trace_alpha_row; std::vector trace_alpha_col; int ib = 0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) { - for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { const int inl = this->inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; @@ -67,33 +67,27 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, } const int trace_alpha_size = trace_alpha_row.size(); - for (int ad1 = 0; ad1 < GridD.getAdjacentNum() + 1; ++ad1) + for (int ad1 = 0; ad1 < GridD.getAdjacentNum() + 1; ++ad1) { const int T1 = GridD.getType(ad1); const int I1 = GridD.getNatom(ad1); const int ibt1 = ucell.itia2iat(T1, I1); - const ModuleBase::Vector3 tau1 - = GridD.getAdjacentTau(ad1); + const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad1); const Atom* atom1 = &ucell.atoms[T1]; const int nw1_tot = atom1->nw * PARAM.globalv.npol; const double Rcut_AO1 = orb.Phi[T1].getRcut(); const double dist1 = (tau1 - tau0).norm() * ucell.lat0; - if (dist1 >= Rcut_Alpha + Rcut_AO1) + if (dist1 >= Rcut_Alpha + Rcut_AO1) { continue; } - ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, - GridD.getBox(ad1).y, - GridD.getBox(ad1).z); - - key_tuple key_1(ibt1, dR1.x, dR1.y, dR1.z); + ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); if constexpr (std::is_same>::value) { - if (this->nlm_save_k[iat].find(key_1) - == this->nlm_save_k[iat].end()) + if (this->phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr) { continue; } @@ -103,67 +97,53 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, const int row_size = row_indexes.size(); - if (row_size == 0) + if (row_size == 0) { continue; } std::vector s_1t(trace_alpha_size * row_size); - std::vector g_1dmt(nks * trace_alpha_size * row_size, 0.0); + std::vector g_1dmt(nks * trace_alpha_size * row_size, 0.0); - for (int irow = 0; irow < row_size; irow++) - { - double* row_ptr; - if constexpr (std::is_same::value) - { - row_ptr = this->nlm_save[iat][ad1][row_indexes[irow]][0].data(); - } - else - { - row_ptr = this->nlm_save_k[iat][key_1][row_indexes[irow]][0].data(); - } - for (int i = 0; i < trace_alpha_size; i++) + for (int irow = 0; irow < row_size; irow++) + { + hamilt::BaseMatrix* row_ptr = this->phialpha[0]->find_matrix(iat, ibt1, dR1); + for (int i = 0; i < trace_alpha_size; i++) { - s_1t[i * row_size + irow] = row_ptr[trace_alpha_row[i]]; + s_1t[i * row_size + irow] = row_ptr->get_value(row_indexes[irow], trace_alpha_row[i]); } } - for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) + for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) { const int T2 = GridD.getType(ad2); const int I2 = GridD.getNatom(ad2); const int ibt2 = ucell.itia2iat(T2, I2); if constexpr (std::is_same>::value) // Why only for multi-k? { - if (ibt1 > ibt2) + if (ibt1 > ibt2) { continue; } } - const ModuleBase::Vector3 tau2 - = GridD.getAdjacentTau(ad2); + const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); const Atom* atom2 = &ucell.atoms[T2]; const int nw2_tot = atom2->nw * PARAM.globalv.npol; const double Rcut_AO2 = orb.Phi[T2].getRcut(); const double dist2 = (tau2 - tau0).norm() * ucell.lat0; - if (dist2 >= Rcut_Alpha + Rcut_AO2) + if (dist2 >= Rcut_Alpha + Rcut_AO2) { continue; } - ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, - GridD.getBox(ad2).y, - GridD.getBox(ad2).z); + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); - key_tuple key_2(ibt2, dR2.x, dR2.y, dR2.z); - if constexpr (std::is_same>::value) { - if (this->nlm_save_k[iat].find(key_2) - == this->nlm_save_k[iat].end()) + if (this->phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) { continue; } @@ -171,27 +151,18 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, auto col_indexes = pv->get_indexes_col(ibt2); const int col_size = col_indexes.size(); - if (col_size == 0) - { - continue; - } + if (col_size == 0) + { + continue; + } std::vector s_2t(trace_alpha_size * col_size); - for (int icol = 0; icol < col_size; icol++) + for (int icol = 0; icol < col_size; icol++) { - double* col_ptr; - if constexpr (std::is_same::value) - { - col_ptr = this->nlm_save[iat][ad2][col_indexes[icol]][0].data(); - } - else - { - col_ptr = this->nlm_save_k[iat][key_2][col_indexes[icol]][0].data(); - } - for (int i = 0; i < trace_alpha_size; i++) + hamilt::BaseMatrix* col_ptr = this->phialpha[0]->find_matrix(iat, ibt2, dR2); + for (int i = 0; i < trace_alpha_size; i++) { - s_2t[i * col_size + icol] - = col_ptr[trace_alpha_col[i]]; + s_2t[i * col_size + icol] = col_ptr->get_value(col_indexes[icol], trace_alpha_col[i]); } } @@ -201,69 +172,51 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, if constexpr (std::is_same::value) { - for (int is = 0; is < PARAM.inp.nspin; is++) + for (int is = 0; is < PARAM.inp.nspin; is++) { - hamilt::AtomPair dm_pair(ibt1, - ibt2, - 0, - 0, - 0, - pv); + hamilt::AtomPair dm_pair(ibt1, ibt2, 0, 0, 0, pv); dm_pair.allocate(dm_array.data(), 0); - if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) { - dm_pair.add_from_matrix(dm_hl[0][is].c, - pv->get_row_size(), - 1.0, - 1); - } - else + dm_pair.add_from_matrix(dm_hl[0][is].c, pv->get_row_size(), 1.0, 1); + } + else { - dm_pair.add_from_matrix(dm_hl[0][is].c, - pv->get_col_size(), - 1.0, - 0); + dm_pair.add_from_matrix(dm_hl[0][is].c, pv->get_col_size(), 1.0, 0); } } // is } else { - for (int ik = 0; ik < nks; ik++) + for (int ik = 0; ik < nks; ik++) { hamilt::AtomPair dm_pair(ibt1, - ibt2, - (dR2 - dR1).x, - (dR2 - dR1).y, - (dR2 - dR1).z, - pv); + ibt2, + (dR2 - dR1).x, + (dR2 - dR1).y, + (dR2 - dR1).z, + pv); dm_pair.allocate(&dm_array[ik * row_size * col_size], 0); const double arg - = -(kvec_d[ik] * (dR2 - dR1)) * ModuleBase::TWO_PI; + = -(kvec_d[ik] * ModuleBase::Vector3(dR2 - dR1)) * ModuleBase::TWO_PI; double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); - const std::complex kphase - = std::complex(cosp, sinp); + const std::complex kphase = std::complex(cosp, sinp); - if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) { - dm_pair.add_from_matrix(dm_hl[0][ik].c, - pv->get_row_size(), - kphase, - 1); - } - else + dm_pair.add_from_matrix(dm_hl[0][ik].c, pv->get_row_size(), kphase, 1); + } + else { - dm_pair.add_from_matrix(dm_hl[0][ik].c, - pv->get_col_size(), - kphase, - 0); + dm_pair.add_from_matrix(dm_hl[0][ik].c, pv->get_col_size(), kphase, 0); } } // ik } @@ -272,9 +225,9 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, constexpr char transa = 'T', transb = 'N'; double gemm_alpha = 1.0, gemm_beta = 1.0; - if constexpr (std::is_same>::value) + if constexpr (std::is_same>::value) { - if (ibt1 < ibt2) + if (ibt1 < ibt2) { gemm_alpha = 2.0; } @@ -302,9 +255,9 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, int ib = 0, index = 0, inc = 1; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) { - for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { const int inl = this->inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; @@ -315,10 +268,10 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, { orbital_pdm_shell[ik][0][inl][m1 * nm + m2] += ddot_(&row_size, - p_g1dmt + index * row_size * nks, - &inc, - s_1t.data() + index * row_size, - &inc); + p_g1dmt + index * row_size * nks, + &inc, + s_1t.data() + index * row_size, + &inc); index++; } } @@ -330,11 +283,11 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, } } #ifdef __MPI - for (int iks = 0; iks < nks; iks++) + for (int iks = 0; iks < nks; iks++) { for (int hl = 0; hl < 1; hl++) { - for (int inl = 0; inl < this->inlmax; inl++) + for (int inl = 0; inl < this->inlmax; inl++) { Parallel_Reduce::reduce_all(this->orbital_pdm_shell[iks][hl][inl], (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)); @@ -348,16 +301,16 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, int nlmax = this->inlmax / nat; std::vector orbital_pdm_shell_vector; - for (int nl = 0; nl < nlmax; ++nl) + for (int nl = 0; nl < nlmax; ++nl) { std::vector kiammv; - for (int iks = 0; iks < nks; ++iks) + for (int iks = 0; iks < nks; ++iks) { std::vector iammv; for (int hl = 0; hl < 1; ++hl) { std::vector ammv; - for (int iat = 0; iat < nat; ++iat) + for (int iat = 0; iat < nat; ++iat) { int inl = iat * nlmax + nl; int nm = 2 * this->inl_l[inl] + 1; @@ -367,12 +320,11 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - mmv.push_back( - this->orbital_pdm_shell[iks][hl][inl][m1 * nm + m2]); + mmv.push_back(this->orbital_pdm_shell[iks][hl][inl][m1 * nm + m2]); } } - torch::Tensor mm = torch::tensor(mmv, - torch::TensorOptions().dtype(torch::kFloat64)).reshape({nm, nm}); // nm*nm + torch::Tensor mm + = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64)).reshape({nm, nm}); // nm*nm ammv.push_back(mm); } @@ -390,11 +342,10 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, // einsum for each nl: std::vector orbital_precalc_vector; - for (int nl = 0; nl < nlmax; ++nl) + for (int nl = 0; nl < nlmax; ++nl) { orbital_precalc_vector.push_back( - at::einsum("kiamn, avmn->kiav", - {orbital_pdm_shell_vector[nl], this->gevdm_vector[nl]})); + at::einsum("kiamn, avmn->kiav", {orbital_pdm_shell_vector[nl], this->gevdm_vector[nl]})); } this->orbital_precalc_tensor = torch::cat(orbital_precalc_vector, -1); diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp index ae8384057c..1414b4bbea 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp @@ -21,7 +21,7 @@ void test_deepks::check_dstable() // this->compare_with_ref("S_I_mu_alpha.dat","S_I_mu_alpha_ref.dat"); } -void test_deepks::check_psialpha() +void test_deepks::check_phialpha() { std::vector na; na.resize(ucell.ntype); @@ -31,14 +31,16 @@ void test_deepks::check_psialpha() } ld.init(ORB, ucell.nat, ucell.ntype, ParaO, na); - ld.build_psialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD, overlap_orb_alpha_); + ld.allocate_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD); - ld.check_psialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD); + ld.build_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD, overlap_orb_alpha_); - this->compare_with_ref("psialpha.dat", "psialpha_ref.dat"); - this->compare_with_ref("dpsialpha_x.dat", "dpsialpha_x_ref.dat"); - this->compare_with_ref("dpsialpha_y.dat", "dpsialpha_y_ref.dat"); - this->compare_with_ref("dpsialpha_z.dat", "dpsialpha_z_ref.dat"); + ld.check_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD); + + this->compare_with_ref("phialpha.dat", "phialpha_ref.dat"); + this->compare_with_ref("dphialpha_x.dat", "dphialpha_x_ref.dat"); + this->compare_with_ref("dphialpha_y.dat", "dphialpha_y_ref.dat"); + this->compare_with_ref("dphialpha_z.dat", "dphialpha_z_ref.dat"); } void test_deepks::read_dm() @@ -126,11 +128,11 @@ void test_deepks::check_gdmx() this->ld.init_gdmx(ucell.nat); if (PARAM.sys.gamma_only_local) { - this->ld.cal_gdmx(dm_new, ucell, ORB, Test_Deepks::GridD, kv.get_nkstot(), kv.kvec_d, 0); + this->ld.cal_gdmx(dm_new, ucell, ORB, Test_Deepks::GridD, kv.get_nkstot(), kv.kvec_d, this->ld.phialpha, 0); } else { - this->ld.cal_gdmx(dm_k_new, ucell, ORB, Test_Deepks::GridD, kv.get_nkstot(), kv.kvec_d, 0); + this->ld.cal_gdmx(dm_k_new, ucell, ORB, Test_Deepks::GridD, kv.get_nkstot(), kv.kvec_d, this->ld.phialpha, 0); } this->ld.check_gdmx(ucell.nat); @@ -200,7 +202,7 @@ void test_deepks::check_edelta() this->ld.load_model("model.ptg"); if (PARAM.sys.gamma_only_local) { - this->ld.allocate_V_delta(ucell.nat); + this->ld.allocate_V_delta(ucell.nat, 1); // 1 for gamma-only } else { @@ -239,14 +241,16 @@ void test_deepks::check_f_delta() { ModuleBase::matrix svnl_dalpha; svnl_dalpha.create(3, 3); + const int cal_stress = 1; if (PARAM.sys.gamma_only_local) { - const int nks=1; - ld.cal_f_delta_gamma(dm_new, ucell, ORB, Test_Deepks::GridD, nks, kv.kvec_d, 1, svnl_dalpha); + const int nks = 1; + ld.cal_f_delta(dm_new, ucell, ORB, Test_Deepks::GridD, nks, kv.kvec_d, cal_stress, svnl_dalpha); } else { - ld.cal_f_delta_k(dm_k_new, ucell, ORB, Test_Deepks::GridD, kv.get_nkstot(), kv.kvec_d, 1, svnl_dalpha); + const int nks = kv.get_nkstot(); + ld.cal_f_delta(dm_k_new, ucell, ORB, Test_Deepks::GridD, nks, kv.kvec_d, cal_stress, svnl_dalpha); } ld.check_f_delta(ucell.nat, svnl_dalpha); diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h index 6599cdfa25..76fbac4e51 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h @@ -81,7 +81,7 @@ class test_deepks // checking void check_dstable(); - void check_psialpha(); + void check_phialpha(); void read_dm(); void read_dm_k(const int nks); diff --git a/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects b/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects index 9dd6191688..2f57c87d09 100644 --- a/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects +++ b/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects @@ -13,7 +13,7 @@ LCAO_deepks_fdelta.o\ LCAO_deepks_io.o\ LCAO_deepks_mpi.o\ LCAO_deepks_pdm.o\ -LCAO_deepks_psialpha.o\ +LCAO_deepks_phialpha.o\ LCAO_deepks_vdelta.o\ LCAO_deepks_torch.o\ diff --git a/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp b/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp index 622cdfbae8..9dbe86cbf2 100644 --- a/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp @@ -32,7 +32,7 @@ int calculate() test.preparation(); test.check_dstable(); - test.check_psialpha(); + test.check_phialpha(); test.check_pdm(); test.check_gdmx(); diff --git a/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp b/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp index 6bb4c0ac6a..489692ed1a 100644 --- a/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp +++ b/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp @@ -14,7 +14,6 @@ #include "module_hamilt_lcao/module_hcontainer/atom_pair.h" #include "module_parameter/parameter.h" - // calculates v_delta_precalc[nks,nlocal,nlocal,NAt,NDscrpt] = gvdm * v_delta_pdm_shell; // v_delta_pdm_shell[nks,nlocal,nlocal,Inl,nm*nm] = overlap * overlap; // for deepks_v_delta = 1 @@ -33,266 +32,263 @@ void LCAO_Deepks::cal_v_delta_precalc(const int nlocal, this->cal_gvdm(nat); const double Rcut_Alpha = orb.Alpha[0].getRcut(); - this->init_v_delta_pdm_shell(nks,nlocal); - + this->init_v_delta_pdm_shell(nks, nlocal); + for (int T0 = 0; T0 < ucell.ntype; T0++) { - Atom* atom0 = &ucell.atoms[T0]; - - for (int I0 =0; I0< atom0->na; I0++) + Atom* atom0 = &ucell.atoms[T0]; + + for (int I0 = 0; I0 < atom0->na; I0++) { - const int iat = ucell.itia2iat(T0,I0); + const int iat = ucell.itia2iat(T0, I0); const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0] ,T0, I0); + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); - for (int ad1=0; ad1 tau1 = GridD.getAdjacentTau(ad1); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw*PARAM.globalv.npol; - const double Rcut_AO1 = orb.Phi[T1].getRcut(); + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; + const double Rcut_AO1 = orb.Phi[T1].getRcut(); - const double dist1 = (tau1-tau0).norm() * ucell.lat0; + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; if (dist1 >= Rcut_Alpha + Rcut_AO1) { continue; } - - ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, - GridD.getBox(ad1).y, - GridD.getBox(ad1).z); - key_tuple key_1(ibt1, dR1.x, dR1.y, dR1.z); + ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); if constexpr (std::is_same>::value) { - if (this->nlm_save_k[iat].find(key_1) - == this->nlm_save_k[iat].end()) + if (this->phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr) { continue; } } - for (int ad2=0; ad2 < GridD.getAdjacentNum()+1 ; ad2++) - { - const int T2 = GridD.getType(ad2); - const int I2 = GridD.getNatom(ad2); + for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) + { + const int T2 = GridD.getType(ad2); + const int I2 = GridD.getNatom(ad2); const int ibt2 = ucell.itia2iat(T2, I2); - const int start2 = ucell.itiaiw2iwt(T2, I2, 0); - const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); - const Atom* atom2 = &ucell.atoms[T2]; - const int nw2_tot = atom2->nw*PARAM.globalv.npol; - - const double Rcut_AO2 = orb.Phi[T2].getRcut(); - const double dist2 = (tau2-tau0).norm() * ucell.lat0; - - if (dist2 >= Rcut_Alpha + Rcut_AO2) - { - continue; - } - - ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, - GridD.getBox(ad2).y, - GridD.getBox(ad2).z); - key_tuple key_2(ibt2, dR2.x, dR2.y, dR2.z); + const int start2 = ucell.itiaiw2iwt(T2, I2, 0); + const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); + const Atom* atom2 = &ucell.atoms[T2]; + const int nw2_tot = atom2->nw * PARAM.globalv.npol; + + const double Rcut_AO2 = orb.Phi[T2].getRcut(); + const double dist2 = (tau2 - tau0).norm() * ucell.lat0; + + if (dist2 >= Rcut_Alpha + Rcut_AO2) + { + continue; + } + + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); if constexpr (std::is_same>::value) { - if (this->nlm_save_k[iat].find(key_2) - == this->nlm_save_k[iat].end()) + if (this->phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) { continue; } } - for (int iw1=0; iw1global2local_row(iw1_all); - if(iw1_local < 0) {continue;} - const int iw1_0 = iw1/PARAM.globalv.npol; - for (int iw2=0; iw2global2local_col(iw2_all); - if(iw2_local < 0) {continue;} - const int iw2_0 = iw2/PARAM.globalv.npol; - - std::vector nlm1; - std::vector nlm2; - if constexpr (std::is_same::value) - { - nlm1 = this->nlm_save[iat][ad1][iw1][0]; - nlm2 = this->nlm_save[iat][ad2][iw2][0]; - } - else + for (int iw1 = 0; iw1 < nw1_tot; ++iw1) + { + const int iw1_all = start1 + iw1; // this is \mu + const int iw1_local = pv->global2local_row(iw1_all); + if (iw1_local < 0) + { + continue; + } + for (int iw2 = 0; iw2 < nw2_tot; ++iw2) + { + const int iw2_all = start2 + iw2; // this is \nu + const int iw2_local = pv->global2local_col(iw2_all); + if (iw2_local < 0) { - nlm1 = this->nlm_save_k[iat][key_1][iw1][0]; - nlm2 = this->nlm_save_k[iat][key_2][iw2][0]; + continue; } - assert(nlm1.size()==nlm2.size()); + hamilt::BaseMatrix* overlap_1 = phialpha[0]->find_matrix(iat, ibt1, dR1); + hamilt::BaseMatrix* overlap_2 = phialpha[0]->find_matrix(iat, ibt2, dR2); + assert(overlap_1->get_col_size() == overlap_2->get_col_size()); + for (int ik = 0; ik < nks; ik++) { - int ib=0; + int ib = 0; std::complex kphase = std::complex(1.0, 0.0); if constexpr (std::is_same>::value) { - const double arg = - (kvec_d[ik] * (dR1-dR2) ) * ModuleBase::TWO_PI; + const double arg + = -(kvec_d[ik] * ModuleBase::Vector3(dR1 - dR2)) * ModuleBase::TWO_PI; double sinp, cosp; ModuleBase::libm::sincos(arg, &sinp, &cosp); kphase = std::complex(cosp, sinp); } - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax();++L0) + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) { - for (int N0 = 0;N0 < orb.Alpha[0].getNchi(L0);++N0) + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { const int inl = this->inl_index[T0](I0, L0, N0); - const int nm = 2*L0+1; - - for (int m1=0; m1::value) { - this->v_delta_pdm_shell[ik][iw1_all][iw2_all][inl][m1*nm+m2] += nlm1[ib+m1]*nlm2[ib+m2]; + this->v_delta_pdm_shell[ik][iw1_all][iw2_all][inl][m1 * nm + m2] + += overlap_1->get_value(iw1, ib + m1) + * overlap_2->get_value(iw2, ib + m2); } else { - this->v_delta_pdm_shell_complex[ik][iw1_all][iw2_all][inl][m1*nm+m2] += nlm1[ib+m1]*nlm2[ib+m2]*kphase; + this->v_delta_pdm_shell_complex[ik][iw1_all][iw2_all][inl] + [m1 * nm + m2] + += overlap_1->get_value(iw1, ib + m1) + * overlap_2->get_value(iw2, ib + m2) * kphase; } } } - ib+=nm; + ib += nm; } - } - } //ik - }//iw2 - }//iw1 - }//ad2 - }//ad1 - + } + } // ik + } // iw2 + } // iw1 + } // ad2 + } // ad1 } } #ifdef __MPI - const int mn_size=(2 * this->lmaxd + 1) * (2 * this->lmaxd + 1); + const int mn_size = (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1); for (int ik = 0; ik < nks; ik++) { - for(int inl = 0; inl < this->inlmax; inl++) + for (int inl = 0; inl < this->inlmax; inl++) { - for(int mu = 0; mu < nlocal ; mu++) + for (int mu = 0; mu < nlocal; mu++) { - for(int nu=0; nu< nlocal ; nu++) + for (int nu = 0; nu < nlocal; nu++) { if constexpr (std::is_same::value) { - Parallel_Reduce::reduce_all(this->v_delta_pdm_shell[ik][mu][nu][inl],mn_size); + Parallel_Reduce::reduce_all(this->v_delta_pdm_shell[ik][mu][nu][inl], mn_size); } else { - Parallel_Reduce::reduce_all(this->v_delta_pdm_shell_complex[ik][mu][nu][inl],mn_size); + Parallel_Reduce::reduce_all(this->v_delta_pdm_shell_complex[ik][mu][nu][inl], mn_size); } } } } } -#endif - +#endif + // transfer v_delta_pdm_shell to v_delta_pdm_shell_vector - - int nlmax = this->inlmax/nat; - + + int nlmax = this->inlmax / nat; + std::vector v_delta_pdm_shell_vector; - for(int nl = 0; nl < nlmax; ++nl) + for (int nl = 0; nl < nlmax; ++nl) { std::vector kuuammv; - for(int iks = 0; iks < nks; ++iks) + for (int iks = 0; iks < nks; ++iks) { std::vector uuammv; - for(int mu = 0; mu < nlocal; ++mu) + for (int mu = 0; mu < nlocal; ++mu) { std::vector uammv; - for(int nu =0 ; nu < nlocal; ++nu) + for (int nu = 0; nu < nlocal; ++nu) { std::vector ammv; - for (int iat=0; iatinl_l[inl]+1; + int inl = iat * nlmax + nl; + int nm = 2 * this->inl_l[inl] + 1; std::vector mmv; - - for (int m1=0; m1::value) { - mmv.push_back(this->v_delta_pdm_shell[iks][mu][nu][inl][m1*nm+m2]); + mmv.push_back(this->v_delta_pdm_shell[iks][mu][nu][inl][m1 * nm + m2]); } else { - mmv.push_back(this->v_delta_pdm_shell_complex[iks][mu][nu][inl][m1*nm+m2]); + mmv.push_back(this->v_delta_pdm_shell_complex[iks][mu][nu][inl][m1 * nm + m2]); } } } if constexpr (std::is_same::value) { - torch::Tensor mm = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64) ).reshape({nm, nm}); //nm*nm + torch::Tensor mm = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64)) + .reshape({nm, nm}); // nm*nm ammv.push_back(mm); } else { - torch::Tensor mm = torch::from_blob(mmv.data(), {nm, nm}, torch::TensorOptions().dtype(torch::kComplexDouble)).clone(); //nm*nm + torch::Tensor mm = torch::from_blob(mmv.data(), + {nm, nm}, + torch::TensorOptions().dtype(torch::kComplexDouble)) + .clone(); // nm*nm ammv.push_back(mm); } } - torch::Tensor amm = torch::stack(ammv, 0); - uammv.push_back(amm); + torch::Tensor amm = torch::stack(ammv, 0); + uammv.push_back(amm); } - torch::Tensor uamm = torch::stack(uammv, 0); + torch::Tensor uamm = torch::stack(uammv, 0); uuammv.push_back(uamm); } - torch::Tensor uuamm = torch::stack(uuammv, 0); + torch::Tensor uuamm = torch::stack(uuammv, 0); kuuammv.push_back(uuamm); } - torch::Tensor kuuamm = torch::stack(kuuammv, 0); + torch::Tensor kuuamm = torch::stack(kuuammv, 0); v_delta_pdm_shell_vector.push_back(kuuamm); } - + assert(v_delta_pdm_shell_vector.size() == nlmax); - - //einsum for each nl: + + // einsum for each nl: std::vector v_delta_precalc_vector; - for (int nl = 0; nl::value) { - v_delta_precalc_vector.push_back(at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], this->gevdm_vector[nl]})); + v_delta_precalc_vector.push_back( + at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], this->gevdm_vector[nl]})); } else { torch::Tensor gevdm_vector_complex = this->gevdm_vector[nl].to(torch::kComplexDouble); - v_delta_precalc_vector.push_back(at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], gevdm_vector_complex})); + v_delta_precalc_vector.push_back( + at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], gevdm_vector_complex})); } } this->v_delta_precalc_tensor = torch::cat(v_delta_precalc_vector, -1); - this->del_v_delta_pdm_shell(nks,nlocal); + this->del_v_delta_pdm_shell(nks, nlocal); - //check_v_delta_precalc(nlocal,nat); - // timeval t_end; - // gettimeofday(&t_end,NULL); - // std::cout<<"calculate v_delta_precalc time:\t"<<(double)(t_end.tv_sec-t_start.tv_sec) + (double)(t_end.tv_usec-t_start.tv_usec)/1000000.0< -void LCAO_Deepks::check_v_delta_precalc(const int nat, const int nks,const int nlocal) +void LCAO_Deepks::check_v_delta_precalc(const int nat, const int nks, const int nlocal) { std::ofstream ofs("v_delta_precalc.dat"); ofs << std::setprecision(10); @@ -302,22 +298,24 @@ void LCAO_Deepks::check_v_delta_precalc(const int nat, const int nks,const int n { for (int nu = 0; nu < nlocal; ++nu) { - for (int iat = 0;iat < nat;++iat) + for (int iat = 0; iat < nat; ++iat) { - for(int p=0; pdes_per_atom; ++p) + for (int p = 0; p < this->des_per_atom; ++p) { if constexpr (std::is_same::value) { - ofs << this->v_delta_precalc_tensor.index({iks, mu, nu, iat, p }).item().toDouble() << " " ; + ofs << this->v_delta_precalc_tensor.index({iks, mu, nu, iat, p}).item().toDouble() << " "; } else { auto tensor_value = this->v_delta_precalc_tensor.index({iks, mu, nu, iat, p}); - ofs << std::complex(torch::real(tensor_value).item(), torch::imag(tensor_value).item()) << " " ; + ofs << std::complex(torch::real(tensor_value).item(), + torch::imag(tensor_value).item()) + << " "; } } } - ofs << std::endl; + ofs << std::endl; } } } diff --git a/source/module_hamilt_lcao/module_hcontainer/atom_pair.cpp b/source/module_hamilt_lcao/module_hcontainer/atom_pair.cpp index d35553a2f8..cef77a34ac 100644 --- a/source/module_hamilt_lcao/module_hcontainer/atom_pair.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/atom_pair.cpp @@ -347,6 +347,10 @@ void AtomPair::set_size(const int& col_size_in, const int& row_size_in) { this->col_size = col_size_in; this->row_size = row_size_in; + for (int i = 0; i < this->values.size(); i++) + { + this->values[i].set_size(row_size_in, col_size_in); + } } // get paraV for check diff --git a/source/module_hamilt_lcao/module_hcontainer/base_matrix.cpp b/source/module_hamilt_lcao/module_hcontainer/base_matrix.cpp index a7531a1245..4b1850801a 100644 --- a/source/module_hamilt_lcao/module_hcontainer/base_matrix.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/base_matrix.cpp @@ -216,6 +216,14 @@ size_t BaseMatrix::get_memory_size() const return memory_size; } +// set size +template +void BaseMatrix::set_size(const int& nrow, const int& ncol) +{ + this->nrow_local = nrow; + this->ncol_local = ncol; +} + // T of BaseMatrix can be double or complex template class BaseMatrix; template class BaseMatrix>; diff --git a/source/module_hamilt_lcao/module_hcontainer/base_matrix.h b/source/module_hamilt_lcao/module_hcontainer/base_matrix.h index 227666ebc3..bd47d49d79 100644 --- a/source/module_hamilt_lcao/module_hcontainer/base_matrix.h +++ b/source/module_hamilt_lcao/module_hcontainer/base_matrix.h @@ -80,7 +80,7 @@ class BaseMatrix */ size_t get_memory_size() const; - /** + /** * @brief get col_size for this matrix */ int get_col_size() const {return ncol_local;}; @@ -88,6 +88,10 @@ class BaseMatrix * @brief get row_size for this matrix */ int get_row_size() const {return nrow_local;}; + /** + * @brief set col_size and row_size + */ + void set_size(const int& col_size_in, const int& row_size_in); private: bool allocated = false; diff --git a/source/module_io/read_input_item_deepks.cpp b/source/module_io/read_input_item_deepks.cpp index a641812d4c..6d4268a502 100644 --- a/source/module_io/read_input_item_deepks.cpp +++ b/source/module_io/read_input_item_deepks.cpp @@ -48,7 +48,7 @@ void ReadInput::item_deepks() } { Input_Item item("deepks_v_delta"); - item.annotation = ">0 for v_delta label. when output, 1 for v_delta_precalc, 2 for psialpha and grad_evdm ( can save memory )"; + item.annotation = ">0 for v_delta label. when output, 1 for v_delta_precalc, 2 for phialpha and grad_evdm ( can save memory )"; read_sync_int(input.deepks_v_delta); this->add_item(item); } @@ -67,9 +67,9 @@ void ReadInput::item_deepks() }; item.check_value = [](const Input_Item& item, const Parameter& para) { if (para.input.deepks_out_unittest){ - if (para.input.cal_force != 1) + if (para.input.cal_force != 1 || para.input.cal_stress != 1) { - ModuleBase::WARNING_QUIT("ReadInput", "force is required in generating deepks unittest"); + ModuleBase::WARNING_QUIT("ReadInput", "force and stress are required in generating deepks unittest"); } } }; diff --git a/tests/deepks/602_NO_deepks_d_H2O_md_lda2pbe/result.ref b/tests/deepks/602_NO_deepks_d_H2O_md_lda2pbe/result.ref index c197e2c934..481746130e 100644 --- a/tests/deepks/602_NO_deepks_d_H2O_md_lda2pbe/result.ref +++ b/tests/deepks/602_NO_deepks_d_H2O_md_lda2pbe/result.ref @@ -1,9 +1,9 @@ -etotref -465.9986234579140 -etotperatomref -155.3328744860 +etotref -465.9986234576679 +etotperatomref -155.3328744859 totalforceref 5.535106 -totalstressref 1.520003 +totalstressref 1.522353 totaldes 2.163703 -deepks_e_dm -57.885718058035934 -deepks_f_label 19.095598453044364 -deepks_s_label 19.250415261605152 -totaltimeref 12.68 +deepks_e_dm -57.8857180593137 +deepks_f_label 19.09559844689178 +deepks_s_label 19.250590727951906 +totaltimeref 12.58 diff --git a/tests/deepks/602_NO_deepks_d_H2O_scf_lda2pbe/result.ref b/tests/deepks/602_NO_deepks_d_H2O_scf_lda2pbe/result.ref index bfbc3f2cf0..7e71a478e6 100644 --- a/tests/deepks/602_NO_deepks_d_H2O_scf_lda2pbe/result.ref +++ b/tests/deepks/602_NO_deepks_d_H2O_scf_lda2pbe/result.ref @@ -1,9 +1,9 @@ -etotref -466.0342709734272262 +etotref -466.0342709734266577 etotperatomref -155.3447569911 totalforceref 3.194893 -totalstressref 1.190505 +totalstressref 1.190889 totaldes 2.319513 -deepks_e_dm -57.521935314706305 -deepks_f_label 19.875352737513325 -deepks_s_label 19.58791026543513 -totaltimeref 5.81 +deepks_e_dm -57.521935314706134 +deepks_f_label 19.87535273614641 +deepks_s_label 19.587939082569576 +totaltimeref 5.75 diff --git a/tests/deepks/603_NO_deepks_H2O_v_delta_2/result.ref b/tests/deepks/603_NO_deepks_H2O_v_delta_2/result.ref index 424166d990..877019c659 100644 --- a/tests/deepks/603_NO_deepks_H2O_v_delta_2/result.ref +++ b/tests/deepks/603_NO_deepks_H2O_v_delta_2/result.ref @@ -4,6 +4,6 @@ totaldes 2.319513 deepks_e_dm -57.5219353147063 totalh 27.746059584703197 totalvdelta -0.09650548509283459 -total_psialpha 17.716143578864877 +total_phialpha 17.716143578864877 total_gevdm 54.0 totaltimeref 5.42 diff --git a/tests/integrate/tools/catch_properties.sh b/tests/integrate/tools/catch_properties.sh index 10e9adbe99..7b4e222228 100755 --- a/tests/integrate/tools/catch_properties.sh +++ b/tests/integrate/tools/catch_properties.sh @@ -514,8 +514,8 @@ if ! test -z "$deepks_v_delta" && [ $deepks_v_delta == 2 ]; then echo "totalh $totalh" >>$1 totalvdelta=`python3 get_v_delta.py` echo "totalvdelta $totalvdelta" >>$1 - total_psialpha=`python3 get_sum_numpy.py OUT.autotest/deepks_psialpha.npy ` - echo "total_psialpha $total_psialpha" >> $1 + total_phialpha=`python3 get_sum_numpy.py OUT.autotest/deepks_phialpha.npy ` + echo "total_phialpha $total_phialpha" >> $1 total_gevdm=`python3 get_sum_numpy.py OUT.autotest/deepks_gevdm.npy ` echo "total_gevdm $total_gevdm" >> $1 fi From c3e78f75f706e362c2b23e4334465d736312a4bc Mon Sep 17 00:00:00 2001 From: dyzheng Date: Fri, 27 Dec 2024 10:05:39 +0800 Subject: [PATCH 20/44] Fix: read atomic magnetization error (#5772) --- source/module_cell/read_atoms.cpp | 71 ++++++++++++++++--------------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/source/module_cell/read_atoms.cpp b/source/module_cell/read_atoms.cpp index 30ae5c504b..9f369cd3f5 100644 --- a/source/module_cell/read_atoms.cpp +++ b/source/module_cell/read_atoms.cpp @@ -676,45 +676,44 @@ bool UnitCell::read_atom_positions(std::ifstream &ifpos, std::ofstream &ofs_runn std::string mags; //cout<<"mag"< 1e-10 ) { - if(input_angle_mag) - { - atoms[it].m_loc_[ia].z = atoms[it].mag[ia] * - cos(atoms[it].angle1[ia]); - if(std::abs(sin(atoms[it].angle1[ia])) > 1e-10 ) - { - atoms[it].m_loc_[ia].x = atoms[it].mag[ia] * - sin(atoms[it].angle1[ia]) * cos(atoms[it].angle2[ia]); - atoms[it].m_loc_[ia].y = atoms[it].mag[ia] * - sin(atoms[it].angle1[ia]) * sin(atoms[it].angle2[ia]); - } - } - else if (input_vec_mag) - { - double mxy=sqrt(pow(atoms[it].m_loc_[ia].x,2)+pow(atoms[it].m_loc_[ia].y,2)); - atoms[it].angle1[ia]=atan2(mxy,atoms[it].m_loc_[ia].z); - if(mxy>1e-8) - { - atoms[it].angle2[ia]=atan2(atoms[it].m_loc_[ia].y,atoms[it].m_loc_[ia].x); - } - } - else - { - atoms[it].m_loc_[ia].x = 0; - atoms[it].m_loc_[ia].y = 0; - atoms[it].m_loc_[ia].z = atoms[it].mag[ia]; - } + atoms[it].m_loc_[ia].x = atoms[it].mag[ia] * + sin(atoms[it].angle1[ia]) * cos(atoms[it].angle2[ia]); + atoms[it].m_loc_[ia].y = atoms[it].mag[ia] * + sin(atoms[it].angle1[ia]) * sin(atoms[it].angle2[ia]); } - else + } + else if (input_vec_mag) + {// mx, my, mz are given, calculate angle1 and angle2 from mx, my, mz + double mxy=sqrt(pow(atoms[it].m_loc_[ia].x,2)+pow(atoms[it].m_loc_[ia].y,2)); + atoms[it].angle1[ia]=atan2(mxy,atoms[it].m_loc_[ia].z); + if(mxy>1e-8) { + atoms[it].angle2[ia]=atan2(atoms[it].m_loc_[ia].y,atoms[it].m_loc_[ia].x); + } + } + else// only one mag is given, assume it is z + { + atoms[it].m_loc_[ia].x = 0; + atoms[it].m_loc_[ia].y = 0; + atoms[it].m_loc_[ia].z = atoms[it].mag[ia]; + } + + if(PARAM.inp.nspin==4) + { + if(!PARAM.inp.noncolin) + { + //collinear case with nspin = 4, only z component is used atoms[it].m_loc_[ia].x = 0; atoms[it].m_loc_[ia].y = 0; - atoms[it].m_loc_[ia].z = atoms[it].mag[ia]; } - //print only ia==0 && mag>0 to avoid too much output //print when ia!=0 && mag[ia] != mag[0] to avoid too much output if(ia==0 || (ia!=0 @@ -734,8 +733,8 @@ bool UnitCell::read_atom_positions(std::ifstream &ifpos, std::ofstream &ofs_runn ModuleBase::GlobalFunc::ZEROS(magnet.ux_ ,3); } else if(PARAM.inp.nspin==2) - { - atoms[it].m_loc_[ia].x = atoms[it].mag[ia]; + {// collinear case with nspin = 2, only z component is used + atoms[it].mag[ia] = atoms[it].m_loc_[ia].z; //print only ia==0 && mag>0 to avoid too much output //print when ia!=0 && mag[ia] != mag[0] to avoid too much output if(ia==0 || (ia!=0 && atoms[it].mag[ia] != atoms[it].mag[0])) @@ -750,6 +749,8 @@ bool UnitCell::read_atom_positions(std::ifstream &ifpos, std::ofstream &ofs_runn ModuleBase::GlobalFunc::OUT(ofs_running, ss.str(),atoms[it].mag[ia]); } } + // end of calculating initial magnetization of each atom + // ---------------------------------------------------------------------------- if(Coordinate=="Direct") { From 79e054e1a38992d8d394b0f77d290721ae071bb3 Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Fri, 27 Dec 2024 10:07:41 +0800 Subject: [PATCH 21/44] Fix: enable ecutrho/ecutwfc > 4 for ncpp (#5765) * Fix: enable ecutrho/ecutwfc > 4 for ncpp * Tests: add integrated tests * Fix: init rhog * Fix: enable combination of ncpp and uspp * Tests: add tests * Tests: update result.ref * Tests: update tests --- source/module_elecstate/elecstate_pw.cpp | 94 +++++++++++++------ source/module_elecstate/elecstate_pw.h | 10 +- .../hamilt_pwdft/VNL_in_pw.cpp | 2 + .../101_PW_upf201_Al_pseudopots/INPUT | 1 + .../101_PW_upf201_Al_pseudopots/README | 2 + .../integrate/101_PW_upf201_Al_pseudopots/jd | 2 +- .../101_PW_upf201_Al_pseudopots/result.ref | 6 +- tests/integrate/101_PW_upf201_uspp_ncpp/INPUT | 30 ++++++ tests/integrate/101_PW_upf201_uspp_ncpp/KPT | 4 + tests/integrate/101_PW_upf201_uspp_ncpp/STRU | 19 ++++ tests/integrate/101_PW_upf201_uspp_ncpp/jd | 1 + .../101_PW_upf201_uspp_ncpp/result.ref | 5 + tests/integrate/CASES_CPU.txt | 1 + 13 files changed, 140 insertions(+), 37 deletions(-) create mode 100644 tests/integrate/101_PW_upf201_uspp_ncpp/INPUT create mode 100644 tests/integrate/101_PW_upf201_uspp_ncpp/KPT create mode 100644 tests/integrate/101_PW_upf201_uspp_ncpp/STRU create mode 100644 tests/integrate/101_PW_upf201_uspp_ncpp/jd create mode 100644 tests/integrate/101_PW_upf201_uspp_ncpp/result.ref diff --git a/source/module_elecstate/elecstate_pw.cpp b/source/module_elecstate/elecstate_pw.cpp index a22c87bcf7..5558856289 100644 --- a/source/module_elecstate/elecstate_pw.cpp +++ b/source/module_elecstate/elecstate_pw.cpp @@ -31,19 +31,26 @@ ElecStatePW::ElecStatePW(ModulePW::PW_Basis_K* wfc_basis_in, template ElecStatePW::~ElecStatePW() { - if (base_device::get_device_type(this->ctx) == base_device::GpuDevice) + if (PARAM.inp.device == "gpu" || PARAM.inp.precision == "single") { delmem_var_op()(this->ctx, this->rho_data); + delete[] this->rho; + + if (PARAM.globalv.double_grid || PARAM.globalv.use_uspp) + { + delmem_complex_op()(this->ctx, this->rhog_data); + delete[] this->rhog; + } if (get_xc_func_type() == 3 || PARAM.inp.out_elf[0] > 0) { delmem_var_op()(this->ctx, this->kin_r_data); + delete[] this->kin_r; } } - if (PARAM.inp.device == "gpu" || PARAM.inp.precision == "single") { - delete[] this->rho; - delete[] this->kin_r; + if (PARAM.globalv.use_uspp) + { + delmem_var_op()(this->ctx, this->becsum); } - delmem_var_op()(this->ctx, becsum); delmem_complex_op()(this->ctx, this->wfcr); delmem_complex_op()(this->ctx, this->wfcr_another_spin); } @@ -51,16 +58,28 @@ ElecStatePW::~ElecStatePW() template void ElecStatePW::init_rho_data() { - if(this->init_rho) { + if (this->init_rho) + { return; } - - if (PARAM.inp.device == "gpu" || PARAM.inp.precision == "single") { + + if (PARAM.inp.device == "gpu" || PARAM.inp.precision == "single") + { this->rho = new Real*[this->charge->nspin]; resmem_var_op()(this->ctx, this->rho_data, this->charge->nspin * this->charge->nrxx); - for (int ii = 0; ii < this->charge->nspin; ii++) { + for (int ii = 0; ii < this->charge->nspin; ii++) + { this->rho[ii] = this->rho_data + ii * this->charge->nrxx; } + if (PARAM.globalv.double_grid || PARAM.globalv.use_uspp) + { + this->rhog = new T*[this->charge->nspin]; + resmem_complex_op()(this->ctx, this->rhog_data, this->charge->nspin * this->charge->rhopw->npw); + for (int ii = 0; ii < this->charge->nspin; ii++) + { + this->rhog[ii] = this->rhog_data + ii * this->charge->rhopw->npw; + } + } if (get_xc_func_type() == 3 || PARAM.inp.out_elf[0] > 0) { this->kin_r = new Real*[this->charge->nspin]; @@ -70,8 +89,13 @@ void ElecStatePW::init_rho_data() } } } - else { + else + { this->rho = reinterpret_cast(this->charge->rho); + if (PARAM.globalv.double_grid || PARAM.globalv.use_uspp) + { + this->rhog = reinterpret_cast(this->charge->rhog); + } if (get_xc_func_type() == 3 || PARAM.inp.out_elf[0] > 0) { this->kin_r = reinterpret_cast(this->charge->kin_r); @@ -100,19 +124,24 @@ void ElecStatePW::psiToRho(const psi::Psi& psi) // ModuleBase::GlobalFunc::ZEROS(this->charge->kin_r[is], this->charge->nrxx); setmem_var_op()(this->ctx, this->kin_r[is], 0, this->charge->nrxx); } - } + if (PARAM.globalv.double_grid || PARAM.globalv.use_uspp) + { + setmem_complex_op()(this->ctx, this->rhog[is], 0, this->charge->rhopw->npw); + } + } for (int ik = 0; ik < psi.get_nk(); ++ik) { psi.fix_k(ik); this->updateRhoK(psi); } - if (PARAM.globalv.use_uspp) + + this->add_usrho(psi); + + if (PARAM.inp.device == "gpu" || PARAM.inp.precision == "single") { - this->add_usrho(psi); - } - if (PARAM.inp.device == "gpu" || PARAM.inp.precision == "single") { - for (int ii = 0; ii < PARAM.inp.nspin; ii++) { + for (int ii = 0; ii < PARAM.inp.nspin; ii++) + { castmem_var_d2h_op()(cpu_ctx, this->ctx, this->charge->rho[ii], this->rho[ii], this->charge->nrxx); if (get_xc_func_type() == 3) { @@ -397,32 +426,39 @@ void ElecStatePW::cal_becsum(const psi::Psi& psi) template void ElecStatePW::add_usrho(const psi::Psi& psi) { - this->cal_becsum(psi); + if (PARAM.globalv.use_uspp) + { + this->cal_becsum(psi); + } // transform soft charge to recip space using smooth grids - T* rhog = nullptr; - resmem_complex_op()(this->ctx, rhog, this->charge->rhopw->npw * PARAM.inp.nspin, "ElecState::rhog"); - setmem_complex_op()(this->ctx, rhog, 0, this->charge->rhopw->npw * PARAM.inp.nspin); - for (int is = 0; is < PARAM.inp.nspin; is++) + if (PARAM.globalv.double_grid || PARAM.globalv.use_uspp) { - this->rhopw_smooth->real2recip(this->rho[is], &rhog[is * this->charge->rhopw->npw]); + for (int is = 0; is < PARAM.inp.nspin; is++) + { + this->rhopw_smooth->real2recip(this->rho[is], this->rhog[is]); + } } // \sum_lm Q_lm(r) \sum_i w_i // add to the charge density in reciprocal space the part which is due to the US augmentation. - this->addusdens_g(becsum, rhog); + if (PARAM.globalv.use_uspp) + { + this->addusdens_g(becsum, rhog); + } // transform back to real space using dense grids - for (int is = 0; is < PARAM.inp.nspin; is++) + if (PARAM.globalv.double_grid || PARAM.globalv.use_uspp) { - this->charge->rhopw->recip2real(&rhog[is * this->charge->rhopw->npw], this->rho[is]); + for (int is = 0; is < PARAM.inp.nspin; is++) + { + this->charge->rhopw->recip2real(this->rhog[is], this->rho[is]); + } } - - delmem_complex_op()(this->ctx, rhog); } template -void ElecStatePW::addusdens_g(const Real* becsum, T* rhog) +void ElecStatePW::addusdens_g(const Real* becsum, T** rhog) { const T one{1, 0}; const T zero{0, 0}; @@ -506,7 +542,7 @@ void ElecStatePW::addusdens_g(const Real* becsum, T* rhog) this->ppcell->radial_fft_q(this->ctx, npw, ih, jh, it, qmod, ylmk0, qgm); for (int ig = 0; ig < npw; ig++) { - rhog[is * npw + ig] += qgm[ig] * aux2[ijh * npw + ig]; + rhog[is][ig] += qgm[ig] * aux2[ijh * npw + ig]; } ijh++; } diff --git a/source/module_elecstate/elecstate_pw.h b/source/module_elecstate/elecstate_pw.h index dc992fa37a..8259d83024 100644 --- a/source/module_elecstate/elecstate_pw.h +++ b/source/module_elecstate/elecstate_pw.h @@ -42,8 +42,9 @@ class ElecStatePW : public ElecState //! init rho_data and kin_r_data void init_rho_data(); - Real** rho = nullptr; - Real** kin_r = nullptr; //[Device] [spin][nrxx] rho and kin_r + Real** rho = nullptr; // [Device] [spin][nrxx] rho + T** rhog = nullptr; // [Device] [spin][nrxx] rhog + Real** kin_r = nullptr; // [Device] [spin][nrxx] kin_r protected: @@ -70,7 +71,7 @@ class ElecStatePW : public ElecState //! Non-local pseudopotentials //! \sum_lm Q_lm(r) \sum_i w_i - void addusdens_g(const Real* becsum, T* rhog); + void addusdens_g(const Real* becsum, T** rhog); Device * ctx = {}; @@ -78,7 +79,8 @@ class ElecStatePW : public ElecState mutable T* vkb = nullptr; - Real* rho_data = nullptr; + Real* rho_data = nullptr; + T* rhog_data = nullptr; Real* kin_r_data = nullptr; T* wfcr = nullptr; T* wfcr_another_spin = nullptr; diff --git a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.cpp index b1307b8523..66e255d4b8 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.cpp @@ -1542,6 +1542,8 @@ void pseudopot_cell_vnl::newq(const ModuleBase::matrix& veff, const ModulePW::PW fact = 2.0; } + deeq.zero_out(); + const int npw = rho_basis->npw; ModuleBase::matrix ylmk0(lmaxq * lmaxq, npw); ModuleBase::YlmReal::Ylm_Real(lmaxq * lmaxq, npw, rho_basis->gcar, ylmk0); diff --git a/tests/integrate/101_PW_upf201_Al_pseudopots/INPUT b/tests/integrate/101_PW_upf201_Al_pseudopots/INPUT index 8a3a962f7a..b6caf45d0b 100644 --- a/tests/integrate/101_PW_upf201_Al_pseudopots/INPUT +++ b/tests/integrate/101_PW_upf201_Al_pseudopots/INPUT @@ -9,6 +9,7 @@ pseudo_dir ../../PP_ORB #Parameters (2.Iteration) ecutwfc 30 +ecutrho 160 scf_thr 1e-9 scf_nmax 100 diff --git a/tests/integrate/101_PW_upf201_Al_pseudopots/README b/tests/integrate/101_PW_upf201_Al_pseudopots/README index eb66dbf457..eb167f8f42 100644 --- a/tests/integrate/101_PW_upf201_Al_pseudopots/README +++ b/tests/integrate/101_PW_upf201_Al_pseudopots/README @@ -3,3 +3,5 @@ This test for: *upf201 pseudopotential *mixing_type broyden-kerker *mixing_beta 0.7 +*ecutwfc 30 +*ecutrho 160 diff --git a/tests/integrate/101_PW_upf201_Al_pseudopots/jd b/tests/integrate/101_PW_upf201_Al_pseudopots/jd index eb37ed4384..8d19624a92 100644 --- a/tests/integrate/101_PW_upf201_Al_pseudopots/jd +++ b/tests/integrate/101_PW_upf201_Al_pseudopots/jd @@ -1 +1 @@ -test upf201 pseudopotential, symmetry=on +test upf201 pseudopotential with ecutrho/ecutwfc > 4, symmetry=on diff --git a/tests/integrate/101_PW_upf201_Al_pseudopots/result.ref b/tests/integrate/101_PW_upf201_Al_pseudopots/result.ref index 1d10b82f85..f10e1e901b 100644 --- a/tests/integrate/101_PW_upf201_Al_pseudopots/result.ref +++ b/tests/integrate/101_PW_upf201_Al_pseudopots/result.ref @@ -1,6 +1,6 @@ -etotref -57.66876692615671 -etotperatomref -57.6687669262 +etotref -57.66876684738178 +etotperatomref -57.6687668474 pointgroupref O_h spacegroupref O_h nksibzref 3 -totaltimeref +totaltimeref 0.29 diff --git a/tests/integrate/101_PW_upf201_uspp_ncpp/INPUT b/tests/integrate/101_PW_upf201_uspp_ncpp/INPUT new file mode 100644 index 0000000000..5264007cf5 --- /dev/null +++ b/tests/integrate/101_PW_upf201_uspp_ncpp/INPUT @@ -0,0 +1,30 @@ +INPUT_PARAMETERS +#Parameters (1.General) +suffix autotest +calculation scf +symmetry 0 +latname fcc +pseudo_dir ../../PP_ORB + +#Parameters (2.Iteration) +ecutwfc 20 +ecutrho 160 +scf_thr 1e-9 +scf_nmax 100 + +#Parameters (3.Basis) +basis_type pw + +#Parameters (4.Smearing) +smearing_method gaussian +smearing_sigma 0.002 + +#parameters (5.Mixing) +mixing_type pulay +mixing_beta 0.4 + +pseudo_mesh 1 +pseudo_rcut 10 + +cal_force 1 +cal_stress 1 diff --git a/tests/integrate/101_PW_upf201_uspp_ncpp/KPT b/tests/integrate/101_PW_upf201_uspp_ncpp/KPT new file mode 100644 index 0000000000..f5f7f4ec34 --- /dev/null +++ b/tests/integrate/101_PW_upf201_uspp_ncpp/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +2 2 2 0 0 0 diff --git a/tests/integrate/101_PW_upf201_uspp_ncpp/STRU b/tests/integrate/101_PW_upf201_uspp_ncpp/STRU new file mode 100644 index 0000000000..495f37f126 --- /dev/null +++ b/tests/integrate/101_PW_upf201_uspp_ncpp/STRU @@ -0,0 +1,19 @@ +ATOMIC_SPECIES +H 1.008 H_ONCV_PBE-1.0.upf +Cl 35.453 Cl.pbe-nl-rrkjus_psl.1.0.0.UPF + +LATTICE_CONSTANT +7 + +ATOMIC_POSITIONS +Direct + +H #label +0 #magnetism +1 #number of atoms +0.00 0.00 0.00 + +Cl #label +0 #magnetism +1 #number of atoms +0.51 0.00 0.00 diff --git a/tests/integrate/101_PW_upf201_uspp_ncpp/jd b/tests/integrate/101_PW_upf201_uspp_ncpp/jd new file mode 100644 index 0000000000..d049618ee2 --- /dev/null +++ b/tests/integrate/101_PW_upf201_uspp_ncpp/jd @@ -0,0 +1 @@ +test combination of upf201 uspp and ncpp, HCl nspin=1, symmetry=off diff --git a/tests/integrate/101_PW_upf201_uspp_ncpp/result.ref b/tests/integrate/101_PW_upf201_uspp_ncpp/result.ref new file mode 100644 index 0000000000..106e20bba3 --- /dev/null +++ b/tests/integrate/101_PW_upf201_uspp_ncpp/result.ref @@ -0,0 +1,5 @@ +etotref -426.8936030043360006 +etotperatomref -213.4468015022 +totalforceref 0.623688 +totalstressref 8822.968757 +totaltimeref 0.97 diff --git a/tests/integrate/CASES_CPU.txt b/tests/integrate/CASES_CPU.txt index 1c76104ae0..6e6093523a 100644 --- a/tests/integrate/CASES_CPU.txt +++ b/tests/integrate/CASES_CPU.txt @@ -18,6 +18,7 @@ 101_PW_upf201_upf100_pseudopots 101_PW_upf201_uspp_Fe 101_PW_upf201_uspp_NaCl +101_PW_upf201_uspp_ncpp 101_PW_VW_pseudopots 101_PW_Coulomb 101_PW_GTH_CF_CS_Si From 68735eddce40a71c1d8e42120ecbc39c428ff842 Mon Sep 17 00:00:00 2001 From: wqzhou <33364058+WHUweiqingzhou@users.noreply.github.com> Date: Fri, 27 Dec 2024 15:05:38 +0800 Subject: [PATCH 22/44] v3.9.0 (#5770) --- source/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/version.h b/source/version.h index 98f6deffee..5bed48cdd9 100644 --- a/source/version.h +++ b/source/version.h @@ -1,3 +1,3 @@ #ifndef VERSION -#define VERSION "v3.8.5" +#define VERSION "v3.9.0" #endif From 5e8bc21f08edc797cf3bfb994243c7da7b5b3e16 Mon Sep 17 00:00:00 2001 From: liiutao <74701833+A-006@users.noreply.github.com> Date: Sat, 28 Dec 2024 10:04:04 +0800 Subject: [PATCH 23/44] Refactor:Move the relaxation part of the ucell function (#5767) * udpate ucell cell-relax * change funcion setup ucell after vc * [pre-commit.ci lite] apply automatic fixes * fix bug in relax test * [pre-commit.ci lite] apply automatic fixes * add namespace for unitcell * add unittest for the setcell_after_vc --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/Makefile.Objects | 1 + source/module_cell/CMakeLists.txt | 1 + source/module_cell/test/CMakeLists.txt | 5 +- source/module_cell/test/prepare_unitcell.h | 2 +- .../test/support/mock_unitcell.cpp | 2 - source/module_cell/test/unitcell_test.cpp | 6 +- .../test/unitcell_test_setupcell.cpp | 43 ++- source/module_cell/unitcell.cpp | 342 ----------------- source/module_cell/unitcell.h | 3 - source/module_cell/unitcell_data.h | 7 +- source/module_cell/update_cell.cpp | 347 ++++++++++++++++++ source/module_cell/update_cell.h | 25 ++ source/module_md/msst.cpp | 11 +- source/module_md/nhchain.cpp | 6 +- source/module_md/test/CMakeLists.txt | 4 + source/module_relax/relax_new/relax.cpp | 6 +- .../relax_new/test/CMakeLists.txt | 3 +- .../relax_new/test/relax_test.cpp | 7 +- .../module_relax/relax_new/test/relax_test.h | 3 - source/module_relax/relax_old/relax_old.cpp | 4 +- 20 files changed, 455 insertions(+), 373 deletions(-) create mode 100644 source/module_cell/update_cell.cpp create mode 100644 source/module_cell/update_cell.h diff --git a/source/Makefile.Objects b/source/Makefile.Objects index ae6a7bf00b..75c750e654 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -187,6 +187,7 @@ OBJS_CELL=atom_pseudo.o\ klist.o\ cell_index.o\ check_atomic_stru.o\ + update_cell.o\ OBJS_DEEPKS=LCAO_deepks.o\ deepks_force.o\ diff --git a/source/module_cell/CMakeLists.txt b/source/module_cell/CMakeLists.txt index c658450e3f..f4cb5e5991 100644 --- a/source/module_cell/CMakeLists.txt +++ b/source/module_cell/CMakeLists.txt @@ -23,6 +23,7 @@ add_library( parallel_kpoints.cpp cell_index.cpp check_atomic_stru.cpp + update_cell.cpp ) if(ENABLE_COVERAGE) diff --git a/source/module_cell/test/CMakeLists.txt b/source/module_cell/test/CMakeLists.txt index c79adcf89d..890b4b776b 100644 --- a/source/module_cell/test/CMakeLists.txt +++ b/source/module_cell/test/CMakeLists.txt @@ -103,7 +103,7 @@ add_test(NAME cell_parallel_kpoints_test AddTest( TARGET cell_unitcell_test LIBS parameter ${math_libs} base device cell_info symmetry - SOURCES unitcell_test.cpp ../../module_io/output.cpp ../../module_elecstate/cal_ux.cpp + SOURCES unitcell_test.cpp ../../module_io/output.cpp ../../module_elecstate/cal_ux.cpp ../update_cell.cpp ) @@ -122,7 +122,8 @@ AddTest( AddTest( TARGET cell_unitcell_test_setupcell LIBS parameter ${math_libs} base device cell_info - SOURCES unitcell_test_setupcell.cpp ../../module_io/output.cpp + SOURCES unitcell_test_setupcell.cpp ../../module_io/output.cpp + ../../module_cell/update_cell.cpp ) add_test(NAME cell_unitcell_test_parallel diff --git a/source/module_cell/test/prepare_unitcell.h b/source/module_cell/test/prepare_unitcell.h index ce6cc65eb9..3890670e18 100644 --- a/source/module_cell/test/prepare_unitcell.h +++ b/source/module_cell/test/prepare_unitcell.h @@ -109,7 +109,7 @@ class UcellTestPrepare ucell->latvec.e13 = this->latvec[2]; ucell->latvec.e21 = this->latvec[3]; ucell->latvec.e22 = this->latvec[4]; - ucell->latvec.e23 = this->latvec[5]; + ucell->latvec.e23 = this->latvec[5]; ucell->latvec.e31 = this->latvec[6]; ucell->latvec.e32 = this->latvec[7]; ucell->latvec.e33 = this->latvec[8]; diff --git a/source/module_cell/test/support/mock_unitcell.cpp b/source/module_cell/test/support/mock_unitcell.cpp index 9a4c28bb65..dfb8e4cedd 100644 --- a/source/module_cell/test/support/mock_unitcell.cpp +++ b/source/module_cell/test/support/mock_unitcell.cpp @@ -63,8 +63,6 @@ void UnitCell::print_stru_file(const std::string& fn, const bool& dpks_desc, const int& iproc) const {} void UnitCell::check_dtau() {} -void UnitCell::setup_cell_after_vc(std::ofstream& log) {} -void UnitCell::remake_cell() {} void UnitCell::cal_nwfc(std::ofstream& log) {} void UnitCell::cal_meshx() {} void UnitCell::cal_natomwfc(std::ofstream& log) {} diff --git a/source/module_cell/test/unitcell_test.cpp b/source/module_cell/test/unitcell_test.cpp index 88052a433b..036bbf40ed 100644 --- a/source/module_cell/test/unitcell_test.cpp +++ b/source/module_cell/test/unitcell_test.cpp @@ -3,7 +3,6 @@ #define private public #include "module_parameter/parameter.h" #undef private -#include "module_cell/unitcell.h" #include "module_elecstate/cal_ux.h" #include "module_elecstate/read_pseudo.h" @@ -11,6 +10,7 @@ #include "module_base/global_variable.h" #include "module_base/mathzone.h" #include "prepare_unitcell.h" +#include "module_cell/update_cell.h" #include #include #include @@ -346,7 +346,7 @@ TEST_F(UcellTest, RemakeCell) ucell->latvec.e32 = 0.00; ucell->latvec.e33 = 10.0; ucell->latName = latname_in[i]; - ucell->remake_cell(); + unitcell::remake_cell(ucell->lat); if (latname_in[i] == "sc") { double celldm @@ -591,7 +591,7 @@ TEST_F(UcellDeathTest, RemakeCellWarnings) ucell->latvec.e33 = 10.0; ucell->latName = latname_in[i]; testing::internal::CaptureStdout(); - EXPECT_EXIT(ucell->remake_cell(), ::testing::ExitedWithCode(1), ""); + EXPECT_EXIT(unitcell::remake_cell(ucell->lat), ::testing::ExitedWithCode(1), ""); std::string output = testing::internal::GetCapturedStdout(); if (latname_in[i] == "none") { diff --git a/source/module_cell/test/unitcell_test_setupcell.cpp b/source/module_cell/test/unitcell_test_setupcell.cpp index 6b2029adce..7e832c2d99 100644 --- a/source/module_cell/test/unitcell_test_setupcell.cpp +++ b/source/module_cell/test/unitcell_test_setupcell.cpp @@ -11,7 +11,7 @@ #include #include #include "prepare_unitcell.h" - +#include "module_cell/update_cell.h" #ifdef __LCAO #include "module_basis/module_ao/ORB_read.h" InfoNonlocal::InfoNonlocal(){} @@ -145,8 +145,47 @@ TEST_F(UcellTest,SetupCellAfterVC) ucell->ntype = 2; delete[] ucell->magnet.start_magnetization; ucell->magnet.start_magnetization = new double[ucell->ntype]; + + ucell->setup_cell(fn,ofs_running); - ucell->setup_cell_after_vc(ofs_running); + ucell->lat0 = 1.0; + ucell->latvec.Zero(); + ucell->latvec.e11 = 10.0; + ucell->latvec.e22 = 10.0; + ucell->latvec.e33 = 10.0; + for (int i =0;intype;i++) + { + ucell->atoms[i].na = 1; + ucell->atoms[i].taud.resize(ucell->atoms[i].na); + ucell->atoms[i].tau.resize(ucell->atoms[i].na); + ucell->atoms[i].taud[0].x = 0.1; + ucell->atoms[i].taud[0].y = 0.1; + ucell->atoms[i].taud[0].z = 0.1; + } + + unitcell::setup_cell_after_vc(*ucell,ofs_running); + EXPECT_EQ(ucell->lat0_angstrom,0.529177); + EXPECT_EQ(ucell->tpiba,ModuleBase::TWO_PI); + EXPECT_EQ(ucell->tpiba2,ModuleBase::TWO_PI*ModuleBase::TWO_PI); + EXPECT_EQ(ucell->a1.x ,10.0); + EXPECT_EQ(ucell->a2.y ,10.0); + EXPECT_EQ(ucell->a3.z ,10.0); + EXPECT_EQ(ucell->omega,1000.0); + EXPECT_EQ(ucell->GT.e11,0.1); + EXPECT_EQ(ucell->GT.e22,0.1); + EXPECT_EQ(ucell->GT.e33,0.1); + EXPECT_EQ(ucell->G.e11,0.1); + EXPECT_EQ(ucell->G.e22,0.1); + EXPECT_EQ(ucell->G.e33,0.1); + + for (int it = 0; it < ucell->ntype; it++) { + Atom* atom = &ucell->atoms[it]; + for (int ia = 0; ia < atom->na; ia++) { + EXPECT_EQ(atom->tau[ia].x,1); + EXPECT_EQ(atom->tau[ia].y,1); + EXPECT_EQ(atom->tau[ia].z,1); + } + } ofs_running.close(); remove("setup_cell.tmp"); } diff --git a/source/module_cell/unitcell.cpp b/source/module_cell/unitcell.cpp index 8cabc76149..635b3624c1 100755 --- a/source/module_cell/unitcell.cpp +++ b/source/module_cell/unitcell.cpp @@ -863,72 +863,6 @@ void UnitCell::cal_natomwfc(std::ofstream& log) { return; } -// LiuXh add a new function here, -// 20180515 -void UnitCell::setup_cell_after_vc(std::ofstream& log) { - ModuleBase::TITLE("UnitCell", "setup_cell_after_vc"); - assert(lat0 > 0.0); - this->omega = std::abs(latvec.Det()) * this->lat0 * lat0 * lat0; - if (this->omega <= 0) { - ModuleBase::WARNING_QUIT("setup_cell_after_vc", "omega <= 0 ."); - } else { - log << std::endl; - ModuleBase::GlobalFunc::OUT(log, "Volume (Bohr^3)", this->omega); - ModuleBase::GlobalFunc::OUT(log, - "Volume (A^3)", - this->omega - * pow(ModuleBase::BOHR_TO_A, 3)); - } - - lat0_angstrom = lat0 * 0.529177; - tpiba = ModuleBase::TWO_PI / lat0; - tpiba2 = tpiba * tpiba; - - // lattice vectors in another form. - a1.x = latvec.e11; - a1.y = latvec.e12; - a1.z = latvec.e13; - - a2.x = latvec.e21; - a2.y = latvec.e22; - a2.z = latvec.e23; - - a3.x = latvec.e31; - a3.y = latvec.e32; - a3.z = latvec.e33; - - //========================================================== - // Calculate recip. lattice vectors and dot products - // latvec has the unit of lat0, but G has the unit 2Pi/lat0 - //========================================================== - this->GT = latvec.Inverse(); - this->G = GT.Transpose(); - this->GGT = G * GT; - this->invGGT = GGT.Inverse(); - - for (int it = 0; it < ntype; it++) { - Atom* atom = &atoms[it]; - for (int ia = 0; ia < atom->na; ia++) { - atom->tau[ia] = atom->taud[ia] * latvec; - } - } - -#ifdef __MPI - this->bcast_unitcell(); -#endif - - log << std::endl; - output::printM3(log, - "Lattice vectors: (Cartesian coordinate: in unit of a_0)", - latvec); - output::printM3( - log, - "Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0)", - G); - - return; -} - // check if any atom can be moved bool UnitCell::if_atoms_can_move() const { for (int it = 0; it < this->ntype; it++) { @@ -1020,282 +954,6 @@ void UnitCell::setup(const std::string& latname_in, return; } -void UnitCell::remake_cell() { - ModuleBase::TITLE("UnitCell", "rmake_cell"); - - // The idea is as follows: for each type of lattice, first calculate - // from current latvec the lattice parameters, then use the parameters - // to reconstruct latvec - - if (latName == "none") { - ModuleBase::WARNING_QUIT( - "UnitCell", - "to use fixed_ibrav, latname must be provided"); - } else if (latName == "sc") // ibrav = 1 - { - double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - - latvec.Zero(); - latvec.e11 = latvec.e22 = latvec.e33 = celldm; - } else if (latName == "fcc") // ibrav = 2 - { - double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)) - / std::sqrt(2.0); - - latvec.e11 = -celldm; - latvec.e12 = 0.0; - latvec.e13 = celldm; - latvec.e21 = 0.0; - latvec.e22 = celldm; - latvec.e23 = celldm; - latvec.e31 = -celldm; - latvec.e32 = celldm; - latvec.e33 = 0.0; - } else if (latName == "bcc") // ibrav = 3 - { - double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)) - / std::sqrt(3.0); - - latvec.e11 = celldm; - latvec.e12 = celldm; - latvec.e13 = celldm; - latvec.e21 = -celldm; - latvec.e22 = celldm; - latvec.e23 = celldm; - latvec.e31 = -celldm; - latvec.e32 = -celldm; - latvec.e33 = celldm; - } else if (latName == "hexagonal") // ibrav = 4 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - double e22 = sqrt(3.0) / 2.0; - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = -0.5 * celldm1; - latvec.e22 = celldm1 * e22; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } else if (latName == "trigonal") // ibrav = 5 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 - + latvec.e13 * latvec.e23); - double cos12 = celldm12 / celldm1 / celldm2; - - if (cos12 <= -0.5 || cos12 >= 1.0) { - ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); - } - double t1 = sqrt(1.0 + 2.0 * cos12); - double t2 = sqrt(1.0 - cos12); - - double e11 = celldm1 * t2 / sqrt(2.0); - double e12 = -celldm1 * t2 / sqrt(6.0); - double e13 = celldm1 * t1 / sqrt(3.0); - double e22 = celldm1 * sqrt(2.0) * t2 / sqrt(3.0); - - latvec.e11 = e11; - latvec.e12 = e12; - latvec.e13 = e13; - latvec.e21 = 0.0; - latvec.e22 = e22; - latvec.e23 = e13; - latvec.e31 = -e11; - latvec.e32 = e12; - latvec.e33 = e13; - } else if (latName == "st") // ibrav = 6 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = 0.0; - latvec.e22 = celldm1; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } else if (latName == "bct") // ibrav = 7 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::abs(latvec.e13); - - latvec.e11 = celldm1; - latvec.e12 = -celldm1; - latvec.e13 = celldm2; - latvec.e21 = celldm1; - latvec.e22 = celldm1; - latvec.e23 = celldm2; - latvec.e31 = -celldm1; - latvec.e32 = -celldm1; - latvec.e33 = celldm2; - } else if (latName == "so") // ibrav = 8 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = 0.0; - latvec.e22 = celldm2; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } else if (latName == "baco") // ibrav = 9 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::abs(latvec.e22); - double celldm3 = std::abs(latvec.e33); - - latvec.e11 = celldm1; - latvec.e12 = celldm2; - latvec.e13 = 0.0; - latvec.e21 = -celldm1; - latvec.e22 = celldm2; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } else if (latName == "fco") // ibrav = 10 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::abs(latvec.e22); - double celldm3 = std::abs(latvec.e33); - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = celldm3; - latvec.e21 = celldm1; - latvec.e22 = celldm2; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = celldm2; - latvec.e33 = celldm3; - } else if (latName == "bco") // ibrav = 11 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::abs(latvec.e12); - double celldm3 = std::abs(latvec.e13); - - latvec.e11 = celldm1; - latvec.e12 = celldm2; - latvec.e13 = celldm3; - latvec.e21 = -celldm1; - latvec.e22 = celldm2; - latvec.e23 = celldm3; - latvec.e31 = -celldm1; - latvec.e32 = -celldm2; - latvec.e33 = celldm3; - } else if (latName == "sm") // ibrav = 12 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 - + latvec.e13 * latvec.e23); - double cos12 = celldm12 / celldm1 / celldm2; - - double e21 = celldm2 * cos12; - double e22 = celldm2 * std::sqrt(1.0 - cos12 * cos12); - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = e21; - latvec.e22 = e22; - latvec.e23 = 0.0; - latvec.e31 = 0.0; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } else if (latName == "bacm") // ibrav = 13 - { - double celldm1 = std::abs(latvec.e11); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm3 = std::abs(latvec.e13); - - double cos12 = latvec.e21 / celldm2; - if (cos12 >= 1.0) { - ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); - } - - double e21 = celldm2 * cos12; - double e22 = celldm2 * std::sqrt(1.0 - cos12 * cos12); - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = -celldm3; - latvec.e21 = e21; - latvec.e22 = e22; - latvec.e23 = 0.0; - latvec.e31 = celldm1; - latvec.e32 = 0.0; - latvec.e33 = celldm3; - } else if (latName == "triclinic") // ibrav = 14 - { - double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) - + pow(latvec.e13, 2)); - double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) - + pow(latvec.e23, 2)); - double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) - + pow(latvec.e33, 2)); - double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 - + latvec.e13 * latvec.e23); - double cos12 = celldm12 / celldm1 / celldm2; - double celldm13 = (latvec.e11 * latvec.e31 + latvec.e12 * latvec.e32 - + latvec.e13 * latvec.e33); - double cos13 = celldm13 / celldm1 / celldm3; - double celldm23 = (latvec.e21 * latvec.e31 + latvec.e22 * latvec.e32 - + latvec.e23 * latvec.e33); - double cos23 = celldm23 / celldm2 / celldm3; - - double sin12 = std::sqrt(1.0 - cos12 * cos12); - if (cos12 >= 1.0) { - ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); - } - - latvec.e11 = celldm1; - latvec.e12 = 0.0; - latvec.e13 = 0.0; - latvec.e21 = celldm2 * cos12; - latvec.e22 = celldm2 * sin12; - latvec.e23 = 0.0; - latvec.e31 = celldm3 * cos13; - latvec.e32 = celldm3 * (cos23 - cos13 * cos12) / sin12; - double term = 1.0 + 2.0 * cos12 * cos13 * cos23 - cos12 * cos12 - - cos13 * cos13 - cos23 * cos23; - term = sqrt(term) / sin12; - latvec.e33 = celldm3 * term; - } else { - std::cout << "latname is : " << latName << std::endl; - ModuleBase::WARNING_QUIT("UnitCell::read_atom_species", - "latname not supported!"); - } -} void UnitCell::compare_atom_labels(std::string label1, std::string label2) { if (label1 diff --git a/source/module_cell/unitcell.h b/source/module_cell/unitcell.h index d99eb91b5a..16c5ea2ec7 100644 --- a/source/module_cell/unitcell.h +++ b/source/module_cell/unitcell.h @@ -277,11 +277,8 @@ class UnitCell { const bool& dpks_desc = false, const int& iproc = 0) const; void check_dtau(); - void setup_cell_after_vc(std::ofstream& log); // LiuXh add 20180515 - // for constrained vc-relaxation where type of lattice // is fixed, adjust the lattice vectors - void remake_cell(); //================================================================ // cal_natomwfc : calculate total number of atomic wavefunctions diff --git a/source/module_cell/unitcell_data.h b/source/module_cell/unitcell_data.h index 57f81bcd4e..09aab0a0dc 100644 --- a/source/module_cell/unitcell_data.h +++ b/source/module_cell/unitcell_data.h @@ -1,3 +1,6 @@ +#ifndef UNITCELL_DATA_H +#define UNITCELL_DATA_H + #include "module_base/intarray.h" #include "module_base/matrix3.h" /// @brief info of lattice @@ -59,4 +62,6 @@ struct Statistics delete[] iwt2iat; delete[] iwt2iw; } -}; \ No newline at end of file +}; + +#endif \ No newline at end of file diff --git a/source/module_cell/update_cell.cpp b/source/module_cell/update_cell.cpp new file mode 100644 index 0000000000..6e989dd82e --- /dev/null +++ b/source/module_cell/update_cell.cpp @@ -0,0 +1,347 @@ +#include "update_cell.h" +#include "module_base/global_function.h" +namespace unitcell +{ +void remake_cell(Lattice& lat) +{ + ModuleBase::TITLE("Lattice", "rmake_cell"); + + // The idea is as follows: for each type of lattice, first calculate + // from current latvec the lattice parameters, then use the parameters + // to reconstruct latvec + std::string& latName = lat.latName; + ModuleBase::Matrix3& latvec = lat.latvec; + + if (latName == "none") { + ModuleBase::WARNING_QUIT("UnitCell", + "to use fixed_ibrav, latname must be provided"); + } else if (latName == "sc") // ibrav = 1 + { + double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + + latvec.Zero(); + latvec.e11 = latvec.e22 = latvec.e33 = celldm; + } else if (latName == "fcc") // ibrav = 2 + { + double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)) / std::sqrt(2.0); + + latvec.e11 = -celldm; + latvec.e12 = 0.0; + latvec.e13 = celldm; + latvec.e21 = 0.0; + latvec.e22 = celldm; + latvec.e23 = celldm; + latvec.e31 = -celldm; + latvec.e32 = celldm; + latvec.e33 = 0.0; + } else if (latName == "bcc") // ibrav = 3 + { + double celldm = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)) + / std::sqrt(3.0); + + latvec.e11 = celldm; + latvec.e12 = celldm; + latvec.e13 = celldm; + latvec.e21 = -celldm; + latvec.e22 = celldm; + latvec.e23 = celldm; + latvec.e31 = -celldm; + latvec.e32 = -celldm; + latvec.e33 = celldm; + } else if (latName == "hexagonal") // ibrav = 4 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + double e22 = sqrt(3.0) / 2.0; + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = -0.5 * celldm1; + latvec.e22 = celldm1 * e22; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } else if (latName == "trigonal") // ibrav = 5 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 + + latvec.e13 * latvec.e23); + double cos12 = celldm12 / celldm1 / celldm2; + + if (cos12 <= -0.5 || cos12 >= 1.0) { + ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); + } + double t1 = sqrt(1.0 + 2.0 * cos12); + double t2 = sqrt(1.0 - cos12); + + double e11 = celldm1 * t2 / sqrt(2.0); + double e12 = -celldm1 * t2 / sqrt(6.0); + double e13 = celldm1 * t1 / sqrt(3.0); + double e22 = celldm1 * sqrt(2.0) * t2 / sqrt(3.0); + + latvec.e11 = e11; + latvec.e12 = e12; + latvec.e13 = e13; + latvec.e21 = 0.0; + latvec.e22 = e22; + latvec.e23 = e13; + latvec.e31 = -e11; + latvec.e32 = e12; + latvec.e33 = e13; + } else if (latName == "st") // ibrav = 6 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = 0.0; + latvec.e22 = celldm1; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } else if (latName == "bct") // ibrav = 7 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::abs(latvec.e13); + + latvec.e11 = celldm1; + latvec.e12 = -celldm1; + latvec.e13 = celldm2; + latvec.e21 = celldm1; + latvec.e22 = celldm1; + latvec.e23 = celldm2; + latvec.e31 = -celldm1; + latvec.e32 = -celldm1; + latvec.e33 = celldm2; + } else if (latName == "so") // ibrav = 8 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = 0.0; + latvec.e22 = celldm2; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } else if (latName == "baco") // ibrav = 9 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::abs(latvec.e22); + double celldm3 = std::abs(latvec.e33); + + latvec.e11 = celldm1; + latvec.e12 = celldm2; + latvec.e13 = 0.0; + latvec.e21 = -celldm1; + latvec.e22 = celldm2; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } else if (latName == "fco") // ibrav = 10 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::abs(latvec.e22); + double celldm3 = std::abs(latvec.e33); + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = celldm3; + latvec.e21 = celldm1; + latvec.e22 = celldm2; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = celldm2; + latvec.e33 = celldm3; + } else if (latName == "bco") // ibrav = 11 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::abs(latvec.e12); + double celldm3 = std::abs(latvec.e13); + + latvec.e11 = celldm1; + latvec.e12 = celldm2; + latvec.e13 = celldm3; + latvec.e21 = -celldm1; + latvec.e22 = celldm2; + latvec.e23 = celldm3; + latvec.e31 = -celldm1; + latvec.e32 = -celldm2; + latvec.e33 = celldm3; + } else if (latName == "sm") // ibrav = 12 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 + + latvec.e13 * latvec.e23); + double cos12 = celldm12 / celldm1 / celldm2; + + double e21 = celldm2 * cos12; + double e22 = celldm2 * std::sqrt(1.0 - cos12 * cos12); + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = e21; + latvec.e22 = e22; + latvec.e23 = 0.0; + latvec.e31 = 0.0; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } else if (latName == "bacm") // ibrav = 13 + { + double celldm1 = std::abs(latvec.e11); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm3 = std::abs(latvec.e13); + + double cos12 = latvec.e21 / celldm2; + if (cos12 >= 1.0) { + ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); + } + + double e21 = celldm2 * cos12; + double e22 = celldm2 * std::sqrt(1.0 - cos12 * cos12); + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = -celldm3; + latvec.e21 = e21; + latvec.e22 = e22; + latvec.e23 = 0.0; + latvec.e31 = celldm1; + latvec.e32 = 0.0; + latvec.e33 = celldm3; + } else if (latName == "triclinic") // ibrav = 14 + { + double celldm1 = std::sqrt(pow(latvec.e11, 2) + pow(latvec.e12, 2) + + pow(latvec.e13, 2)); + double celldm2 = std::sqrt(pow(latvec.e21, 2) + pow(latvec.e22, 2) + + pow(latvec.e23, 2)); + double celldm3 = std::sqrt(pow(latvec.e31, 2) + pow(latvec.e32, 2) + + pow(latvec.e33, 2)); + double celldm12 = (latvec.e11 * latvec.e21 + latvec.e12 * latvec.e22 + + latvec.e13 * latvec.e23); + double cos12 = celldm12 / celldm1 / celldm2; + double celldm13 = (latvec.e11 * latvec.e31 + latvec.e12 * latvec.e32 + + latvec.e13 * latvec.e33); + double cos13 = celldm13 / celldm1 / celldm3; + double celldm23 = (latvec.e21 * latvec.e31 + latvec.e22 * latvec.e32 + + latvec.e23 * latvec.e33); + double cos23 = celldm23 / celldm2 / celldm3; + + double sin12 = std::sqrt(1.0 - cos12 * cos12); + if (cos12 >= 1.0) { + ModuleBase::WARNING_QUIT("unitcell", "wrong cos12!"); + } + + latvec.e11 = celldm1; + latvec.e12 = 0.0; + latvec.e13 = 0.0; + latvec.e21 = celldm2 * cos12; + latvec.e22 = celldm2 * sin12; + latvec.e23 = 0.0; + latvec.e31 = celldm3 * cos13; + latvec.e32 = celldm3 * (cos23 - cos13 * cos12) / sin12; + double term = 1.0 + 2.0 * cos12 * cos13 * cos23 - cos12 * cos12 + - cos13 * cos13 - cos23 * cos23; + term = sqrt(term) / sin12; + latvec.e33 = celldm3 * term; + } else { + std::cout << "latname is : " << latName << std::endl; + ModuleBase::WARNING_QUIT("UnitCell::read_atom_species", + "latname not supported!"); + } +} + +// LiuXh add a new function here, +// 20180515 +void setup_cell_after_vc(UnitCell& ucell, std::ofstream& log) { + ModuleBase::TITLE("UnitCell", "setup_cell_after_vc"); + assert(ucell.lat0 > 0.0); + ucell.omega = std::abs(ucell.latvec.Det()) * + pow(ucell.lat0, 3); + if (ucell.omega <= 0) + { + ModuleBase::WARNING_QUIT("setup_cell_after_vc", "omega <= 0 ."); + } else { + log << std::endl; + ModuleBase::GlobalFunc::OUT(log, "Volume (Bohr^3)", ucell.omega); + ModuleBase::GlobalFunc::OUT(log, "Volume (A^3)", + ucell.omega * pow(ModuleBase::BOHR_TO_A, 3)); + } + + ucell.lat0_angstrom = ucell.lat0 * 0.529177; + ucell.tpiba = ModuleBase::TWO_PI / ucell.lat0; + ucell.tpiba2 = ucell.tpiba * ucell.tpiba; + + // lattice vectors in another form. + ucell.a1.x = ucell.latvec.e11; + ucell.a1.y = ucell.latvec.e12; + ucell.a1.z = ucell.latvec.e13; + + ucell.a2.x = ucell.latvec.e21; + ucell.a2.y = ucell.latvec.e22; + ucell.a2.z = ucell.latvec.e23; + + ucell.a3.x = ucell.latvec.e31; + ucell.a3.y = ucell.latvec.e32; + ucell.a3.z = ucell.latvec.e33; + + //========================================================== + // Calculate recip. lattice vectors and dot products + // latvec has the unit of lat0, but G has the unit 2Pi/lat0 + //========================================================== + ucell.GT = ucell.latvec.Inverse(); + ucell.G = ucell.GT.Transpose(); + ucell.GGT = ucell.G * ucell.GT; + ucell.invGGT = ucell.GGT.Inverse(); + + for (int it = 0; it < ucell.ntype; it++) { + Atom* atom = &ucell.atoms[it]; + for (int ia = 0; ia < atom->na; ia++) { + atom->tau[ia] = atom->taud[ia] * ucell.latvec; + } + } + +#ifdef __MPI + ucell.bcast_unitcell(); +#endif + + log << std::endl; + output::printM3(log, + "Lattice vectors: (Cartesian coordinate: in unit of a_0)", + ucell.latvec); + output::printM3(log, + "Reciprocal vectors: (Cartesian coordinate: in unit of 2 pi/a_0)", + ucell.G); + + return; +} +} diff --git a/source/module_cell/update_cell.h b/source/module_cell/update_cell.h new file mode 100644 index 0000000000..3f5a02c941 --- /dev/null +++ b/source/module_cell/update_cell.h @@ -0,0 +1,25 @@ +#ifndef UPDATE_CELL_H +#define UPDATE_CELL_H + +#include "unitcell_data.h" +#include "unitcell.h" + +/* +this file is used to update the cell,contains the following functions: +1. remake_cell: for constrained vc-relaxation where type of lattice +is fixed, adjust the lattice vectors +2. setup_cell_after_vc: setup cell after vc-relaxation +the functions are defined in the namespace UnitCell, +Accually, the functions are focused on the cell-relax part functions +of the UnitCell class. +*/ +namespace unitcell +{ + // for constrained vc-relaxation where type of lattice + // is fixed, adjust the lattice vectors + void remake_cell(Lattice& lat); + + void setup_cell_after_vc(UnitCell& ucell, std::ofstream& log); +} +// +#endif // UPDATE_CELL_H \ No newline at end of file diff --git a/source/module_md/msst.cpp b/source/module_md/msst.cpp index 67484f0f88..faa9eada19 100644 --- a/source/module_md/msst.cpp +++ b/source/module_md/msst.cpp @@ -1,5 +1,6 @@ #include "msst.h" +#include "module_cell/update_cell.h" #include "md_func.h" #ifdef __MPI #include "mpi.h" @@ -128,7 +129,7 @@ void MSST::first_half(std::ofstream& ofs) return; } -void MSST::second_half(void) +void MSST::second_half() { ModuleBase::TITLE("MSST", "second_half"); ModuleBase::timer::tick("MSST", "second_half"); @@ -233,7 +234,7 @@ void MSST::restart(const std::string& global_readin_dir) return; } -double MSST::vel_sum(void) +double MSST::vel_sum() { double vsum = 0; @@ -256,7 +257,7 @@ void MSST::rescale(std::ofstream& ofs, const double& volume) ucell.latvec.e22 *= dilation[1]; ucell.latvec.e33 *= dilation[2]; - ucell.setup_cell_after_vc(ofs); + unitcell::setup_cell_after_vc(ucell,ofs); /// rescale velocity for (int i = 0; i < ucell.nat; ++i) @@ -266,7 +267,7 @@ void MSST::rescale(std::ofstream& ofs, const double& volume) } -void MSST::propagate_vel(void) +void MSST::propagate_vel() { if (my_rank == 0) { @@ -306,7 +307,7 @@ void MSST::propagate_vel(void) } -void MSST::propagate_voldot(void) +void MSST::propagate_voldot() { const int sd = mdp.msst_direction; const double dthalf = 0.5 * md_dt; diff --git a/source/module_md/nhchain.cpp b/source/module_md/nhchain.cpp index 215e94327a..db4662f44c 100644 --- a/source/module_md/nhchain.cpp +++ b/source/module_md/nhchain.cpp @@ -5,7 +5,7 @@ #include "mpi.h" #endif #include "module_base/timer.h" - +#include "module_cell/update_cell.h" Nose_Hoover::Nose_Hoover(const Parameter& param_in, UnitCell& unit_in) : MD_base(param_in, unit_in) { const double unit_transform = ModuleBase::HARTREE_SI / pow(ModuleBase::BOHR_RADIUS_SI, 3) * 1.0e-8; @@ -272,7 +272,7 @@ void Nose_Hoover::first_half(std::ofstream& ofs) } -void Nose_Hoover::second_half(void) +void Nose_Hoover::second_half() { ModuleBase::TITLE("Nose_Hoover", "second_half"); ModuleBase::timer::tick("Nose_Hoover", "second_half"); @@ -809,7 +809,7 @@ void Nose_Hoover::update_volume(std::ofstream& ofs) } /// reset ucell and pos due to change of lattice - ucell.setup_cell_after_vc(ofs); + unitcell::setup_cell_after_vc(ucell,ofs); } void Nose_Hoover::target_stress() diff --git a/source/module_md/test/CMakeLists.txt b/source/module_md/test/CMakeLists.txt index 1d197a5350..6510f0033d 100644 --- a/source/module_md/test/CMakeLists.txt +++ b/source/module_md/test/CMakeLists.txt @@ -87,6 +87,8 @@ AddTest( SOURCES nhchain_test.cpp ../md_base.cpp ../nhchain.cpp + ../../module_cell/update_cell.cpp + ../../module_io/output.cpp ${depend_files} ) @@ -96,6 +98,8 @@ AddTest( SOURCES msst_test.cpp ../md_base.cpp ../msst.cpp + ../../module_cell/update_cell.cpp + ../../module_io/output.cpp ${depend_files} ) diff --git a/source/module_relax/relax_new/relax.cpp b/source/module_relax/relax_new/relax.cpp index e873a7aa50..88800c88d8 100644 --- a/source/module_relax/relax_new/relax.cpp +++ b/source/module_relax/relax_new/relax.cpp @@ -1,8 +1,10 @@ #include "relax.h" + #include "module_base/matrix3.h" #include "module_base/parallel_common.h" #include "module_base/tool_title.h" +#include "module_cell/update_cell.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" #include "module_parameter/parameter.h" #include "module_relax/relax_old/ions_move_basic.h" @@ -583,7 +585,7 @@ void Relax::move_cell_ions(UnitCell& ucell, const bool is_new_dir) } if (PARAM.inp.fixed_ibrav) { - ucell.remake_cell(); + unitcell::remake_cell(ucell.lat); } } @@ -693,7 +695,7 @@ void Relax::move_cell_ions(UnitCell& ucell, const bool is_new_dir) // I do not want to change it if (if_cell_moves) { - ucell.setup_cell_after_vc(GlobalV::ofs_running); + unitcell::setup_cell_after_vc(ucell,GlobalV::ofs_running); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SETUP UNITCELL"); } } \ No newline at end of file diff --git a/source/module_relax/relax_new/test/CMakeLists.txt b/source/module_relax/relax_new/test/CMakeLists.txt index 92fb60770c..8a2f5f7ff5 100644 --- a/source/module_relax/relax_new/test/CMakeLists.txt +++ b/source/module_relax/relax_new/test/CMakeLists.txt @@ -18,6 +18,7 @@ AddTest( ../../../module_base/matrix3.cpp ../../../module_base/intarray.cpp ../../../module_base/tool_title.cpp ../../../module_base/global_function.cpp ../../../module_base/complexmatrix.cpp ../../../module_base/matrix.cpp ../../../module_base/complexarray.cpp ../../../module_base/tool_quit.cpp ../../../module_base/realarray.cpp ../../../module_base/blas_connector.cpp - LIBS parameter ${math_libs} + ../../../module_cell/update_cell.cpp ../../../module_io/output.cpp + LIBS parameter ${math_libs} ) diff --git a/source/module_relax/relax_new/test/relax_test.cpp b/source/module_relax/relax_new/test/relax_test.cpp index a95516b210..74328026a4 100644 --- a/source/module_relax/relax_new/test/relax_test.cpp +++ b/source/module_relax/relax_new/test/relax_test.cpp @@ -72,6 +72,8 @@ class Test_SETGRAD : public testing::Test ucell.atoms[0].taud[1] = 0.0; ucell.atoms[0].taud[2] = 0.0; + ucell.atoms[0].tau.resize(nat); + ucell.lc[0] = 1; ucell.lc[1] = 1; ucell.lc[2] = 1; @@ -105,11 +107,13 @@ class Test_SETGRAD : public testing::Test ucell.latvec.Identity(); input.fixed_axes = "a"; //anything other than "None" input.fixed_ibrav = true; + ucell.latName = "sc"; ucell.lc[0] = 0; ucell.lc[1] = 0; ucell.lc[2] = 0; rl.init_relax(nat); rl.relax_step(ucell,force_in,stress_in,0.0); + push_result(); } @@ -167,7 +171,6 @@ class Test_RELAX : public testing::Test this->setup_cell(); ModuleBase::matrix force_in, stress_in; - force_in.create(nat,3); stress_in.create(3,3); @@ -192,6 +195,7 @@ class Test_RELAX : public testing::Test energy_file >> energy; + PARAM.input.fixed_ibrav = false; rl.relax_step(ucell,force_in,stress_in,energy); result.push_back(ucell.atoms[0].taud[0].x); @@ -253,6 +257,7 @@ class Test_RELAX : public testing::Test int na = ucell.atoms[i].na; ucell.atoms[i].mbl.resize(na); ucell.atoms[i].taud.resize(na); + ucell.atoms[i].tau.resize(na); for (int j=0;j Date: Sat, 28 Dec 2024 10:09:50 +0800 Subject: [PATCH 24/44] Refactor: Remove global dependence of some functions in DeePKS. (#5778) * Move cal_o_delta from GlobalC::ld to DeePKS_domain and remove variable o_delta in ld. * Remove F_delta in ld and lessen the tedious dimension in orbital related variables in DeePKS. --- source/Makefile.Objects | 2 +- .../module_hamilt_lcao/hamilt_lcaodft/FORCE.h | 1 + .../hamilt_lcaodft/FORCE_STRESS.cpp | 18 +- .../hamilt_lcaodft/FORCE_STRESS.h | 1 + .../hamilt_lcaodft/FORCE_gamma.cpp | 70 +++---- .../hamilt_lcaodft/FORCE_k.cpp | 17 +- .../module_deepks/CMakeLists.txt | 2 +- .../module_deepks/LCAO_deepks.cpp | 34 +--- .../module_deepks/LCAO_deepks.h | 35 ++-- .../module_deepks/LCAO_deepks_interface.cpp | 178 +++++++++--------- .../module_deepks/LCAO_deepks_io.cpp | 28 +-- .../module_deepks/LCAO_deepks_io.h | 2 +- .../module_deepks/LCAO_deepks_odelta.cpp | 77 -------- .../module_deepks/deepks_force.cpp | 7 - .../module_deepks/deepks_force.h | 7 +- .../module_deepks/deepks_orbital.cpp | 80 ++++++++ .../module_deepks/deepks_orbital.h | 35 ++++ .../module_deepks/orbital_precalc.cpp | 113 ++++++----- 18 files changed, 350 insertions(+), 357 deletions(-) delete mode 100644 source/module_hamilt_lcao/module_deepks/LCAO_deepks_odelta.cpp create mode 100644 source/module_hamilt_lcao/module_deepks/deepks_orbital.cpp create mode 100644 source/module_hamilt_lcao/module_deepks/deepks_orbital.h diff --git a/source/Makefile.Objects b/source/Makefile.Objects index 75c750e654..b366ae524f 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -191,7 +191,7 @@ OBJS_CELL=atom_pseudo.o\ OBJS_DEEPKS=LCAO_deepks.o\ deepks_force.o\ - LCAO_deepks_odelta.o\ + deepks_orbital.o\ LCAO_deepks_io.o\ LCAO_deepks_mpi.o\ LCAO_deepks_pdm.o\ diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE.h b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE.h index 9a4f74b68d..68a6359fd3 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE.h @@ -63,6 +63,7 @@ class Force_LCAO ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, #ifdef __DEEPKS + ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, #endif typename TGint::type& gint, diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp index cadf796b2c..f19d980d85 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp @@ -80,6 +80,9 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, ModuleBase::matrix fewalds; ModuleBase::matrix fcc; ModuleBase::matrix fscc; +#ifdef __DEEPKS + ModuleBase::matrix fvnl_dalpha; // deepks +#endif fvl_dphi.create(nat, 3); // must do it now, update it later, noted by zhengdy @@ -93,6 +96,9 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, fewalds.create(nat, 3); fcc.create(nat, 3); fscc.create(nat, 3); +#ifdef __DEEPKS + fvnl_dalpha.create(nat, 3); // deepks +#endif // calculate basic terms in Force, same method with PW base this->calForcePwPart(ucell, @@ -172,6 +178,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, svnl_dbeta, svl_dphi, #ifdef __DEEPKS + fvnl_dalpha, svnl_dalpha, #endif gint_gamma, @@ -454,7 +461,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, // mohan add 2021-08-04 if (PARAM.inp.deepks_scf) { - fcs(iat, i) += GlobalC::ld.F_delta(iat, i); + fcs(iat, i) += fvnl_dalpha(iat, i); } #endif // sum total force for correction @@ -499,7 +506,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, if (PARAM.inp.deepks_scf) { const std::string file_fbase = PARAM.globalv.global_out_dir + "deepks_fbase.npy"; - LCAO_deepks_io::save_npy_f(fcs - GlobalC::ld.F_delta, + LCAO_deepks_io::save_npy_f(fcs - fvnl_dalpha, file_fbase, ucell.nat, GlobalV::MY_RANK); // Ry/Bohr, F_base @@ -636,8 +643,7 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, // caoyu add 2021-06-03 if (PARAM.inp.deepks_scf) { - ModuleIO::print_force(GlobalV::ofs_running, ucell, "DeePKS FORCE", GlobalC::ld.F_delta, true); - // this->print_force("DeePKS FORCE", GlobalC::ld.F_delta, 1, ry); + ModuleIO::print_force(GlobalV::ofs_running, ucell, "DeePKS FORCE", fvnl_dalpha, true); } #endif } @@ -891,6 +897,7 @@ void Force_Stress_LCAO::integral_part(const bool isGammaOnly, ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, #if __DEEPKS + ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, #endif Gint_Gamma& gint_gamma, // mohan add 2024-04-01 @@ -917,6 +924,7 @@ void Force_Stress_LCAO::integral_part(const bool isGammaOnly, svnl_dbeta, svl_dphi, #if __DEEPKS + fvnl_dalpha, svnl_dalpha, #endif gint_gamma, @@ -944,6 +952,7 @@ void Force_Stress_LCAO>::integral_part(const bool isGammaOn ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, #if __DEEPKS + ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, #endif Gint_Gamma& gint_gamma, @@ -969,6 +978,7 @@ void Force_Stress_LCAO>::integral_part(const bool isGammaOn svnl_dbeta, svl_dphi, #if __DEEPKS + fvnl_dalpha, svnl_dalpha, #endif gint_k, diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h index bc728209d6..89a9bf6d55 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.h @@ -96,6 +96,7 @@ class Force_Stress_LCAO ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, #if __DEEPKS + ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, #endif Gint_Gamma& gint_gamma, diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp index e54d0b4d3f..83f7987dd7 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp @@ -188,6 +188,7 @@ void Force_LCAO::ftable(const bool isforce, ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, #ifdef __DEEPKS + ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, #endif TGint::type& gint, @@ -246,15 +247,13 @@ void Force_LCAO::ftable(const bool isforce, false /*reset dm to gint*/); #ifdef __DEEPKS + const std::vector>& dm_gamma = dm->get_DMK_vector(); if (PARAM.inp.deepks_scf) { - const std::vector>& dm_gamma = dm->get_DMK_vector(); - // when deepks_scf is on, the init pdm should be same as the out pdm, so we should not recalculate the pdm // GlobalC::ld.cal_projected_DM(dm, ucell, orb, gd); GlobalC::ld.cal_descriptor(ucell.nat); - GlobalC::ld.cal_gedm(ucell.nat); const int nks = 1; @@ -269,40 +268,9 @@ void Force_LCAO::ftable(const bool isforce, GlobalC::ld.phialpha, GlobalC::ld.gedm, GlobalC::ld.inl_index, - GlobalC::ld.F_delta, + fvnl_dalpha, isstress, svnl_dalpha); - -#ifdef __MPI - Parallel_Reduce::reduce_all(GlobalC::ld.F_delta.c, GlobalC::ld.F_delta.nr * GlobalC::ld.F_delta.nc); - - if (isstress) - { - Parallel_Reduce::reduce_pool(svnl_dalpha.c, svnl_dalpha.nr * svnl_dalpha.nc); - } -#endif - - if (PARAM.inp.deepks_out_unittest) - { - const int nks = 1; // 1 for gamma-only - LCAO_deepks_io::print_dm(nks, PARAM.globalv.nlocal, this->ParaV->nrow, dm_gamma); - - GlobalC::ld.check_projected_dm(); - - GlobalC::ld.check_descriptor(ucell, PARAM.globalv.global_out_dir); - - GlobalC::ld.check_gedm(); - - GlobalC::ld.cal_e_delta_band(dm_gamma, nks); - - std::ofstream ofs("E_delta_bands.dat"); - ofs << std::setprecision(10) << GlobalC::ld.e_delta_band; - - std::ofstream ofs1("E_delta.dat"); - ofs1 << std::setprecision(10) << GlobalC::ld.E_delta; - - DeePKS_domain::check_f_delta(ucell.nat, GlobalC::ld.F_delta, svnl_dalpha); - } } #endif @@ -312,6 +280,9 @@ void Force_LCAO::ftable(const bool isforce, Parallel_Reduce::reduce_pool(ftvnl_dphi.c, ftvnl_dphi.nr * ftvnl_dphi.nc); Parallel_Reduce::reduce_pool(fvnl_dbeta.c, fvnl_dbeta.nr * fvnl_dbeta.nc); Parallel_Reduce::reduce_pool(fvl_dphi.c, fvl_dphi.nr * fvl_dphi.nc); +#ifdef __DEEPKS + Parallel_Reduce::reduce_pool(fvnl_dalpha.c, fvnl_dalpha.nr * fvnl_dalpha.nc); +#endif } if (isstress) { @@ -319,7 +290,36 @@ void Force_LCAO::ftable(const bool isforce, Parallel_Reduce::reduce_pool(stvnl_dphi.c, stvnl_dphi.nr * stvnl_dphi.nc); Parallel_Reduce::reduce_pool(svnl_dbeta.c, svnl_dbeta.nr * svnl_dbeta.nc); Parallel_Reduce::reduce_pool(svl_dphi.c, svl_dphi.nr * svl_dphi.nc); +#ifdef __DEEPKS + Parallel_Reduce::reduce_pool(svnl_dalpha.c, svnl_dalpha.nr * svnl_dalpha.nc); +#endif + } + +#ifdef __DEEPKS + // It seems these test should not all be here, should be moved in the future + // Also, these test are not in multi-k case now + if (PARAM.inp.deepks_scf && PARAM.inp.deepks_out_unittest) + { + const int nks = 1; // 1 for gamma-only + LCAO_deepks_io::print_dm(nks, PARAM.globalv.nlocal, this->ParaV->nrow, dm_gamma); + + GlobalC::ld.check_projected_dm(); + + GlobalC::ld.check_descriptor(ucell, PARAM.globalv.global_out_dir); + + GlobalC::ld.check_gedm(); + + GlobalC::ld.cal_e_delta_band(dm_gamma, nks); + + std::ofstream ofs("E_delta_bands.dat"); + ofs << std::setprecision(10) << GlobalC::ld.e_delta_band; + + std::ofstream ofs1("E_delta.dat"); + ofs1 << std::setprecision(10) << GlobalC::ld.E_delta; + + DeePKS_domain::check_f_delta(ucell.nat, fvnl_dalpha, svnl_dalpha); } +#endif // delete DSloc_x, DSloc_y, DSloc_z // delete DHloc_fixed_x, DHloc_fixed_y, DHloc_fixed_z diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp index 2b91e7dae2..7739a02338 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp @@ -282,6 +282,7 @@ void Force_LCAO>::ftable(const bool isforce, ModuleBase::matrix& svnl_dbeta, ModuleBase::matrix& svl_dphi, #ifdef __DEEPKS + ModuleBase::matrix& fvnl_dalpha, ModuleBase::matrix& svnl_dalpha, #endif TGint>::type& gint, @@ -363,17 +364,9 @@ void Force_LCAO>::ftable(const bool isforce, GlobalC::ld.phialpha, GlobalC::ld.gedm, GlobalC::ld.inl_index, - GlobalC::ld.F_delta, + fvnl_dalpha, isstress, svnl_dalpha); - -#ifdef __MPI - Parallel_Reduce::reduce_all(GlobalC::ld.F_delta.c, GlobalC::ld.F_delta.nr * GlobalC::ld.F_delta.nc); - if (isstress) - { - Parallel_Reduce::reduce_pool(svnl_dalpha.c, svnl_dalpha.nr * svnl_dalpha.nc); - } -#endif } #endif @@ -386,6 +379,9 @@ void Force_LCAO>::ftable(const bool isforce, Parallel_Reduce::reduce_pool(ftvnl_dphi.c, ftvnl_dphi.nr * ftvnl_dphi.nc); Parallel_Reduce::reduce_pool(fvnl_dbeta.c, fvnl_dbeta.nr * fvnl_dbeta.nc); Parallel_Reduce::reduce_pool(fvl_dphi.c, fvl_dphi.nr * fvl_dphi.nc); +#ifdef __DEEPKS + Parallel_Reduce::reduce_pool(fvnl_dalpha.c, fvnl_dalpha.nr * fvnl_dalpha.nc); +#endif } if (isstress) { @@ -393,6 +389,9 @@ void Force_LCAO>::ftable(const bool isforce, Parallel_Reduce::reduce_pool(stvnl_dphi.c, stvnl_dphi.nr * stvnl_dphi.nc); Parallel_Reduce::reduce_pool(svnl_dbeta.c, svnl_dbeta.nr * svnl_dbeta.nc); Parallel_Reduce::reduce_pool(svl_dphi.c, svl_dphi.nr * svl_dphi.nc); +#ifdef __DEEPKS + Parallel_Reduce::reduce_pool(svnl_dalpha.c, svnl_dalpha.nr * svnl_dalpha.nc); +#endif } ModuleBase::timer::tick("Force_LCAO", "ftable"); diff --git a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt index 8fb8ad86ab..1a2d618cbf 100644 --- a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt +++ b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt @@ -2,7 +2,7 @@ if(ENABLE_DEEPKS) list(APPEND objects LCAO_deepks.cpp deepks_force.cpp - LCAO_deepks_odelta.cpp + deepks_orbital.cpp LCAO_deepks_io.cpp LCAO_deepks_mpi.cpp LCAO_deepks_pdm.cpp diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp index 43d4a68784..ad64939097 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp @@ -332,8 +332,6 @@ void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) } if (PARAM.inp.cal_force) { - // init F_delta - F_delta.create(nat, 3); if (PARAM.inp.deepks_out_labels) { this->init_gdmx(nat); @@ -342,34 +340,24 @@ void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) // gdmx is used only in calculating gvx } - if (PARAM.inp.deepks_bandgap) - { - // init o_delta - o_delta.create(nks, 1); - } - return; } void LCAO_Deepks::init_orbital_pdm_shell(const int nks) { - this->orbital_pdm_shell = new double***[nks]; + this->orbital_pdm_shell = new double**[nks]; for (int iks = 0; iks < nks; iks++) { - this->orbital_pdm_shell[iks] = new double**[1]; - for (int hl = 0; hl < 1; hl++) + this->orbital_pdm_shell[iks] = new double*[this->inlmax]; + for (int inl = 0; inl < this->inlmax; inl++) { - this->orbital_pdm_shell[iks][hl] = new double*[this->inlmax]; - - for (int inl = 0; inl < this->inlmax; inl++) - { - this->orbital_pdm_shell[iks][hl][inl] = new double[(2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)]; - ModuleBase::GlobalFunc::ZEROS(orbital_pdm_shell[iks][hl][inl], - (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)); - } + this->orbital_pdm_shell[iks][inl] = new double[(2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)]; + ModuleBase::GlobalFunc::ZEROS(orbital_pdm_shell[iks][inl], + (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)); } + } return; @@ -379,13 +367,9 @@ void LCAO_Deepks::del_orbital_pdm_shell(const int nks) { for (int iks = 0; iks < nks; iks++) { - for (int hl = 0; hl < 1; hl++) + for (int inl = 0; inl < this->inlmax; inl++) { - for (int inl = 0; inl < this->inlmax; inl++) - { - delete[] this->orbital_pdm_shell[iks][hl][inl]; - } - delete[] this->orbital_pdm_shell[iks][hl]; + delete[] this->orbital_pdm_shell[iks][inl]; } delete[] this->orbital_pdm_shell[iks]; } diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h index 74400976e4..8737515004 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h @@ -5,6 +5,7 @@ #include "deepks_force.h" #include "deepks_hmat.h" +#include "deepks_orbital.h" #include "module_base/complexmatrix.h" #include "module_base/intarray.h" #include "module_base/matrix.h" @@ -50,20 +51,12 @@ class LCAO_Deepks ///(Unit: Ry) \f$tr(\rho H_\delta), \rho = \sum_i{c_{i, \mu}c_{i,\nu}} \f$ (for gamma_only) double e_delta_band = 0.0; - ///(Unit: Ry) \f$tr(\rho_{HL} H_\delta), - ///\rho_{HL} = c_{L, \mu}c_{L,\nu} - c_{H, \mu}c_{H,\nu} \f$ (for gamma_only) - ModuleBase::matrix o_delta; - /// Correction term to the Hamiltonian matrix: \f$\langle\phi|V_\delta|\phi\rangle\f$ (for gamma only) /// The size of first dimension is 1, which is used for the consitence with H_V_delta_k std::vector> H_V_delta; /// Correction term to Hamiltonian, for multi-k std::vector>> H_V_delta_k; - // F_delta will be deleted soon, mohan 2024-07-25 - ///(Unit: Ry/Bohr) Total Force due to the DeePKS correction term \f$E_{\delta}\f$ - ModuleBase::matrix F_delta; - // k index of HOMO for multi-k bandgap label. QO added 2022-01-24 int h_ind = 0; @@ -151,8 +144,8 @@ class LCAO_Deepks // dD/dX, tensor form of gdmx std::vector gdmr_vector; - // orbital_pdm_shell:[1,Inl,nm*nm]; \langle \phi_\mu|\alpha\rangle\langle\alpha|\phi_\nu\ranlge - double**** orbital_pdm_shell; + // orbital_pdm_shell:[Inl,nm*nm]; \langle \phi_\mu|\alpha\rangle\langle\alpha|\phi_\nu\ranlge + double*** orbital_pdm_shell; // orbital_precalc:[1,NAt,NDscrpt]; gvdm*orbital_pdm_shell torch::Tensor orbital_precalc_tensor; @@ -359,19 +352,7 @@ class LCAO_Deepks template void dpks_cal_e_delta_band(const std::vector>& dm, const int nks); - //------------------- - // LCAO_deepks_odelta.cpp - //------------------- - - // This file contains subroutines for calculating O_delta, - // which corresponds to the correction of the band gap. - public: - template - void cal_o_delta( - const std::vector>& dm_hl /**<[in] modified density matrix that contains HOMO and LUMO only*/, - const int nks); - //------------------- // LCAO_deepks_torch.cpp //------------------- @@ -401,7 +382,7 @@ class LCAO_Deepks // 9. check_gedm : prints gedm for checking // 10. cal_orbital_precalc : orbital_precalc is usted for training with orbital label, // which equals gvdm * orbital_pdm_shell, - // orbital_pdm_shell[1,Inl,nm*nm] = dm_hl * overlap * overlap + // orbital_pdm_shell[Inl,nm*nm] = dm_hl * overlap * overlap // 11. cal_v_delta_precalc : v_delta_precalc is used for training with v_delta label, // which equals gvdm * v_delta_pdm_shell, // v_delta_pdm_shell = overlap * overlap @@ -443,12 +424,18 @@ class LCAO_Deepks // calculates orbital_precalc template - void cal_orbital_precalc(const std::vector>& dm_hl /**<[in] density matrix*/, + void cal_orbital_precalc(const std::vector& dm_hl, + const int lmaxd, + const int inlmax, const int nat, const int nks, + const int* inl_l, const std::vector>& kvec_d, + const std::vector*> phialpha, + const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, const Grid_Driver& GridD); // calculates v_delta_precalc diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp index 3d71c04d88..37a5a2cc1b 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -1,12 +1,12 @@ #ifdef __DEEPKS #include "LCAO_deepks_interface.h" -#include "module_parameter/parameter.h" -#include "LCAO_deepks_io.h" // mohan add 2024-07-22 +#include "LCAO_deepks_io.h" // mohan add 2024-07-22 #include "module_base/global_variable.h" #include "module_base/tool_title.h" #include "module_elecstate/cal_dm.h" #include "module_hamilt_lcao/module_hcontainer/hcontainer.h" +#include "module_parameter/parameter.h" template LCAO_Deepks_Interface::LCAO_Deepks_Interface(std::shared_ptr ld_in) : ld(ld_in) @@ -49,8 +49,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, if (PARAM.inp.deepks_scf) { /// ebase :no deepks E_delta including - LCAO_deepks_io::save_npy_e(etot - ld->E_delta, - file_ebase, my_rank); + LCAO_deepks_io::save_npy_e(etot - ld->E_delta, file_ebase, my_rank); } else // deepks_scf = 0; base calculation { @@ -58,83 +57,86 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, LCAO_deepks_io::save_npy_e(etot, file_ebase, my_rank); } + std::vector>* h_delta = nullptr; + if constexpr (std::is_same::value) + { + h_delta = &ld->H_V_delta; + } + else + { + h_delta = &ld->H_V_delta_k; + } + if (PARAM.inp.deepks_bandgap) { const int nocc = PARAM.inp.nelec / 2; - ModuleBase::matrix deepks_bands; - deepks_bands.create(nks, 1); + std::vector o_tot(nks); for (int iks = 0; iks < nks; ++iks) { // record band gap for each k point (including spin) - for (int hl = 0; hl < 1; ++hl) - { - deepks_bands(iks, hl) = ekb(iks, nocc + hl) - ekb(iks, nocc - 1 + hl); - } + o_tot[iks] = ekb(iks, nocc) - ekb(iks, nocc - 1); } const std::string file_otot = PARAM.globalv.global_out_dir + "deepks_otot.npy"; - LCAO_deepks_io::save_npy_o(deepks_bands, file_otot, nks, my_rank); + LCAO_deepks_io::save_npy_o(o_tot, file_otot, nks, my_rank); if (PARAM.inp.deepks_scf) { ModuleBase::matrix wg_hl; - std::vector> dm_bandgap; + std::vector dm_bandgap; // Calculate O_delta if constexpr (std::is_same::value) // for gamma only { wg_hl.create(nspin, PARAM.inp.nbands); dm_bandgap.resize(nspin); - for (int is = 0; is < nspin; ++is) { - for (int ib = 0; ib < 1; ++ib) - { - wg_hl.zero_out(); - wg_hl(is, ib + nocc - 1) = -1.0; - wg_hl(is, ib + nocc) = 1.0; - dm_bandgap[ib].resize(nspin); - elecstate::cal_dm(ParaV, wg_hl, psi, dm_bandgap[ib]); - } + wg_hl.zero_out(); + wg_hl(is, nocc - 1) = -1.0; + wg_hl(is, nocc) = 1.0; + elecstate::cal_dm(ParaV, wg_hl, psi, dm_bandgap); } } else // for multi-k { wg_hl.create(nks, PARAM.inp.nbands); - dm_bandgap.resize(1); - - for (int ib = 0; ib < 1; ib++) + dm_bandgap.resize(nks); + wg_hl.zero_out(); + for (int ik = 0; ik < nks; ik++) { - wg_hl.zero_out(); - for (int ik = 0; ik < nks; ik++) - { - wg_hl(ik, ib + nocc - 1) = -1.0; - wg_hl(ik, ib + nocc) = 1.0; - } - dm_bandgap[ib].resize(nks); - elecstate::cal_dm(ParaV, wg_hl, psi, dm_bandgap[ib]); + wg_hl(ik, nocc - 1) = -1.0; + wg_hl(ik, nocc) = 1.0; } + elecstate::cal_dm(ParaV, wg_hl, psi, dm_bandgap); } - - ld->cal_orbital_precalc(dm_bandgap, nat, nks, kvec_d, ucell, orb, GridD); - ld->cal_o_delta(dm_bandgap, nks); + + std::vector o_delta(nks, 0.0); + + ld->cal_orbital_precalc(dm_bandgap, ld->lmaxd, ld->inlmax, nat, nks, ld->inl_l, kvec_d, ld->phialpha, ld->inl_index, ucell, orb, *ParaV, GridD); + DeePKS_domain::cal_o_delta(dm_bandgap, *h_delta, o_delta, *ParaV, nks); // save obase and orbital_precalc - LCAO_deepks_io::save_npy_orbital_precalc(nat, - nks, - ld->des_per_atom, - ld->orbital_precalc_tensor, - PARAM.globalv.global_out_dir, - my_rank); + LCAO_deepks_io::save_npy_orbital_precalc(nat, + nks, + ld->des_per_atom, + ld->orbital_precalc_tensor, + PARAM.globalv.global_out_dir, + my_rank); const std::string file_obase = PARAM.globalv.global_out_dir + "deepks_obase.npy"; - LCAO_deepks_io::save_npy_o(deepks_bands - ld->o_delta, file_obase, nks, my_rank); - } // end deepks_scf == 1 - else // deepks_scf == 0 + std::vector o_base(nks); + for (int iks = 0; iks < nks; ++iks) + { + o_base[iks] = o_tot[iks] - o_delta[iks]; + } + LCAO_deepks_io::save_npy_o(o_base, file_obase, nks, my_rank); + } // end deepks_scf == 1 + else // deepks_scf == 0 { const std::string file_obase = PARAM.globalv.global_out_dir + "deepks_obase.npy"; - LCAO_deepks_io::save_npy_o(deepks_bands, file_obase, nks, my_rank); // no scf, o_tot=o_base - } // end deepks_scf == 0 - } // end bandgap label + LCAO_deepks_io::save_npy_o(o_tot, file_obase, nks, my_rank); // no scf, o_tot=o_base + } // end deepks_scf == 0 + } // end bandgap label // save H(R) matrix if (true) // should be modified later! @@ -145,7 +147,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, // How to save H(R)? } - if(PARAM.inp.deepks_v_delta) + if (PARAM.inp.deepks_v_delta) { std::vector h_tot(nks); std::vector> h_mat(nks, std::vector(ParaV->nloc)); @@ -160,12 +162,12 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, } } - DeePKS_domain::collect_h_mat(*ParaV, h_mat, h_tot, nlocal, nks); + DeePKS_domain::collect_h_mat(*ParaV, h_mat, h_tot, nlocal, nks); const std::string file_htot = PARAM.globalv.global_out_dir + "deepks_htot.npy"; - LCAO_deepks_io::save_npy_h(h_tot, file_htot, nlocal, nks, my_rank); + LCAO_deepks_io::save_npy_h(h_tot, file_htot, nlocal, nks, my_rank); - if(PARAM.inp.deepks_scf) + if (PARAM.inp.deepks_scf) { std::vector v_delta(nks); std::vector h_base(nks); @@ -174,16 +176,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, v_delta[ik].create(nlocal, nlocal); h_base[ik].create(nlocal, nlocal); } - std::vector>* H_V_delta = nullptr; - if constexpr (std::is_same::value) - { - H_V_delta = &ld->H_V_delta; - } - else - { - H_V_delta = &ld->H_V_delta_k; - } - DeePKS_domain::collect_h_mat(*ParaV, *H_V_delta,v_delta,nlocal,nks); + DeePKS_domain::collect_h_mat(*ParaV, *h_delta, v_delta, nlocal, nks); // save v_delta and h_base const std::string file_hbase = PARAM.globalv.global_out_dir + "deepks_hbase.npy"; @@ -191,29 +184,29 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, { h_base[ik] = h_tot[ik] - v_delta[ik]; } - LCAO_deepks_io::save_npy_h(h_base, file_hbase, nlocal, nks, my_rank); + LCAO_deepks_io::save_npy_h(h_base, file_hbase, nlocal, nks, my_rank); const std::string file_vdelta = PARAM.globalv.global_out_dir + "deepks_vdelta.npy"; - LCAO_deepks_io::save_npy_h(v_delta, file_vdelta, nlocal, nks, my_rank); + LCAO_deepks_io::save_npy_h(v_delta, file_vdelta, nlocal, nks, my_rank); - if(PARAM.inp.deepks_v_delta==1)//v_delta_precalc storage method 1 + if (PARAM.inp.deepks_v_delta == 1) // v_delta_precalc storage method 1 { ld->cal_v_delta_precalc(nlocal, nat, nks, kvec_d, ucell, orb, GridD); - LCAO_deepks_io::save_npy_v_delta_precalc(nat, - nks, + LCAO_deepks_io::save_npy_v_delta_precalc(nat, + nks, nlocal, ld->des_per_atom, ld->v_delta_precalc_tensor, PARAM.globalv.global_out_dir, my_rank); } - else if(PARAM.inp.deepks_v_delta==2)//v_delta_precalc storage method 2 + else if (PARAM.inp.deepks_v_delta == 2) // v_delta_precalc storage method 2 { ld->prepare_phialpha(nlocal, nat, nks, kvec_d, ucell, orb, GridD); - LCAO_deepks_io::save_npy_phialpha(nat, - nks, + LCAO_deepks_io::save_npy_phialpha(nat, + nks, nlocal, ld->inlmax, ld->lmaxd, @@ -231,15 +224,14 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, my_rank); } } - else //deepks_scf == 0 + else // deepks_scf == 0 { const std::string file_hbase = PARAM.globalv.global_out_dir + "deepks_hbase.npy"; - LCAO_deepks_io::save_npy_h(h_tot, file_hbase, nlocal, nks, my_rank); + LCAO_deepks_io::save_npy_h(h_tot, file_hbase, nlocal, nks, my_rank); } - }//end v_delta label - - } // end deepks_out_labels + } // end v_delta label + } // end deepks_out_labels // DeePKS PDM and descriptor if (PARAM.inp.deepks_out_labels || PARAM.inp.deepks_scf) @@ -247,38 +239,36 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, // this part is for integrated test of deepks // so it is printed no matter even if deepks_out_labels is not used // when deepks_scf is on, the init pdm should be same as the out pdm, so we should not recalculate the pdm - if(!PARAM.inp.deepks_scf) - { - ld->cal_projected_DM(dm, ucell, orb, GridD); - } + if (!PARAM.inp.deepks_scf) + { + ld->cal_projected_DM(dm, ucell, orb, GridD); + } ld->check_projected_dm(); // print out the projected dm for NSCF calculaiton - ld->cal_descriptor(nat); // final descriptor + ld->cal_descriptor(nat); // final descriptor ld->check_descriptor(ucell, PARAM.globalv.global_out_dir); - if (PARAM.inp.deepks_out_labels) - { - LCAO_deepks_io::save_npy_d( - nat, - ld->des_per_atom, - ld->inlmax, - ld->inl_l, - PARAM.inp.deepks_equiv, - ld->d_tensor, - PARAM.globalv.global_out_dir, - GlobalV::MY_RANK); // libnpy needed - } + if (PARAM.inp.deepks_out_labels) + { + LCAO_deepks_io::save_npy_d(nat, + ld->des_per_atom, + ld->inlmax, + ld->inl_l, + PARAM.inp.deepks_equiv, + ld->d_tensor, + PARAM.globalv.global_out_dir, + GlobalV::MY_RANK); // libnpy needed + } } - + /// print out deepks information to the screen if (PARAM.inp.deepks_scf) { ld->cal_e_delta_band(dm->get_DMK_vector(), nks); std::cout << "E_delta_band = " << std::setprecision(8) << ld->e_delta_band << " Ry" - << " = " << std::setprecision(8) << ld->e_delta_band * ModuleBase::Ry_to_eV << " eV" - << std::endl; + << " = " << std::setprecision(8) << ld->e_delta_band * ModuleBase::Ry_to_eV << " eV" << std::endl; std::cout << "E_delta_NN = " << std::setprecision(8) << ld->E_delta << " Ry" << " = " << std::setprecision(8) << ld->E_delta * ModuleBase::Ry_to_eV << " eV" << std::endl; } diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp index 2543568a44..5e2eff5860 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp @@ -325,8 +325,8 @@ void LCAO_deepks_io::save_npy_s(const ModuleBase::matrix &stress, } -void LCAO_deepks_io::save_npy_o(const ModuleBase::matrix &bandgap, - const std::string &o_file, +void LCAO_deepks_io::save_npy_o(const std::vector& bandgap, + const std::string& o_file, const int nks, const int rank) { @@ -338,17 +338,7 @@ void LCAO_deepks_io::save_npy_o(const ModuleBase::matrix &bandgap, //save o_base const long unsigned oshape[] = {static_cast(nks), 1 }; - - std::vector npy_o; - for (int iks = 0; iks < nks; ++iks) - { - for (int hl = 0;hl < 1; ++hl) - { - npy_o.push_back(bandgap(iks,hl)); - } - } - - npy::SaveArrayAsNumpy(o_file, false, 2, oshape, npy_o); + npy::SaveArrayAsNumpy(o_file, false, 2, oshape, bandgap); return; } @@ -369,27 +359,23 @@ void LCAO_deepks_io::save_npy_orbital_precalc(const int nat, //save orbital_precalc.npy (when bandgap label is in use) //unit: a.u. const long unsigned gshape[] = {static_cast(nks), - 1, static_cast(nat), static_cast(des_per_atom)}; std::vector npy_orbital_precalc; for (int iks = 0; iks < nks; ++iks) { - for (int hl = 0; hl < 1; ++hl) + for (int iat = 0;iat < nat;++iat) { - for (int iat = 0;iat < nat;++iat) + for(int p=0; p& bandgap, /**<[in] \f$E_{base}\f$ or \f$E_{tot}\f$, in Ry*/ const std::string &o_file, const int nks, const int rank); diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_odelta.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_odelta.cpp deleted file mode 100644 index 016e6317b8..0000000000 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_odelta.cpp +++ /dev/null @@ -1,77 +0,0 @@ -//QO 2022-1-7 -//This file contains subroutines for calculating O_delta, i.e., corrections of the bandgap, -#include "module_parameter/parameter.h" -//which is defind as sum_mu,nu rho^{hl}_mu,nu V(D) -//where rho^{hl}_mu,nu = C_{L\mu}C_{L\nu} - C_{H\mu}C_{H\nu}, L for LUMO, H for HOMO - -#ifdef __DEEPKS - -#include "LCAO_deepks.h" -#include "module_base/parallel_reduce.h" - -template -void LCAO_Deepks::cal_o_delta(const std::vector>& dm_hl, const int nks) -{ - ModuleBase::TITLE("LCAO_Deepks", "cal_o_delta"); - - this->o_delta.zero_out(); - for (int ik = 0; ik < nks; ik++) - { - for (int hl = 0; hl < 1; ++hl) - { - TK o_delta_tmp = TK(0.0); - for (int i = 0; i < PARAM.globalv.nlocal; ++i) - { - for (int j = 0; j < PARAM.globalv.nlocal; ++j) - { - const int mu = pv->global2local_row(j); - const int nu = pv->global2local_col(i); - - if (mu >= 0 && nu >= 0) - { - int iic; - if(PARAM.inp.ks_solver=="genelpa" || PARAM.inp.ks_solver=="scalapack_gvx" || PARAM.inp.ks_solver=="pexsi") // save the matrix as column major format - { - iic = mu + nu * pv->nrow; - } - else - { - iic = mu * pv->ncol + nu; - } - if constexpr (std::is_same::value) - { - for (int is = 0; is < PARAM.inp.nspin; ++is) - { - o_delta_tmp += dm_hl[hl][is](nu, mu) * this->H_V_delta[0][iic]; - } - } - else - { - o_delta_tmp += dm_hl[hl][ik](nu, mu) * this->H_V_delta_k[ik][iic]; - } - } - } - } - Parallel_Reduce::reduce_all(o_delta_tmp); - if constexpr (std::is_same::value) - { - this->o_delta(ik,hl) = o_delta_tmp; - } - else - { - this->o_delta(ik,hl) = o_delta_tmp.real(); - } - } - } - return; -} - -template void LCAO_Deepks::cal_o_delta( - const std::vector>& dm_hl, - const int nks); - -template void LCAO_Deepks::cal_o_delta, ModuleBase::ComplexMatrix>( - const std::vector>& dm_hl, - const int nks); - -#endif diff --git a/source/module_hamilt_lcao/module_deepks/deepks_force.cpp b/source/module_hamilt_lcao/module_deepks/deepks_force.cpp index 51992ff5ea..c7eea52036 100644 --- a/source/module_hamilt_lcao/module_deepks/deepks_force.cpp +++ b/source/module_hamilt_lcao/module_deepks/deepks_force.cpp @@ -1,11 +1,4 @@ -// wenfei 2022-1-11 -// This file contains subroutines for calculating F_delta, #include "module_parameter/parameter.h" -// which is defind as sum_mu,nu rho_mu,nu d/dX (V(D)) - -// There are 2 subroutines in this file: -// 1. cal_f_delta, which calculates F_delta -// 2. check_f_delta, which prints F_delta into F_delta.dat for checking #ifdef __DEEPKS diff --git a/source/module_hamilt_lcao/module_deepks/deepks_force.h b/source/module_hamilt_lcao/module_deepks/deepks_force.h index bd4a183d6a..f964b03964 100644 --- a/source/module_hamilt_lcao/module_deepks/deepks_force.h +++ b/source/module_hamilt_lcao/module_deepks/deepks_force.h @@ -3,7 +3,6 @@ #ifdef __DEEPKS - #include "module_base/complexmatrix.h" #include "module_base/intarray.h" #include "module_base/matrix.h" @@ -13,14 +12,10 @@ #include "module_cell/module_neighbor/sltk_grid_driver.h" #include "module_elecstate/module_dm/density_matrix.h" -#include -#include -#include - namespace DeePKS_domain { //------------------------ - // LCAO_deepks_force.cpp + // deepks_force.cpp //------------------------ // This file contains subroutines for calculating F_delta, diff --git a/source/module_hamilt_lcao/module_deepks/deepks_orbital.cpp b/source/module_hamilt_lcao/module_deepks/deepks_orbital.cpp new file mode 100644 index 0000000000..a574092afd --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/deepks_orbital.cpp @@ -0,0 +1,80 @@ +#include "module_parameter/parameter.h" + +#ifdef __DEEPKS + +#include "deepks_orbital.h" +#include "module_base/parallel_reduce.h" +#include "module_base/timer.h" + +template +void DeePKS_domain::cal_o_delta(const std::vector& dm_hl, + const std::vector>& h_delta, + std::vector& o_delta, + const Parallel_Orbitals& pv, + const int nks) +{ + ModuleBase::TITLE("DeePKS_domain", "cal_o_delta"); + + for (int ik = 0; ik < nks; ik++) + { + TK o_delta_tmp = TK(0.0); + for (int i = 0; i < PARAM.globalv.nlocal; ++i) + { + for (int j = 0; j < PARAM.globalv.nlocal; ++j) + { + const int mu = pv.global2local_row(j); + const int nu = pv.global2local_col(i); + + if (mu >= 0 && nu >= 0) + { + int iic; + if (PARAM.inp.ks_solver == "genelpa" || PARAM.inp.ks_solver == "scalapack_gvx" + || PARAM.inp.ks_solver == "pexsi") // save the matrix as column major format + { + iic = mu + nu * pv.nrow; + } + else + { + iic = mu * pv.ncol + nu; + } + if constexpr (std::is_same::value) + { + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + o_delta_tmp += dm_hl[is](nu, mu) * h_delta[ik][iic]; + } + } + else + { + o_delta_tmp += dm_hl[ik](nu, mu) * h_delta[ik][iic]; + } + } + } + } + Parallel_Reduce::reduce_all(o_delta_tmp); + if constexpr (std::is_same::value) + { + o_delta[ik] = o_delta_tmp; + } + else + { + o_delta[ik] = o_delta_tmp.real(); + } + } + return; +} + +template void DeePKS_domain::cal_o_delta(const std::vector& dm_hl, + const std::vector>& h_delta, + std::vector& o_delta, + const Parallel_Orbitals& pv, + const int nks); + +template void DeePKS_domain::cal_o_delta, ModuleBase::ComplexMatrix>( + const std::vector& dm_hl, + const std::vector>>& h_delta, + std::vector& o_delta, + const Parallel_Orbitals& pv, + const int nks); + +#endif diff --git a/source/module_hamilt_lcao/module_deepks/deepks_orbital.h b/source/module_hamilt_lcao/module_deepks/deepks_orbital.h new file mode 100644 index 0000000000..80e4170018 --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/deepks_orbital.h @@ -0,0 +1,35 @@ +#ifndef DEEPKS_ORBITAL_H +#define DEEPKS_ORBITAL_H + +#ifdef __DEEPKS + +#include "module_base/complexmatrix.h" +#include "module_base/intarray.h" +#include "module_base/matrix.h" +#include "module_base/timer.h" +#include "module_basis/module_ao/parallel_orbitals.h" +#include "module_elecstate/module_dm/density_matrix.h" + +namespace DeePKS_domain +{ +//------------------------ +// deepks_orbital.cpp +//------------------------ + +// This file contains subroutines for calculating O_delta, i.e., corrections of the bandgap, +// which is defind as sum_mu,nu rho^{hl}_mu,nu V(D) +// where rho^{hl}_mu,nu = C_{L\mu}C_{L\nu} - C_{H\mu}C_{H\nu}, L for LUMO, H for HOMO + +// There are 1 subroutines in this file: +// 1. cal_o_delta, which is used for O_delta calculation + +template +void cal_o_delta(const std::vector& dm_hl, + const std::vector>& h_delta, + std::vector& o_delta, + const Parallel_Orbitals& pv, + const int nks); +} // namespace DeePKS_domain + +#endif +#endif diff --git a/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp b/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp index 6a55fa78f2..8154746d1b 100644 --- a/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp +++ b/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp @@ -2,7 +2,7 @@ /// cal_orbital_precalc : orbital_precalc is usted for training with orbital label, /// which equals gvdm * orbital_pdm_shell, -/// orbital_pdm_shell[1,Inl,nm*nm] = dm_hl * overlap * overlap +/// orbital_pdm_shell[Inl,nm*nm] = dm_hl * overlap * overlap #include "LCAO_deepks.h" #include "LCAO_deepks_io.h" // mohan add 2024-07-22 @@ -14,14 +14,20 @@ #include "module_parameter/parameter.h" // calculates orbital_precalc[1,NAt,NDscrpt] = gvdm * orbital_pdm_shell; -// orbital_pdm_shell[2,Inl,nm*nm] = dm_hl * overlap * overlap; +// orbital_pdm_shell[Inl,nm*nm] = dm_hl * overlap * overlap; template -void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, +void LCAO_Deepks::cal_orbital_precalc(const std::vector& dm_hl, + const int lmaxd, + const int inlmax, const int nat, const int nks, + const int* inl_l, const std::vector>& kvec_d, + const std::vector*> phialpha, + const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, const Grid_Driver& GridD) { ModuleBase::TITLE("LCAO_Deepks", "cal_orbital_precalc"); @@ -51,7 +57,7 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = this->inl_index[T0](I0, L0, N0); + const int inl = inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d @@ -87,13 +93,13 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, if constexpr (std::is_same>::value) { - if (this->phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr) + if (phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr) { continue; } } - auto row_indexes = pv->get_indexes_row(ibt1); + auto row_indexes = pv.get_indexes_row(ibt1); const int row_size = row_indexes.size(); @@ -108,7 +114,7 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, for (int irow = 0; irow < row_size; irow++) { - hamilt::BaseMatrix* row_ptr = this->phialpha[0]->find_matrix(iat, ibt1, dR1); + hamilt::BaseMatrix* row_ptr = phialpha[0]->find_matrix(iat, ibt1, dR1); for (int i = 0; i < trace_alpha_size; i++) { s_1t[i * row_size + irow] = row_ptr->get_value(row_indexes[irow], trace_alpha_row[i]); @@ -143,13 +149,13 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, if constexpr (std::is_same>::value) { - if (this->phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) + if (phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) { continue; } } - auto col_indexes = pv->get_indexes_col(ibt2); + auto col_indexes = pv.get_indexes_col(ibt2); const int col_size = col_indexes.size(); if (col_size == 0) { @@ -159,7 +165,7 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, std::vector s_2t(trace_alpha_size * col_size); for (int icol = 0; icol < col_size; icol++) { - hamilt::BaseMatrix* col_ptr = this->phialpha[0]->find_matrix(iat, ibt2, dR2); + hamilt::BaseMatrix* col_ptr = phialpha[0]->find_matrix(iat, ibt2, dR2); for (int i = 0; i < trace_alpha_size; i++) { s_2t[i * col_size + icol] = col_ptr->get_value(col_indexes[icol], trace_alpha_col[i]); @@ -174,17 +180,17 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, { for (int is = 0; is < PARAM.inp.nspin; is++) { - hamilt::AtomPair dm_pair(ibt1, ibt2, 0, 0, 0, pv); + hamilt::AtomPair dm_pair(ibt1, ibt2, 0, 0, 0, &pv); dm_pair.allocate(dm_array.data(), 0); if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) { - dm_pair.add_from_matrix(dm_hl[0][is].c, pv->get_row_size(), 1.0, 1); + dm_pair.add_from_matrix(dm_hl[is].c, pv.get_row_size(), 1.0, 1); } else { - dm_pair.add_from_matrix(dm_hl[0][is].c, pv->get_col_size(), 1.0, 0); + dm_pair.add_from_matrix(dm_hl[is].c, pv.get_col_size(), 1.0, 0); } } // is } @@ -197,7 +203,7 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, (dR2 - dR1).x, (dR2 - dR1).y, (dR2 - dR1).z, - pv); + &pv); dm_pair.allocate(&dm_array[ik * row_size * col_size], 0); @@ -212,11 +218,11 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) { - dm_pair.add_from_matrix(dm_hl[0][ik].c, pv->get_row_size(), kphase, 1); + dm_pair.add_from_matrix(dm_hl[ik].c, pv.get_row_size(), kphase, 1); } else { - dm_pair.add_from_matrix(dm_hl[0][ik].c, pv->get_col_size(), kphase, 0); + dm_pair.add_from_matrix(dm_hl[ik].c, pv.get_col_size(), kphase, 0); } } // ik } @@ -259,14 +265,14 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, { for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) { - const int inl = this->inl_index[T0](I0, L0, N0); + const int inl = inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - orbital_pdm_shell[ik][0][inl][m1 * nm + m2] + orbital_pdm_shell[ik][inl][m1 * nm + m2] += ddot_(&row_size, p_g1dmt + index * row_size * nks, &inc, @@ -285,57 +291,48 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, #ifdef __MPI for (int iks = 0; iks < nks; iks++) { - for (int hl = 0; hl < 1; hl++) + for (int inl = 0; inl < inlmax; inl++) { - for (int inl = 0; inl < this->inlmax; inl++) - { - Parallel_Reduce::reduce_all(this->orbital_pdm_shell[iks][hl][inl], - (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)); - } + Parallel_Reduce::reduce_all(this->orbital_pdm_shell[iks][inl], + (2 * lmaxd + 1) * (2 * lmaxd + 1)); } } #endif // transfer orbital_pdm_shell to orbital_pdm_shell_vector - int nlmax = this->inlmax / nat; + int nlmax = inlmax / nat; std::vector orbital_pdm_shell_vector; for (int nl = 0; nl < nlmax; ++nl) { - std::vector kiammv; + std::vector kammv; for (int iks = 0; iks < nks; ++iks) { - std::vector iammv; - for (int hl = 0; hl < 1; ++hl) + std::vector ammv; + for (int iat = 0; iat < nat; ++iat) { - std::vector ammv; - for (int iat = 0; iat < nat; ++iat) - { - int inl = iat * nlmax + nl; - int nm = 2 * this->inl_l[inl] + 1; - std::vector mmv; + int inl = iat * nlmax + nl; + int nm = 2 * inl_l[inl] + 1; + std::vector mmv; - for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d + for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d + { + for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d - { - mmv.push_back(this->orbital_pdm_shell[iks][hl][inl][m1 * nm + m2]); - } + mmv.push_back(this->orbital_pdm_shell[iks][inl][m1 * nm + m2]); } - torch::Tensor mm - = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64)).reshape({nm, nm}); // nm*nm - - ammv.push_back(mm); } - torch::Tensor amm = torch::stack(ammv, 0); - iammv.push_back(amm); + torch::Tensor mm + = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64)).reshape({nm, nm}); // nm*nm + + ammv.push_back(mm); } - torch::Tensor iamm = torch::stack(iammv, 0); // inl*nm*nm - kiammv.push_back(iamm); + torch::Tensor amm = torch::stack(ammv, 0); + kammv.push_back(amm); } - torch::Tensor kiamm = torch::stack(kiammv, 0); - orbital_pdm_shell_vector.push_back(kiamm); + torch::Tensor kamm = torch::stack(kammv, 0); + orbital_pdm_shell_vector.push_back(kamm); } assert(orbital_pdm_shell_vector.size() == nlmax); @@ -345,7 +342,7 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, for (int nl = 0; nl < nlmax; ++nl) { orbital_precalc_vector.push_back( - at::einsum("kiamn, avmn->kiav", {orbital_pdm_shell_vector[nl], this->gevdm_vector[nl]})); + at::einsum("kamn, avmn->kav", {orbital_pdm_shell_vector[nl], this->gevdm_vector[nl]})); } this->orbital_precalc_tensor = torch::cat(orbital_precalc_vector, -1); @@ -355,20 +352,32 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector>& dm_hl, } template void LCAO_Deepks::cal_orbital_precalc( - const std::vector>& dm_hl, + const std::vector& dm_hl, + const int lmaxd, + const int inlmax, const int nat, const int nks, + const int* inl_l, const std::vector>& kvec_d, + const std::vector*> phialpha, + const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, const Grid_Driver& GridD); template void LCAO_Deepks::cal_orbital_precalc, ModuleBase::ComplexMatrix>( - const std::vector>& dm_hl, + const std::vector& dm_hl, + const int lmaxd, + const int inlmax, const int nat, const int nks, + const int* inl_l, const std::vector>& kvec_d, + const std::vector*> phialpha, + const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, const Grid_Driver& GridD); #endif From 201f752f29806f0189f641f268db6492d64a9572 Mon Sep 17 00:00:00 2001 From: Erjie Wu <110683255+ErjieWu@users.noreply.github.com> Date: Tue, 31 Dec 2024 10:33:49 +0800 Subject: [PATCH 25/44] Fix and reopen UT in HContainer output. (#5781) --- source/module_base/parallel_2d.cpp | 17 +++--- source/module_base/parallel_2d.h | 3 ++ .../module_hcontainer/output_hcontainer.cpp | 21 +++----- .../module_hcontainer/test/CMakeLists.txt | 54 +++++++++---------- 4 files changed, 46 insertions(+), 49 deletions(-) diff --git a/source/module_base/parallel_2d.cpp b/source/module_base/parallel_2d.cpp index 30aceda761..3791a1218b 100644 --- a/source/module_base/parallel_2d.cpp +++ b/source/module_base/parallel_2d.cpp @@ -12,20 +12,24 @@ bool Parallel_2D::in_this_processor(const int iw1_all, const int iw2_all) const int Parallel_2D::get_global_row_size() const { + if (!is_serial) + { #ifdef __MPI - return desc[2]; -#else - return nrow; + return desc[2]; #endif + } + return nrow; } int Parallel_2D::get_global_col_size() const { + if (!is_serial) + { #ifdef __MPI - return desc[3]; -#else - return ncol; + return desc[3]; #endif + } + return ncol; } #ifdef __MPI @@ -133,6 +137,7 @@ void Parallel_2D::set_serial(const int mg, const int ng) std::iota(local2global_col_.begin(), local2global_col_.end(), 0); global2local_row_ = local2global_row_; global2local_col_ = local2global_col_; + is_serial = true; #ifdef __MPI blacs_ctxt = -1; #endif diff --git a/source/module_base/parallel_2d.h b/source/module_base/parallel_2d.h index 8aeea9792f..2f8bc8b132 100644 --- a/source/module_base/parallel_2d.h +++ b/source/module_base/parallel_2d.h @@ -129,6 +129,9 @@ class Parallel_2D /// process coordinate in the BLACS grid int coord[2] = {-1, -1}; + /// whether to use the serial mode + bool is_serial = false; + protected: /// map from global index to local index std::vector global2local_row_; diff --git a/source/module_hamilt_lcao/module_hcontainer/output_hcontainer.cpp b/source/module_hamilt_lcao/module_hcontainer/output_hcontainer.cpp index eb7d8d4f89..474e856bcb 100644 --- a/source/module_hamilt_lcao/module_hcontainer/output_hcontainer.cpp +++ b/source/module_hamilt_lcao/module_hcontainer/output_hcontainer.cpp @@ -40,42 +40,34 @@ void Output_HContainer::write(int rx_in, int ry_in, int rz_in) int find_R = 0; for (int iR = 0; iR < size_for_loop_R; iR++) { - std::cout << __FILE__ << " " << __LINE__ << std::endl; - this->_hcontainer->loop_R(iR, rx, ry, rz); if (rx == rx_in && ry == ry_in && rz == rz_in) { - std::cout << __FILE__ << " " << __LINE__ << std::endl; - find_R += 1; this->write_single_R(rx, ry, rz); - std::cout << __FILE__ << " " << __LINE__ << std::endl; - break; } - std::cout << __FILE__ << " " << __LINE__ << std::endl; - } if (find_R == 0) { - ModuleBase::WARNING_QUIT("Output_HContainer::write", "Cannot find the R vector from the HContaine"); + ModuleBase::WARNING_QUIT("Output_HContainer::write", "Cannot find the R vector from the HContainer."); } } template void Output_HContainer::write_single_R(int rx, int ry, int rz) { - std::cout << __FILE__ << " " << __LINE__ << std::endl; - + if (this->_hcontainer->get_paraV() == nullptr) + { + ModuleBase::WARNING_QUIT("Output_HContainer::write_single_R", "paraV is nullptr! Unable to write the matrix."); + } this->_hcontainer->fix_R(rx, ry, rz); - std::cout << __FILE__ << " " << __LINE__ << std::endl; ModuleIO::SparseMatrix sparse_matrix = ModuleIO::SparseMatrix(_hcontainer->get_nbasis(), _hcontainer->get_nbasis()); - std::cout << __FILE__ << " " << __LINE__ << std::endl; + assert(_hcontainer->get_nbasis()>0); sparse_matrix.setSparseThreshold(this->_sparse_threshold); - std::cout << __FILE__ << " " << __LINE__ << std::endl; for (int iap = 0; iap < this->_hcontainer->size_atom_pairs(); ++iap) { @@ -93,7 +85,6 @@ void Output_HContainer::write_single_R(int rx, int ry, int rz) } } } - std::cout << __FILE__ << " " << __LINE__ << std::endl; if (sparse_matrix.getNNZ() != 0) { diff --git a/source/module_hamilt_lcao/module_hcontainer/test/CMakeLists.txt b/source/module_hamilt_lcao/module_hcontainer/test/CMakeLists.txt index 39c1a1e1a0..c8a26378cf 100644 --- a/source/module_hamilt_lcao/module_hcontainer/test/CMakeLists.txt +++ b/source/module_hamilt_lcao/module_hcontainer/test/CMakeLists.txt @@ -42,35 +42,33 @@ add_test(NAME hontainer_para_test WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) -#AddTest( -# TARGET hcontainer_output_test -# LIBS parameter base ${math_libs} device -# SOURCES test_hcontainer_output.cpp -# tmp_mocks.cpp -# ../output_hcontainer.cpp -# ../base_matrix.cpp -# ../hcontainer.cpp -# ../atom_pair.cpp -# ../../../module_basis/module_ao/parallel_2d.cpp -# ../../../module_basis/module_ao/parallel_orbitals.cpp -# ../../../module_io/sparse_matrix.cpp -#) +AddTest( + TARGET hcontainer_output_test + LIBS parameter base ${math_libs} device + SOURCES test_hcontainer_output.cpp + tmp_mocks.cpp + ../output_hcontainer.cpp + ../base_matrix.cpp + ../hcontainer.cpp + ../atom_pair.cpp + ../../../module_basis/module_ao/parallel_orbitals.cpp + ../../../module_io/sparse_matrix.cpp +) install(DIRECTORY support DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -#AddTest( -# TARGET hcontainer_readCSR_test -# LIBS parameter base ${math_libs} device cell_info -# SOURCES test_hcontainer_readCSR.cpp -# ../base_matrix.cpp -# ../hcontainer.cpp -# ../atom_pair.cpp -# ../output_hcontainer.cpp -# ../../../module_basis/module_ao/parallel_2d.cpp -# ../../../module_basis/module_ao/parallel_orbitals.cpp -# ../../../module_io/sparse_matrix.cpp -# ../../../module_io/csr_reader.cpp -# ../../../module_io/file_reader.cpp -# ../../../module_io/output.cpp -#) +AddTest( + TARGET hcontainer_readCSR_test + LIBS parameter base ${math_libs} device cell_info + SOURCES test_hcontainer_readCSR.cpp + ../base_matrix.cpp + ../hcontainer.cpp + ../atom_pair.cpp + ../output_hcontainer.cpp + ../../../module_basis/module_ao/parallel_orbitals.cpp + ../../../module_io/sparse_matrix.cpp + ../../../module_io/csr_reader.cpp + ../../../module_io/file_reader.cpp + ../../../module_io/output.cpp +) endif() \ No newline at end of file From 3abf2fcdf351dd9138b1be8cbad737259e69ea0c Mon Sep 17 00:00:00 2001 From: kirk0830 <67682086+kirk0830@users.noreply.github.com> Date: Tue, 31 Dec 2024 14:32:19 +0800 Subject: [PATCH 26/44] Fix: correct the typo and format error in doc (#5788) --- docs/quick_start/input.md | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/quick_start/input.md b/docs/quick_start/input.md index b95161227c..a133837f2b 100644 --- a/docs/quick_start/input.md +++ b/docs/quick_start/input.md @@ -8,17 +8,17 @@ The `INPUT` file contains parameters that control the type of calculation as wel Below is an example `INPUT` file with some of the most important parameters that need to be set: -``` +```plaintext INPUT_PARAMETERS suffix MgO ntype 2 pseudo_dir ./ -orbital_dir ./ -ecutwfc 100 # Rydberg -scf_thr 1e-4 # Rydberg -basis_type lcao -calculation scf # this is the key parameter telling abacus to do a scf calculation -out_chg True +orbital_dir ./ +ecutwfc 100 # in Rydberg +scf_thr 1e-4 # Rydberg +basis_type lcao +calculation scf # this is the key parameter telling abacus to do a scf calculation +out_chg True ``` The parameter list always starts with key word `INPUT_PARAMETERS`. Any content before `INPUT_PARAMETERS` will be ignored. @@ -40,22 +40,23 @@ In the above example, the meanings of the parameters are: - `ntype` : how many types of elements in the unit cell - `pseudo_dir` : the directory where pseudopotential files are provided - `orbital_dir` : the directory where orbital files are provided -- `ecutwfc` : the plane-wave energy cutoff for the wave function expansion (UNIT: Rydberg) -- `scf_thr` : the threshold for the convergence of charge density (UNIT: Rydberg) +- `ecutwfc` : the plane-wave energy cutoff for the wave function expansion (UNIT: Rydberg) +- `scf_thr` : the threshold for the convergence of charge density (UNIT: Rydberg) - `basis_type` : the type of basis set for expanding the electronic wave functions - `calculation` : the type of calculation to be performed by ABACUS -- `out_chg` : if true, output thee charge density oon real space grid +- `out_chg` : if true, output the charge density on real space grid For a complete list of input parameters, please consult this [instruction](../advanced/input_files/input-main.md). -> **Note:** Users cannot change the filename “INPUT” to other names. Boolean paramerters such as `out_chg` can be set by using `True` and `False`, `1` and `0`, or `T` and `F`. It is case insensitive so that other preferences such as `true` and `false`, `TRUE` and `FALSE`, and `t` and `f` for setting boolean values are also supported. +> **Note:** Users cannot change the filename “INPUT” to other names. Boolean paramerters such as `out_chg` can be set by using `True` and `False`, `1` and `0`, or `T` and `F`. It is case insensitive so that other preferences such as `true` and `false`, `TRUE` and `FALSE`, and `t` and `f` for setting boolean values are also supported. Specifically for the `out_chg`, `-1` option is also available, which means turn off the checkpoint of charge density in binary (always dumped in `OUT.{suffix}`, whose name ends with `CHARGE-DENSITY.restart`). Some parameters controlling the output also support a second option to control the output precision, e.g., `out_chg True 8` will output the charge density on realspace grid with 8 digits after the decimal point. ## *STRU* -The structure file contains structural information about the system, e.g., lattice constant, lattice vectors, and positions of the atoms within a unit cell. The positions can be given either in direct or Cartesian coordinates. +The structure file contains structural information about the system, e.g., lattice constant, lattice vectors, and positions of the atoms within a unit cell. The positions can be given either in direct or Cartesian coordinates. An example of the `STRU` file is given as follows : -``` + +```plaintext #This is the atom file containing all the information #about the lattice structure. @@ -68,7 +69,7 @@ Mg_gga_8au_100Ry_4s2p1d.orb O_gga_8au_100Ry_2s2p1d.orb LATTICE_CONSTANT -1.8897259886 # 1.8897259886 Bohr = 1.0 Angstrom +1.8897259886 # 1.8897259886 Bohr = 1.0 Angstrom LATTICE_VECTORS 4.25648 0.00000 0.00000 @@ -100,9 +101,10 @@ For a more detailed description of STRU file, please consult [here](../advanced/ ## *KPT* This file contains information of the kpoint grid setting for the Brillouin zone sampling. - + An example of the `KPT` file is given below: -``` + +```plaintext K_POINTS 0 Gamma @@ -111,7 +113,6 @@ Gamma > **Note:** users may choose a different name for their k-point file using keyword `kpoint_file` - For a more detailed description, please consult [here](../advanced/input_files/kpt.md). - The pseudopotential files From 6fadfb96c74518bbc9e9f5c5ad8a70850e336245 Mon Sep 17 00:00:00 2001 From: liiutao <74701833+A-006@users.noreply.github.com> Date: Tue, 31 Dec 2024 14:34:09 +0800 Subject: [PATCH 27/44] Refactor: decrease uninitialized member values and the risk of memory leaks in abacus (#5755) * init variable and fix memory leak bug in module_base * fix uninit member var in module_basis * chang logic bug and uninit memeber value in the module cell * chang logic bug and uninit memeber value in the module_elecstate * chang logic bug and uninit memeber value in the module_eslover * chang memory leak risk and uninit memeber value in the module_hamilt_general * chang uninit memeber value in the module_hamilt_lcao * chang uninit memeber value in the module_hamilt_pwdft * fix in klist * [pre-commit.ci lite] apply automatic fixes * fix useless assert * revert change in read_pp_upf100.cpp * change uninit memeber value in module_hamilt_pw * change uninit memeber value in module_hsolver * change uninit memeber value in module_io * change uninit memeber value in module_md and module_relax * [pre-commit.ci lite] apply automatic fixes * update nnr init data * fix uninit member value * update value in elecstate_energy.cpp * add init parameter for construct in sto_func * add value in the construct file * [pre-commit.ci lite] apply automatic fixes * change magnetism.cpp * [pre-commit.ci lite] apply automatic fixes * modify logic of elecstate_energy.cpp --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/module_base/intarray.h | 11 ++- source/module_base/inverse_matrix.h | 14 ++-- source/module_base/memory.cpp | 1 + .../module_basis/module_ao/ORB_nonlocal.cpp | 2 + source/module_basis/module_ao/ORB_nonlocal.h | 8 +- .../module_ao/ORB_nonlocal_lm.cpp | 7 +- .../module_ao/parallel_orbitals.cpp | 18 ++-- .../module_ao/parallel_orbitals.h | 4 +- source/module_basis/module_pw/pw_basis_big.h | 10 ++- source/module_basis/module_pw/pw_basis_k.h | 6 +- .../module_basis/module_pw/pw_basis_k_big.h | 12 ++- source/module_cell/klist.cpp | 21 +---- source/module_cell/klist.h | 4 +- .../module_cell/module_neighbor/sltk_atom.cpp | 3 + .../module_cell/module_neighbor/sltk_grid.h | 38 ++++----- source/module_cell/module_paw/paw_element.cpp | 8 +- source/module_cell/module_symmetry/symmetry.h | 42 +++++----- source/module_cell/read_atoms.cpp | 11 +-- source/module_cell/read_pp_upf100.cpp | 3 +- source/module_cell/read_pp_vwr.cpp | 2 +- source/module_cell/setup_nonlocal.cpp | 2 +- source/module_elecstate/elecstate_energy.cpp | 35 +++++--- source/module_elecstate/magnetism.cpp | 18 ++-- source/module_elecstate/magnetism.h | 14 ++-- .../module_elecstate/module_charge/charge.cpp | 5 +- .../module_elecstate/module_charge/charge.h | 8 +- source/module_esolver/esolver_ks_lcao.cpp | 1 + source/module_esolver/esolver_ks_pw.cpp | 4 +- source/module_esolver/esolver_lj.h | 2 +- .../module_vdw/vdwd2_parameters.h | 3 + .../module_vdw/vdwd3_parameters.h | 14 ++-- .../module_xc/xc_functional_libxc.cpp | 2 +- .../hamilt_lcaodft/record_adj.cpp | 2 +- .../hamilt_lcaodft/record_adj.h | 8 +- .../module_dftu/dftu_yukawa.cpp | 76 +++++++++++------ .../module_gint/gint_tools.h | 20 ++--- .../module_gint/grid_bigcell.h | 2 +- .../module_gint/grid_technique.h | 22 ++--- .../hamilt_pwdft/operator_pw/meta_pw.cpp | 9 +- .../hamilt_pwdft/operator_pw/nonlocal_pw.cpp | 9 +- .../hamilt_pwdft/operator_pw/veff_pw.cpp | 7 +- .../hamilt_pwdft/operator_pw/velocity_pw.cpp | 8 +- .../hamilt_pwdft/operator_pw/velocity_pw.h | 4 +- .../hamilt_pwdft/parallel_grid.h | 18 ++-- .../hamilt_pwdft/structure_factor.h | 4 +- .../hamilt_stodft/sto_func.cpp | 82 +++++++++++-------- .../module_hamilt_pw/hamilt_stodft/sto_iter.h | 8 +- source/module_hsolver/genelpa/elpa_new.cpp | 8 ++ .../module_pexsi/dist_ccs_matrix.h | 6 +- source/module_io/berryphase.h | 8 +- source/module_io/bessel_basis.h | 26 +++--- source/module_io/get_pchg_lcao.h | 4 +- source/module_io/input_conv.h | 2 +- source/module_io/json_output/json_node.h | 2 +- source/module_io/numerical_descriptor.cpp | 2 + source/module_io/to_wannier90.h | 6 +- source/module_io/unk_overlap_lcao.h | 4 +- source/module_md/fire.cpp | 2 + source/module_md/fire.h | 2 +- source/module_md/md_base.h | 6 +- source/module_md/msst.cpp | 4 +- source/module_md/nhchain.h | 52 ++++++------ source/module_relax/relax_old/bfgs_basic.h | 6 +- source/module_relax/relax_old/ions_move_cg.h | 6 +- .../relax_old/lattice_change_cg.h | 2 +- 65 files changed, 427 insertions(+), 333 deletions(-) diff --git a/source/module_base/intarray.h b/source/module_base/intarray.h index 484d017f97..7cffbaf4fd 100644 --- a/source/module_base/intarray.h +++ b/source/module_base/intarray.h @@ -141,9 +141,14 @@ class IntArray } private: - int size; - int dim; - int bound1, bound2, bound3, bound4, bound5, bound6; + int size=0; + int dim=0; + int bound1=0; + int bound2=0; + int bound3=0; + int bound4=0; + int bound5=0; + int bound6=0; static int arrayCount; void freemem(); }; diff --git a/source/module_base/inverse_matrix.h b/source/module_base/inverse_matrix.h index ef5f5acec2..d49e109e15 100644 --- a/source/module_base/inverse_matrix.h +++ b/source/module_base/inverse_matrix.h @@ -20,13 +20,13 @@ class Inverse_Matrix_Complex void init( const int &dim_in); private: - int dim; - double *e; - int lwork; - std::complex *work2; - double* rwork; - int info; - bool allocate; //mohan add 2012-04-02 + int dim=0; + double *e=nullptr; + int lwork=0; + std::complex *work2=nullptr; + double* rwork=nullptr; + int info=0; + bool allocate=false; //mohan add 2012-04-02 ModuleBase::ComplexMatrix EA; }; diff --git a/source/module_base/memory.cpp b/source/module_base/memory.cpp index fdb6195be6..8d67f9ea4c 100644 --- a/source/module_base/memory.cpp +++ b/source/module_base/memory.cpp @@ -436,6 +436,7 @@ void Memory::print_all(std::ofstream &ofs) #if defined(__CUDA) || defined(__ROCM) if(!init_flag_gpu) { + delete[] print_flag; return; } diff --git a/source/module_basis/module_ao/ORB_nonlocal.cpp b/source/module_basis/module_ao/ORB_nonlocal.cpp index ce710d844b..86ec82be22 100644 --- a/source/module_basis/module_ao/ORB_nonlocal.cpp +++ b/source/module_basis/module_ao/ORB_nonlocal.cpp @@ -7,6 +7,7 @@ Numerical_Nonlocal::Numerical_Nonlocal() //question remains this->type = 0; this->lmax = 0; + this->rcut_max = 0.0; this->Proj = new Numerical_Nonlocal_Lm[1]; this->nproj = -1; //zhengdy-soc, for optimize nonlocal part @@ -49,6 +50,7 @@ void Numerical_Nonlocal::set_type_info //---------------------------------------------------------- //only store radial function delete[] Proj; + this->Proj = nullptr; this->Proj = new Numerical_Nonlocal_Lm[this->nproj]; for (int p1=0; p1freemem(); } -void Numerical_Nonlocal_Lm::renew(void) +void Numerical_Nonlocal_Lm::renew() { assert(nr_uniform>0); assert(nr>0); @@ -55,7 +56,7 @@ void Numerical_Nonlocal_Lm::renew(void) ModuleBase::GlobalFunc::ZEROS(beta_k, nk); } -void Numerical_Nonlocal_Lm::freemem(void) +void Numerical_Nonlocal_Lm::freemem() { delete[] this->r_radial; delete[] this->rab; @@ -246,7 +247,7 @@ void Numerical_Nonlocal_Lm::extra_uniform(const double &dr_uniform_in) } */ -void Numerical_Nonlocal_Lm::get_kradial(void) +void Numerical_Nonlocal_Lm::get_kradial() { //ModuleBase::TITLE("Numerical_Nonlocal_Lm","get_kradial"); double *jl = new double[nr]; diff --git a/source/module_basis/module_ao/parallel_orbitals.cpp b/source/module_basis/module_ao/parallel_orbitals.cpp index 880c43656a..c25a12df77 100644 --- a/source/module_basis/module_ao/parallel_orbitals.cpp +++ b/source/module_basis/module_ao/parallel_orbitals.cpp @@ -6,12 +6,20 @@ Parallel_Orbitals::Parallel_Orbitals() { - loc_sizes = nullptr; - + this->loc_sizes = nullptr; // in multi-k, 2D-block-division variables for FT (R<->k) - nnr = 1; - nlocdim = nullptr; - nlocstart = nullptr; + this->nlocdim = nullptr; + this->nlocstart = nullptr; + this->nnr = 1; + this->ncol_bands = 0; + this->nrow_bands=0; + this->nloc_wfc=0; + this->nloc_Eij=0; + this->lastband_in_proc=0; + this->lastband_number=0; + this->loc_size=0; + this->nbands = 0; + } Parallel_Orbitals::~Parallel_Orbitals() diff --git a/source/module_basis/module_ao/parallel_orbitals.h b/source/module_basis/module_ao/parallel_orbitals.h index 03ae9b133e..fb052de4e0 100644 --- a/source/module_basis/module_ao/parallel_orbitals.h +++ b/source/module_basis/module_ao/parallel_orbitals.h @@ -29,7 +29,7 @@ class Parallel_Orbitals : public Parallel_2D /// number of elements(basis-pairs) in this processon /// on all adjacent atoms-pairs(2D division) ///--------------------------------------- - int nnr; + int nnr=1; int *nlocdim; int *nlocstart; @@ -80,7 +80,7 @@ class Parallel_Orbitals : public Parallel_2D int get_nbands() const; - int nbands = 0; + int nbands; /** * @brief gather global indexes of orbitals in this processor diff --git a/source/module_basis/module_pw/pw_basis_big.h b/source/module_basis/module_pw/pw_basis_big.h index ad254fb436..d3ac1a5165 100644 --- a/source/module_basis/module_pw/pw_basis_big.h +++ b/source/module_basis/module_pw/pw_basis_big.h @@ -34,10 +34,12 @@ class PW_Basis_Big : public PW_Basis_Sup bxyz = bx * by * bz; } int bx = 1, by = 1, bz = 1, bxyz = 1; - int nbx, nby, nbz; - int nbzp; - int nbxx; - int nbzp_start; + int nbx=0; + int nby=0; + int nbz=0; + int nbzp=0; + int nbxx=0; + int nbzp_start=0; void autoset_big_cell_size(int& b_size, const int& nc_size, const int nproc = 0) { diff --git a/source/module_basis/module_pw/pw_basis_k.h b/source/module_basis/module_pw/pw_basis_k.h index 83aa377e79..768c4df1fe 100644 --- a/source/module_basis/module_pw/pw_basis_k.h +++ b/source/module_basis/module_pw/pw_basis_k.h @@ -94,9 +94,9 @@ class PW_Basis_K : public PW_Basis double *gk2=nullptr; // modulus (G+K)^2 of G vectors [npwk_max*nks] // liuyu add 2023-09-06 - double erf_ecut; // the value of the constant energy cutoff - double erf_height; // the height of the energy step for reciprocal vectors - double erf_sigma; // the width of the energy step for reciprocal vectors + double erf_ecut=0.0; // the value of the constant energy cutoff + double erf_height=0.0; // the height of the energy step for reciprocal vectors + double erf_sigma=0.0; // the width of the energy step for reciprocal vectors //collect gdirect, gcar, gg void collect_local_pw(const double& erf_ecut_in = 0.0, diff --git a/source/module_basis/module_pw/pw_basis_k_big.h b/source/module_basis/module_pw/pw_basis_k_big.h index 52e2bfb220..d0bb475627 100644 --- a/source/module_basis/module_pw/pw_basis_k_big.h +++ b/source/module_basis/module_pw/pw_basis_k_big.h @@ -30,8 +30,13 @@ class PW_Basis_K_Big: public PW_Basis_K by = by_in; bz = bz_in; } - int bx,by,bz; - int nbx, nby, nbz; + int bx=0; + int by=0; + int bz=0; + int nbx=0; + int nby=0; + int nbz=0; + virtual void distribute_r() { bx = (bx == 0) ? 2 : bx; @@ -51,7 +56,8 @@ class PW_Basis_K_Big: public PW_Basis_K for(int ip = 0 ; ip < this->poolnproc ; ++ip) { this->numz[ip] = npbz*this->bz; - if(ip < modbz) this->numz[ip]+=this->bz; + if(ip < modbz) { this->numz[ip]+=this->bz; +} if(ip < this->poolnproc - 1) this->startz[ip+1] = this->startz[ip] + numz[ip]; if(ip == this->poolrank) { diff --git a/source/module_cell/klist.cpp b/source/module_cell/klist.cpp index d887de0c05..68a788c0eb 100644 --- a/source/module_cell/klist.cpp +++ b/source/module_cell/klist.cpp @@ -15,23 +15,11 @@ K_Vectors::K_Vectors() { -#ifdef _MCD_CHECK - FILE* out; - out = fopen("1_Memory", "w"); - if (out == NULL) - { - std::cout << "\n Can't open file!"; - ModuleBase::QUIT(); - } - _MCD_RealTimeLog(out); - _MCD_MemStatLog(out); -// showMemStats(); -#endif nspin = 0; // default spin. kc_done = false; kd_done = false; - + nkstot_full = 0; nks = 0; nkstot = 0; k_nkstot = 0; // LiuXh add 20180619 @@ -39,10 +27,6 @@ K_Vectors::K_Vectors() K_Vectors::~K_Vectors() { -// ModuleBase::TITLE("K_Vectors","~K_Vectors"); -#ifdef _MCD_CHECK - showMemStats(); -#endif } int K_Vectors::get_ik_global(const int& ik, const int& nkstot) @@ -963,7 +947,8 @@ void K_Vectors::ibz_kpoint(const ModuleSymmetry::Symmetry& symm, break; } } - if (exist_number != -1) break; + if (exist_number != -1) { break; +} } this->kstars[exist_number].insert(std::make_pair(isym, kvec_d[i])); } diff --git a/source/module_cell/klist.h b/source/module_cell/klist.h index 658544dbdd..b9af96bed7 100644 --- a/source/module_cell/klist.h +++ b/source/module_cell/klist.h @@ -19,7 +19,7 @@ class K_Vectors std::vector ngk; /// ngk, number of plane waves for each k point std::vector isk; /// distinguish spin up and down k points - int nmp[3]; /// Number of Monhorst-Pack + int nmp[3]={0}; /// Number of Monhorst-Pack std::vector kl_segids; /// index of kline segment /// @brief equal k points to each ibz-kpont, corresponding to a certain symmetry operations. @@ -163,7 +163,7 @@ class K_Vectors int nspin; bool kc_done; bool kd_done; - double koffset[3]; // used only in automatic k-points. + double koffset[3]={0.0}; // used only in automatic k-points. std::string k_kword; // LiuXh add 20180619 int k_nkstot; // LiuXh add 20180619 bool is_mp = false; // Monkhorst-Pack diff --git a/source/module_cell/module_neighbor/sltk_atom.cpp b/source/module_cell/module_neighbor/sltk_atom.cpp index bd62fe52ca..c6c847a9dd 100644 --- a/source/module_cell/module_neighbor/sltk_atom.cpp +++ b/source/module_cell/module_neighbor/sltk_atom.cpp @@ -9,4 +9,7 @@ FAtom::FAtom() z = 0.0; type = 0; natom = 0; + cell_x = 0; + cell_y = 0; + cell_z = 0; } diff --git a/source/module_cell/module_neighbor/sltk_grid.h b/source/module_cell/module_neighbor/sltk_grid.h index 7998aad63b..ac0194c116 100644 --- a/source/module_cell/module_neighbor/sltk_grid.h +++ b/source/module_cell/module_neighbor/sltk_grid.h @@ -26,24 +26,24 @@ class Grid void init(std::ofstream& ofs, const UnitCell& ucell, const double radius_in, const bool boundary = true); // Data - bool pbc; // When pbc is set to false, periodic boundary conditions are explicitly ignored. - double sradius2; // searching radius squared (unit:lat0) - double sradius; // searching radius (unit:lat0) + bool pbc=false; // When pbc is set to false, periodic boundary conditions are explicitly ignored. + double sradius2=0.0; // searching radius squared (unit:lat0) + double sradius=0.0; // searching radius (unit:lat0) // coordinate range of the input atom (unit:lat0) - double x_min; - double y_min; - double z_min; - double x_max; - double y_max; - double z_max; + double x_min=0.0; + double y_min=0.0; + double z_min=0.0; + double x_max=0.0; + double y_max=0.0; + double z_max=0.0; // The algorithm for searching neighboring atoms uses a "box" partitioning method. // Each box has an edge length of sradius, and the number of boxes in each direction is recorded here. - double box_edge_length; - int box_nx; - int box_ny; - int box_nz; + double box_edge_length=0.0; + int box_nx=0; + int box_ny=0; + int box_nz=0; void getBox(int& bx, int& by, int& bz, const double& x, const double& y, const double& z) { @@ -104,12 +104,12 @@ class Grid void Construct_Adjacent_final(const FAtom& fatom1, FAtom* fatom2); void Check_Expand_Condition(const UnitCell& ucell); - int glayerX; - int glayerX_minus; - int glayerY; - int glayerY_minus; - int glayerZ; - int glayerZ_minus; + int glayerX=0; + int glayerX_minus=0; + int glayerY=0; + int glayerY_minus=0; + int glayerZ=0; + int glayerZ_minus=0; }; #endif diff --git a/source/module_cell/module_paw/paw_element.cpp b/source/module_cell/module_paw/paw_element.cpp index 5c75418752..30419e2ae4 100644 --- a/source/module_cell/module_paw/paw_element.cpp +++ b/source/module_cell/module_paw/paw_element.cpp @@ -67,7 +67,7 @@ void Paw_Element::read_paw_xml(std::string filename) this->lstate[istate] = this->extract_int(line,"l="); lmax = std::max(lmax, lstate[istate]); - int pos = line.find("f="); + size_t pos = line.find("f="); if(pos!=std::string::npos) { this->lstate_occ[istate] = this->extract_double(line,"f="); @@ -178,7 +178,7 @@ std::string Paw_Element::scan_file(std::ifstream &ifs, std::string pattern) double Paw_Element::extract_double(std::string line, std::string key) { - int index = line.find(key); + size_t index = line.find(key); if (index != std::string::npos) { std::stringstream tmp; @@ -198,7 +198,7 @@ double Paw_Element::extract_double(std::string line, std::string key) std::string Paw_Element::extract_string(std::string line, std::string key) { - int index = line.find(key); + size_t index = line.find(key); if (index != std::string::npos) { std::stringstream tmp; @@ -218,7 +218,7 @@ std::string Paw_Element::extract_string(std::string line, std::string key) int Paw_Element::extract_int(std::string line, std::string key) { - int index = line.find(key); + size_t index = line.find(key); if (index != std::string::npos) { std::stringstream tmp; diff --git a/source/module_cell/module_symmetry/symmetry.h b/source/module_cell/module_symmetry/symmetry.h index 25f8a42206..e5f4ad7950 100644 --- a/source/module_cell/module_symmetry/symmetry.h +++ b/source/module_cell/module_symmetry/symmetry.h @@ -35,31 +35,31 @@ class Symmetry : public Symmetry_Basic ModuleBase::Vector3 a1, a2, a3; //primitive cell vectors(might be changed during the process of the program) ModuleBase::Vector3 p1, p2, p3; //primitive cell vectors - int ntype; //the number of atomic species - int nat; //the number of all atoms - int *na; //number of atoms for each species - int *istart; //start number of atom. - int itmin_type; //the type has smallest number of atoms - int itmin_start; + int ntype=0; //the number of atomic species + int nat =0; //the number of all atoms + int *na =nullptr;//number of atoms for each species + int *istart=nullptr; //start number of atom. + int itmin_type=0; //the type has smallest number of atoms + int itmin_start=0; // direct coordinates of atoms. - double *newpos; + double *newpos=nullptr; // positions of atoms after rotation. - double *rotpos; + double *rotpos=nullptr; std::vector> ptrans; // the translation vectors of the primitive cell in the input structure int ncell=1; //the number of primitive cells within one supercell - int *index; + int *index=nullptr; - double cel_const[6]; - double pcel_const[6]; //cel_const of primitive cell - double pre_const[6]; //cel_const of input configuration, first 3 is moduli of a1, a2, a3, last 3 is eular angle - - bool symflag_fft[48]; - int sym_test; - int pbrav; //ibrav of primitive cell - int real_brav; // the real ibrav for the cell pengfei Li 3-15-2022 + double cel_const[6]={0.0}; + double pcel_const[6]={0.0}; //cel_const of primitive cell + double pre_const[6]={0.0}; //cel_const of input configuration, first 3 is moduli of a1, a2, a3, last 3 is eular angle + + bool symflag_fft[48]={false}; + int sym_test=0; + int pbrav=0; //ibrav of primitive cell + int real_brav=0; // the real ibrav for the cell pengfei Li 3-15-2022 std::string ilattname; //the bravais lattice type of the supercell std::string plattname; //the bravais lattice type of the primitive cell @@ -68,12 +68,12 @@ class Symmetry : public Symmetry_Basic ModuleBase::Vector3 gtrans[48]; ModuleBase::Matrix3 symop[48]; //the rotation matrices for the pure bravais lattice - int nop; //the number of point group operations of the pure bravais lattice without basis - int nrot; //the number of pure point group rotations + int nop=0; //the number of point group operations of the pure bravais lattice without basis + int nrot=0; //the number of pure point group rotations int nrotk = -1; //the number of all space group operations, >0 means the nrotk has been analyzed int max_nrotk = -1; ///< record the maximum number of symmetry operations during cell-relax - int pgnumber; //the serial number of point group - int spgnumber; //the serial number of point group in space group + int pgnumber=0; //the serial number of point group + int spgnumber=0; //the serial number of point group in space group std::string pgname; //the Schoenflies name of the point group R in {R|0} std::string spgname; //the Schoenflies name of the point group R in the space group {R|t} diff --git a/source/module_cell/read_atoms.cpp b/source/module_cell/read_atoms.cpp index 9f369cd3f5..736a0aec06 100644 --- a/source/module_cell/read_atoms.cpp +++ b/source/module_cell/read_atoms.cpp @@ -716,10 +716,11 @@ bool UnitCell::read_atom_positions(std::ifstream &ifpos, std::ofstream &ofs_runn } //print only ia==0 && mag>0 to avoid too much output //print when ia!=0 && mag[ia] != mag[0] to avoid too much output - if(ia==0 || (ia!=0 - && (atoms[it].m_loc_[ia].x != atoms[it].m_loc_[0].x - || atoms[it].m_loc_[ia].y != atoms[it].m_loc_[0].y - || atoms[it].m_loc_[ia].z != atoms[it].m_loc_[0].z))) + // 'A || (!A && B)' is equivalent to 'A || B',so the following + // code is equivalent to 'ia==0 || (...)' + if(ia==0 || (atoms[it].m_loc_[ia].x != atoms[it].m_loc_[0].x + || atoms[it].m_loc_[ia].y != atoms[it].m_loc_[0].y + || atoms[it].m_loc_[ia].z != atoms[it].m_loc_[0].z)) { //use a stringstream to generate string: "concollinear magnetization of element it is:" std::stringstream ss; @@ -737,7 +738,7 @@ bool UnitCell::read_atom_positions(std::ifstream &ifpos, std::ofstream &ofs_runn atoms[it].mag[ia] = atoms[it].m_loc_[ia].z; //print only ia==0 && mag>0 to avoid too much output //print when ia!=0 && mag[ia] != mag[0] to avoid too much output - if(ia==0 || (ia!=0 && atoms[it].mag[ia] != atoms[it].mag[0])) + if(ia==0 || (atoms[it].mag[ia] != atoms[it].mag[0])) { //use a stringstream to generate string: "cocollinear magnetization of element it is:" std::stringstream ss; diff --git a/source/module_cell/read_pp_upf100.cpp b/source/module_cell/read_pp_upf100.cpp index 1f5d11d980..bfff72f3ca 100644 --- a/source/module_cell/read_pp_upf100.cpp +++ b/source/module_cell/read_pp_upf100.cpp @@ -468,8 +468,7 @@ void Pseudopot_upf::read_pseudo_rhoatom(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; -} + 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); diff --git a/source/module_cell/read_pp_vwr.cpp b/source/module_cell/read_pp_vwr.cpp index ddc105d934..68ef04fd81 100644 --- a/source/module_cell/read_pp_vwr.cpp +++ b/source/module_cell/read_pp_vwr.cpp @@ -29,7 +29,7 @@ int Pseudopot_upf::read_pseudo_vwr(std::ifstream &ifs, Atom_pseudo& pp) // (1) read in mesh std::string value; - int length=0; + size_t length=0; ifs >> value; length = value.find(","); value.erase(length,1); pp.mesh = std::atoi( value.c_str() ); //the mesh should be odd, which is forced in Simpson integration diff --git a/source/module_cell/setup_nonlocal.cpp b/source/module_cell/setup_nonlocal.cpp index f62982db49..c31557e25e 100644 --- a/source/module_cell/setup_nonlocal.cpp +++ b/source/module_cell/setup_nonlocal.cpp @@ -143,7 +143,7 @@ void InfoNonlocal::Set_NonLocal(const int& it, if (PARAM.inp.out_element_info) { tmpBeta_lm[p1].plot(GlobalV::MY_RANK); -} + } delete[] beta_r; } diff --git a/source/module_elecstate/elecstate_energy.cpp b/source/module_elecstate/elecstate_energy.cpp index fae932bd27..21537dab5d 100644 --- a/source/module_elecstate/elecstate_energy.cpp +++ b/source/module_elecstate/elecstate_energy.cpp @@ -103,7 +103,8 @@ double ElecState::cal_delta_eband(const UnitCell& ucell) const const double* v_eff = this->pot->get_effective_v(0); const double* v_fixed = this->pot->get_fixed_v(); const double* v_ofk = nullptr; - + const bool v_ofk_flag =(get_xc_func_type() == 3 + || get_xc_func_type() == 5); #ifdef USE_PAW if(PARAM.inp.use_paw) { @@ -128,28 +129,39 @@ double ElecState::cal_delta_eband(const UnitCell& ucell) const if(!PARAM.inp.use_paw) { - if (get_xc_func_type() == 3 || get_xc_func_type() == 5) - { - v_ofk = this->pot->get_effective_vofk(0); - } - for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { deband_aux -= this->charge->rho[0][ir] * (v_eff[ir] - v_fixed[ir]); - if (get_xc_func_type() == 3 || get_xc_func_type() == 5) + } + if (v_ofk_flag) + { + v_ofk = this->pot->get_effective_vofk(0); + // cause in the get_effective_vofk, the func will return nullptr + if(v_ofk==nullptr && this->charge->rhopw->nrxx>0) + { + ModuleBase::WARNING_QUIT("ElecState::cal_delta_eband","v_ofk is nullptr"); + } + for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { deband_aux -= this->charge->kin_r[0][ir] * v_ofk[ir]; } } - + if (PARAM.inp.nspin == 2) { v_eff = this->pot->get_effective_v(1); - v_ofk = this->pot->get_effective_vofk(1); for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { deband_aux -= this->charge->rho[1][ir] * (v_eff[ir] - v_fixed[ir]); - if (get_xc_func_type() == 3 || get_xc_func_type() == 5) + } + if (v_ofk_flag) + { + v_ofk = this->pot->get_effective_vofk(1); + if(v_ofk==nullptr && this->charge->rhopw->nrxx>0) + { + ModuleBase::WARNING_QUIT("ElecState::cal_delta_eband","v_ofk is nullptr"); + } + for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { deband_aux -= this->charge->kin_r[1][ir] * v_ofk[ir]; } @@ -201,12 +213,13 @@ double ElecState::cal_delta_escf() const { v_ofk = this->pot->get_effective_vofk(0); } - for (int ir = 0; ir < this->charge->rhopw->nrxx; ir++) { descf -= (this->charge->rho[0][ir] - this->charge->rho_save[0][ir]) * (v_eff[ir] - v_fixed[ir]); if (get_xc_func_type() == 3 || get_xc_func_type() == 5) { + // cause in the get_effective_vofk, the func will return nullptr + assert(v_ofk!=nullptr); descf -= (this->charge->kin_r[0][ir] - this->charge->kin_r_save[0][ir]) * v_ofk[ir]; } } diff --git a/source/module_elecstate/magnetism.cpp b/source/module_elecstate/magnetism.cpp index 918f1c988c..80d4856fc1 100644 --- a/source/module_elecstate/magnetism.cpp +++ b/source/module_elecstate/magnetism.cpp @@ -5,14 +5,15 @@ Magnetism::Magnetism() { - this->tot_magnetization = 0.0; - this->abs_magnetization = 0.0; - this->start_magnetization = nullptr; + tot_magnetization = 0.0; + abs_magnetization = 0.0; + std::fill(tot_magnetization_nc, tot_magnetization_nc + 3, 0.0); + std::fill(ux_, ux_ + 3, 0.0); } Magnetism::~Magnetism() { - delete[] this->start_magnetization; + delete[] start_magnetization; } void Magnetism::compute_magnetization(const double& omega, @@ -56,20 +57,23 @@ void Magnetism::compute_magnetization(const double& omega, // noncolliear : else if(PARAM.inp.nspin==4) { - for(int i=0;i<3;i++)this->tot_magnetization_nc[i] = 0.00; + for(int i=0;i<3;i++) {this->tot_magnetization_nc[i] = 0.00; +} this->abs_magnetization = 0.00; for (int ir=0; irtot_magnetization_nc[i] += rho[i+1][ir]; + for(int i=0;i<3;i++) {this->tot_magnetization_nc[i] += rho[i+1][ir]; +} this->abs_magnetization += std::abs(diff); } #ifdef __MPI Parallel_Reduce::reduce_pool(this->tot_magnetization_nc, 3); Parallel_Reduce::reduce_pool(this->abs_magnetization); #endif - for(int i=0;i<3;i++)this->tot_magnetization_nc[i] *= omega/ nxyz; + for(int i=0;i<3;i++) {this->tot_magnetization_nc[i] *= omega/ nxyz; +} this->abs_magnetization *= omega/ nxyz; GlobalV::ofs_running<<"total magnetism (Bohr mag/cell)"<<'\t'<tot_magnetization_nc[0]<<'\t'<tot_magnetization_nc[1]<<'\t'<tot_magnetization_nc[2]<<'\n'; ModuleBase::GlobalFunc::OUT(GlobalV::ofs_running,"absolute magnetism (Bohr mag/cell)",this->abs_magnetization); diff --git a/source/module_elecstate/magnetism.h b/source/module_elecstate/magnetism.h index bb4de6d28d..408ba9d039 100644 --- a/source/module_elecstate/magnetism.h +++ b/source/module_elecstate/magnetism.h @@ -14,11 +14,11 @@ class Magnetism ~Magnetism(); // notice : becast is done in unitcell - double *start_magnetization; + double *start_magnetization=nullptr; // tot_magnetization : majority spin - minority spin (nelup - neldw). double tot_magnetization; - double tot_magnetization_nc[3]; + double tot_magnetization_nc[3]={0.0}; double abs_magnetization; void compute_magnetization(const double& omega, @@ -28,12 +28,12 @@ class Magnetism double* nelec_spin = nullptr); - ModuleBase::Vector3 *m_loc_; //magnetization for each element along c-axis - double *angle1_; //angle between c-axis and real spin std::vector - double *angle2_; //angle between a-axis and real spin std::vector projection in ab-plane + ModuleBase::Vector3 *m_loc_=nullptr;//magnetization for each element along c-axis + double *angle1_=nullptr; //angle between c-axis and real spin std::vector + double *angle2_=nullptr; //angle between a-axis and real spin std::vector projection in ab-plane //void cal_ux(const int ntype); - double ux_[3]; - bool lsign_; + double ux_[3]={0.0}; + bool lsign_=false; private: bool judge_parallel(double a[3],ModuleBase::Vector3 b); diff --git a/source/module_elecstate/module_charge/charge.cpp b/source/module_elecstate/module_charge/charge.cpp index c3e23dd6c6..f152ca850e 100644 --- a/source/module_elecstate/module_charge/charge.cpp +++ b/source/module_elecstate/module_charge/charge.cpp @@ -326,9 +326,10 @@ void Charge::atomic_rho(const int spin_number_need, { // check the start magnetization const int startmag_type = [&]() -> int { - if (ucell.magnet.start_magnetization[it] != 0.0) { + if (ucell.magnet.start_magnetization[it] != 0.0) + { return 1; -} + } return 2; }(); ModuleBase::GlobalFunc::OUT(GlobalV::ofs_warning, "startmag_type", startmag_type); diff --git a/source/module_elecstate/module_charge/charge.h b/source/module_elecstate/module_charge/charge.h index e3bc33f901..0fe89f2dbb 100644 --- a/source/module_elecstate/module_charge/charge.h +++ b/source/module_elecstate/module_charge/charge.h @@ -144,10 +144,10 @@ class Charge void set_omega(double* omega_in){this->omega_ = omega_in;}; // mohan add 2021-02-20 - int nrxx; // number of r vectors in this processor - int nxyz; // total nuber of r vectors - int ngmc; // number of g vectors in this processor - int nspin; // number of spins + int nrxx=0; // number of r vectors in this processor + int nxyz=0; // total nuber of r vectors + int ngmc=0; // number of g vectors in this processor + int nspin=0; // number of spins ModulePW::PW_Basis* rhopw = nullptr;// When double_grid is used, rhopw = rhodpw (dense grid) bool cal_elf = false; // whether to calculate electron localization function (ELF) private: diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index e5e0684e9e..3ee810abc0 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -927,6 +927,7 @@ void ESolver_KS_LCAO::after_scf(UnitCell& ucell, const int istep) // 1) calculate the kinetic energy density tau, sunliang 2024-09-18 if (PARAM.inp.out_elf[0] > 0) { + assert(this->psi != nullptr); this->pelec->cal_tau(*(this->psi)); } diff --git a/source/module_esolver/esolver_ks_pw.cpp b/source/module_esolver/esolver_ks_pw.cpp index 5812eb903c..dca648f262 100644 --- a/source/module_esolver/esolver_ks_pw.cpp +++ b/source/module_esolver/esolver_ks_pw.cpp @@ -204,6 +204,7 @@ void ESolver_KS_PW::before_all_runners(UnitCell& ucell, const Input_p if (this->psi != nullptr) { delete this->psi; + this->psi = nullptr; } //! initalize local pseudopotential @@ -224,7 +225,8 @@ void ESolver_KS_PW::before_all_runners(UnitCell& ucell, const Input_p &this->sf, &this->ppcell, ucell); - + + assert(this->psi != nullptr); this->kspw_psi = PARAM.inp.device == "gpu" || PARAM.inp.precision == "single" ? new psi::Psi(this->psi[0]) : reinterpret_cast*>(this->psi); diff --git a/source/module_esolver/esolver_lj.h b/source/module_esolver/esolver_lj.h index 2b56e4825e..d8c5361649 100644 --- a/source/module_esolver/esolver_lj.h +++ b/source/module_esolver/esolver_lj.h @@ -49,7 +49,7 @@ namespace ModuleESolver ModuleBase::matrix lj_c6; ModuleBase::matrix en_shift; - double lj_potential; + double lj_potential=0.0; ModuleBase::matrix lj_force; ModuleBase::matrix lj_virial; //--------------------------------------------------- diff --git a/source/module_hamilt_general/module_vdw/vdwd2_parameters.h b/source/module_hamilt_general/module_vdw/vdwd2_parameters.h index 06d4a52793..2b4f2f0176 100644 --- a/source/module_hamilt_general/module_vdw/vdwd2_parameters.h +++ b/source/module_hamilt_general/module_vdw/vdwd2_parameters.h @@ -23,6 +23,9 @@ class Vdwd2Parameters : public VdwParameters { C6_ = C6_default_; R0_ = R0_default_; + damping_ = 0.0; + scaling_ = 1.0; + radius_ = 0.0; } ~Vdwd2Parameters() = default; diff --git a/source/module_hamilt_general/module_vdw/vdwd3_parameters.h b/source/module_hamilt_general/module_vdw/vdwd3_parameters.h index f671e6245e..75c5801eb3 100644 --- a/source/module_hamilt_general/module_vdw/vdwd3_parameters.h +++ b/source/module_hamilt_general/module_vdw/vdwd3_parameters.h @@ -56,13 +56,13 @@ class Vdwd3Parameters : public VdwParameters private: std::string version_; - bool abc_; // third-order term? - double rthr2_; // R^2 distance neglect threshold (important for speed in case of large systems) (a.u.) - double cn_thr2_; // R^2 distance to cutoff for CN_calculation (a.u.) - double s6_; - double rs6_; - double s18_; - double rs18_; + bool abc_=false; // third-order term? + double rthr2_=0.0; // R^2 distance neglect threshold (important for speed in case of large systems) (a.u.) + double cn_thr2_=0.0; // R^2 distance to cutoff for CN_calculation (a.u.) + double s6_=0.0; + double rs6_=0.0; + double s18_=0.0; + double rs18_=0.0; static constexpr size_t max_elem_ = 94; static constexpr double k1_ = 16.0, k2_ = 4.0 / 3.0, k3_ = -4.0; 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 82151ebd80..ffd44e7989 100644 --- a/source/module_hamilt_general/module_xc/xc_functional_libxc.cpp +++ b/source/module_hamilt_general/module_xc/xc_functional_libxc.cpp @@ -74,7 +74,7 @@ std::pair> XC_Functional_Libxc::set_xc_type_libxc(std::stri // determine the id std::vector func_id; // libxc id of functional - int pos = 0; + size_t pos = 0; std::string delimiter = "+"; std::string token; while ((pos = xc_func_in.find(delimiter)) != std::string::npos) diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/record_adj.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/record_adj.cpp index 150df06946..302972abe4 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/record_adj.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/record_adj.cpp @@ -4,7 +4,7 @@ #include "module_cell/module_neighbor/sltk_grid_driver.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" #include "module_parameter/parameter.h" -Record_adj::Record_adj() : iat2ca(nullptr) +Record_adj::Record_adj() { } Record_adj::~Record_adj() diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/record_adj.h b/source/module_hamilt_lcao/hamilt_lcaodft/record_adj.h index 441f1452f6..248f6eb611 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/record_adj.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/record_adj.h @@ -37,8 +37,8 @@ class Record_adj void delete_grid(); - int na_proc; - int* na_each; + int na_proc=0; + int* na_each=nullptr; //-------------------------------------------- // record sparse atom index in for_grid(const Grid_Technique >); @@ -53,12 +53,12 @@ class Record_adj // 1. iat2ca[iat] > 0 ? na_each[iat2ca[iat]] : 0 // 2. iat2ca[iat] > 0 ? info[iat2ca[iat]] : nullptr //-------------------------------------------- - int* iat2ca; + int* iat2ca=nullptr; //------------------------------------------------ // info will identify each atom in each unitcell. //------------------------------------------------ - int*** info; + int*** info=nullptr; private: }; diff --git a/source/module_hamilt_lcao/module_dftu/dftu_yukawa.cpp b/source/module_hamilt_lcao/module_dftu/dftu_yukawa.cpp index a2c3dd2973..7845fe9963 100644 --- a/source/module_hamilt_lcao/module_dftu/dftu_yukawa.cpp +++ b/source/module_hamilt_lcao/module_dftu/dftu_yukawa.cpp @@ -196,41 +196,53 @@ double DFTU::spherical_Bessel(const int k, const double r, const double lambda) { ModuleBase::TITLE("DFTU", "spherical_Bessel"); - double val; + double val=0.0; double x = r * lambda; if (k == 0) { - if (x < 1.0e-3) { + if (x < 1.0e-3) + { val = 1 + pow(x, 2) / 6.0; - } else { + } + else + { val = sinh(x) / x; -} + } } else if (k == 2) { - if (x < 1.0e-2) { + if (x < 1.0e-2) + { val = -pow(x, 2) / 15.0 - pow(x, 4) / 210.0 - pow(x, 6) / 7560.0; - } else { + } + else + { val = 3 * cosh(x) / pow(x, 2) + (-3 - pow(x, 2)) * sinh(x) / pow(x, 3); -} + } } else if (k == 4) { - if (x < 5.0e-1) { + if (x < 5.0e-1) + { val = pow(x, 4) / 945.0 + pow(x, 6) / 20790.0 + pow(x, 8) / 1081080.0 + pow(x, 10) / 97297200.0; - } else { + } + else + { val = -5 * (21 + 2 * pow(x, 2)) * cosh(x) / pow(x, 4) + (105 + 45 * pow(x, 2) + pow(x, 4)) * sinh(x) / pow(x, 5); -} + } } else if (k == 6) { - if (x < 9.0e-1) { + if (x < 9.0e-1) + { val = -pow(x, 6) / 135135.0 - pow(x, 8) / 4054050.0 - pow(x, 10) / 275675400.0; - } else { + } + else + { val = 21 * (495 + 60 * pow(x, 2) + pow(x, 4)) * cosh(x) / pow(x, 6) + (-10395 - 4725 * pow(x, 2) - 210 * pow(x, 4) - pow(x, 6)) * sinh(x) / pow(x, 7); -} + } } return val; } @@ -239,44 +251,56 @@ double DFTU::spherical_Hankel(const int k, const double r, const double lambda) { ModuleBase::TITLE("DFTU", "spherical_Bessel"); - double val; + double val=0.0; double x = r * lambda; if (k == 0) { - if (x < 1.0e-3) { + if (x < 1.0e-3) + { val = -1 / x + 1 - x / 2.0 + pow(x, 2) / 6.0; - } else { + } + else + { val = -exp(-x) / x; -} + } } else if (k == 2) { - if (x < 1.0e-2) { + if (x < 1.0e-2) + { val = 3 / pow(x, 3) - 1 / (2 * x) + x / 8 - pow(x, 2) / 15.0 + pow(x, 3) / 48.0; - } else { + } + else + { val = exp(-x) * (3 + 3 * x + pow(x, 2)) / pow(x, 3); -} + } } else if (k == 4) { - if (x < 5.0e-1) { + if (x < 5.0e-1) + { val = -105 / pow(x, 5) + 15 / (2 * pow(x, 3)) - 3 / (8 * x) + x / 48 - pow(x, 3) / 384.0 + pow(x, 4) / 945.0; - } else { + } + else + { val = -exp(-x) * (105 + 105 * x + 45 * pow(x, 2) + 10 * pow(x, 3) + pow(x, 4)) / pow(x, 5); -} + } } else if (k == 6) { - if (x < 9.0e-1) { + if (x < 9.0e-1) + { val = 10395 / pow(x, 7) - 945 / (2 * pow(x, 5)) + 105 / (8 * pow(x, 3)) - 5 / (16 * x) + x / 128.0 - pow(x, 3) / 3840.0 + pow(x, 5) / 46080.0 - pow(x, 6) / 135135.0; - } else { + } + else + { val = exp(-x) * (10395 + 10395 * x + 4725 * pow(x, 2) + 1260 * pow(x, 3) + 210 * pow(x, 4) + 21 * pow(x, 5) + pow(x, 6)) / pow(x, 7); -} + } } return val; } diff --git a/source/module_hamilt_lcao/module_gint/gint_tools.h b/source/module_hamilt_lcao/module_gint/gint_tools.h index 3dd69e173c..a2ea0a20c0 100644 --- a/source/module_hamilt_lcao/module_gint/gint_tools.h +++ b/source/module_hamilt_lcao/module_gint/gint_tools.h @@ -33,19 +33,19 @@ class Gint_inout { public: // input - double*** DM; - const double* vl; - const double* vofk; - bool isforce; - bool isstress; - int ispin; - int nspin_rho; // usually, but not always, equal to global nspin + double*** DM=nullptr; + const double* vl=nullptr; + const double* vofk=nullptr; + bool isforce=false; + bool isstress=false; + int ispin=0; + int nspin_rho=0; // usually, but not always, equal to global nspin bool if_symm = false; // if true, use dsymv in gint_kernel_rho; if false, use dgemv. // output - double** rho; - ModuleBase::matrix* fvl_dphi; - ModuleBase::matrix* svl_dphi; + double** rho=nullptr; + ModuleBase::matrix* fvl_dphi=nullptr; + ModuleBase::matrix* svl_dphi=nullptr; Gint_Tools::job_type job; // electron density and kin_r, multi-k diff --git a/source/module_hamilt_lcao/module_gint/grid_bigcell.h b/source/module_hamilt_lcao/module_gint/grid_bigcell.h index 87960e7e18..10f52a7419 100644 --- a/source/module_hamilt_lcao/module_gint/grid_bigcell.h +++ b/source/module_hamilt_lcao/module_gint/grid_bigcell.h @@ -12,7 +12,7 @@ class Grid_BigCell: public Grid_MeshCell Grid_BigCell(); ~Grid_BigCell(); // number atoms and type. - int nat; + int nat=0; // save the relative cartesian position // to bigcell of each atom. std::vector> tau_in_bigcell; diff --git a/source/module_hamilt_lcao/module_gint/grid_technique.h b/source/module_hamilt_lcao/module_gint/grid_technique.h index 55ff74e151..6c3c26aba9 100644 --- a/source/module_hamilt_lcao/module_gint/grid_technique.h +++ b/source/module_hamilt_lcao/module_gint/grid_technique.h @@ -29,9 +29,9 @@ class Grid_Technique : public Grid_MeshBall { // record how many atoms on each grid. std::vector how_many_atoms; // max atom on grid - int max_atom; + int max_atom=0; // sum of how_many_atoms - int total_atoms_on_grid; + int total_atoms_on_grid=0; std::vector start_ind; //------------------------------------ @@ -54,8 +54,8 @@ class Grid_Technique : public Grid_MeshBall { //------------------------------------ // 3: which atom on local grid. //------------------------------------ - int lnat; // local nat. - int lgd; // local grid dimension. lgd * lgd symmetry matrix. + int lnat=0; // local nat. + int lgd=0; // local grid dimension. lgd * lgd symmetry matrix. std::vector in_this_processor; std::vector trace_iat; std::vector trace_lo; // trace local orbital. @@ -68,23 +68,23 @@ class Grid_Technique : public Grid_MeshBall { int nnrg = 0; // UnitCell and LCAO_Obrbitals - const UnitCell* ucell; - const LCAO_Orbitals* orb; + const UnitCell* ucell=nullptr; + const LCAO_Orbitals* orb=nullptr; // UnitCell parameters - int nwmax; - int nr_max; - int ntype; + int nwmax=0; + int nr_max=0; + int ntype=0; // LCAO Orbitals - double dr_uniform; + double dr_uniform={0.0}; std::vector rcuts; std::vector> psi_u; std::vector> dpsi_u; std::vector> d2psi_u; // Determine whether the grid point integration is initialized. - bool init_malloced; + bool init_malloced=false; bool get_init_malloced() const { return init_malloced; } diff --git a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/meta_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/meta_pw.cpp index 1046a90c9a..b0372109dc 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/meta_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/meta_pw.cpp @@ -15,6 +15,10 @@ Meta>::Meta(Real tpiba_in, const int vk_col, const ModulePW::PW_Basis_K* wfcpw_in) { + if(isk_in == nullptr || tpiba_in < 1e-10 || wfcpw_in == nullptr) + { + ModuleBase::WARNING_QUIT("MetaPW", "Constuctor of Operator::MetaPW is failed, please check your code!"); + } this->classname = "Meta"; this->cal_type = calculation_type::pw_meta; this->isk = isk_in; @@ -24,10 +28,7 @@ Meta>::Meta(Real tpiba_in, this->vk_col = vk_col; this->wfcpw = wfcpw_in; resmem_complex_op()(this->ctx, this->porter, this->wfcpw->nmaxgr, "Meta::porter"); - if(this->isk == nullptr || this->tpiba < 1e-10 || this->wfcpw == nullptr) - { - ModuleBase::WARNING_QUIT("MetaPW", "Constuctor of Operator::MetaPW is failed, please check your code!"); - } + } template diff --git a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/nonlocal_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/nonlocal_pw.cpp index b8d9a3f086..563e9d23a0 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/nonlocal_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/nonlocal_pw.cpp @@ -17,6 +17,10 @@ Nonlocal>::Nonlocal(const int* isk_in, const UnitCell* ucell_in, const ModulePW::PW_Basis_K* wfc_basis) { + if( isk_in == nullptr || ppcell_in == nullptr || ucell_in == nullptr) + { + ModuleBase::WARNING_QUIT("NonlocalPW", "Constuctor of Operator::NonlocalPW is failed, please check your code!"); + } this->classname = "Nonlocal"; this->cal_type = calculation_type::pw_nonlocal; this->wfcpw = wfc_basis; @@ -26,10 +30,7 @@ Nonlocal>::Nonlocal(const int* isk_in, this->deeq = this->ppcell->template get_deeq_data(); this->deeq_nc = this->ppcell->template get_deeq_nc_data(); this->vkb = this->ppcell->template get_vkb_data(); - if( this->isk == nullptr || this->ppcell == nullptr || this->ucell == nullptr) - { - ModuleBase::WARNING_QUIT("NonlocalPW", "Constuctor of Operator::NonlocalPW is failed, please check your code!"); - } + } template diff --git a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/veff_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/veff_pw.cpp index 63ead6d57f..2343ee7ecb 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/veff_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/veff_pw.cpp @@ -12,6 +12,9 @@ Veff>::Veff(const int* isk_in, const int veff_col, const ModulePW::PW_Basis_K* wfcpw_in) { + if (isk_in == nullptr || wfcpw_in == nullptr) { + ModuleBase::WARNING_QUIT("VeffPW", "Constuctor of Operator::VeffPW is failed, please check your code!"); + } this->classname = "Veff"; this->cal_type = calculation_type::pw_veff; this->isk = isk_in; @@ -22,9 +25,7 @@ Veff>::Veff(const int* isk_in, this->wfcpw = wfcpw_in; resmem_complex_op()(this->ctx, this->porter, this->wfcpw->nmaxgr, "Veff::porter"); resmem_complex_op()(this->ctx, this->porter1, this->wfcpw->nmaxgr, "Veff::porter1"); - if (this->isk == nullptr || this->wfcpw == nullptr) { - ModuleBase::WARNING_QUIT("VeffPW", "Constuctor of Operator::VeffPW is failed, please check your code!"); - } + } template diff --git a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.cpp index 858e6b3fd5..412534df6a 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.cpp @@ -13,15 +13,15 @@ Velocity::Velocity const bool nonlocal_in ) { + if( wfcpw_in == nullptr || isk_in == nullptr || ppcell_in == nullptr || ucell_in == nullptr) + { + ModuleBase::WARNING_QUIT("Velocity", "Constuctor of Operator::Velocity is failed, please check your code!"); + } this->wfcpw = wfcpw_in; this->isk = isk_in; this->ppcell = ppcell_in; this->ucell = ucell_in; this->nonlocal = nonlocal_in; - if( this->wfcpw == nullptr || this->isk == nullptr || this->ppcell == nullptr || this->ucell == nullptr) - { - ModuleBase::WARNING_QUIT("Velocity", "Constuctor of Operator::Velocity is failed, please check your code!"); - } this->tpiba = ucell_in -> tpiba; if(this->nonlocal) this->ppcell->initgradq_vnl(*this->ucell); } diff --git a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.h b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.h index f423221cc2..a6752065b0 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.h +++ b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.h @@ -50,9 +50,9 @@ class Velocity const UnitCell* ucell = nullptr; - int ik; + int ik=0; - double tpiba; + double tpiba=0.0; }; } #endif \ No newline at end of file diff --git a/source/module_hamilt_pw/hamilt_pwdft/parallel_grid.h b/source/module_hamilt_pw/hamilt_pwdft/parallel_grid.h index f6e4811c03..1da46fa394 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/parallel_grid.h +++ b/source/module_hamilt_pw/hamilt_pwdft/parallel_grid.h @@ -49,15 +49,15 @@ class Parallel_Grid int **startz = nullptr; int **whichpro = nullptr; - int ncx; - int ncy; - int ncz; - int ncxy; - int ncxyz; - int nczp; // number of z-layers (xy-planes) in each processor - int nrxx; - int nbz; - int bz; + int ncx=0; + int ncy=0; + int ncz=0; + int ncxy=0; + int ncxyz=0; + int nczp=0; // number of z-layers (xy-planes) in each processor + int nrxx=0; + int nbz=0; + int bz=0; bool allocate = false; bool allocate_final_scf = false; //LiuXh add 20180619 diff --git a/source/module_hamilt_pw/hamilt_pwdft/structure_factor.h b/source/module_hamilt_pw/hamilt_pwdft/structure_factor.h index b77a69adb5..2f3e1931c8 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/structure_factor.h +++ b/source/module_hamilt_pw/hamilt_pwdft/structure_factor.h @@ -19,7 +19,7 @@ class Structure_Factor // Part 4: G vectors in reciprocal FFT box //=============================================== public: - int nbspline; + int nbspline=0; // structure factor (ntype, ngmc) ModuleBase::ComplexMatrix strucFac; @@ -59,7 +59,7 @@ class Structure_Factor ModuleBase::Vector3 q); private: - const UnitCell* ucell; + const UnitCell* ucell=nullptr; std::complex * c_eigts1 = nullptr, * c_eigts2 = nullptr, * c_eigts3 = nullptr; std::complex * z_eigts1 = nullptr, * z_eigts2 = nullptr, * z_eigts3 = nullptr; const ModulePW::PW_Basis* rho_basis = nullptr; diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_func.cpp b/source/module_hamilt_pw/hamilt_stodft/sto_func.cpp index 581e5ab7ef..f4f60b8555 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_func.cpp +++ b/source/module_hamilt_pw/hamilt_stodft/sto_func.cpp @@ -7,6 +7,10 @@ template Sto_Func::Sto_Func() { this->tem = Occupy::gaussian_parameter; + this->mu = static_cast(0.0); + this->t = static_cast(0.0); + this->sigma = static_cast(0.0); + this->targ_e = static_cast(0.0); } template @@ -20,11 +24,12 @@ template REAL Sto_Func::root_fd(REAL e) { REAL e_mu = (e - mu) / this->tem; - if (e_mu > 72) + if (e_mu > 72) { return 0; - else + } else { return 1 / sqrt(1 + exp(e_mu)); } +} template REAL Sto_Func::nroot_fd(REAL e) @@ -32,21 +37,23 @@ REAL Sto_Func::nroot_fd(REAL e) REAL Ebar = (*Emin + *Emax) / 2; REAL DeltaE = (*Emax - *Emin) / 2; REAL ne_mu = (e * DeltaE + Ebar - mu) / this->tem; - if (ne_mu > 72) + if (ne_mu > 72) { return 0; - else + } else { return 1 / sqrt(1 + exp(ne_mu)); } +} template REAL Sto_Func::fd(REAL e) { REAL e_mu = (e - mu) / this->tem; - if (e_mu > 36) + if (e_mu > 36) { return 0; - else + } else { return 1 / (1 + exp(e_mu)); } +} template REAL Sto_Func::nfd(REAL e) @@ -54,11 +61,12 @@ REAL Sto_Func::nfd(REAL e) REAL Ebar = (*Emin + *Emax) / 2; REAL DeltaE = (*Emax - *Emin) / 2; REAL ne_mu = (e * DeltaE + Ebar - mu) / this->tem; - if (ne_mu > 36) + if (ne_mu > 36) { return 0; - else + } else { return 1 / (1 + exp(ne_mu)); } +} template REAL Sto_Func::nxfd(REAL rawe) @@ -67,27 +75,29 @@ REAL Sto_Func::nxfd(REAL rawe) REAL DeltaE = (*Emax - *Emin) / 2; REAL e = rawe * DeltaE + Ebar; REAL ne_mu = (e - mu) / this->tem; - if (ne_mu > 36) + if (ne_mu > 36) { return 0; - else + } else { return e / (1 + exp(ne_mu)); } +} template REAL Sto_Func::fdlnfd(REAL e) { REAL e_mu = (e - mu) / this->tem; - if (e_mu > 36) + if (e_mu > 36) { return 0; - else if (e_mu < -36) + } else if (e_mu < -36) { return 0; - else + } else { REAL f = 1 / (1 + exp(e_mu)); - if (f == 0 || f == 1) + if (f == 0 || f == 1) { return 0; - else + } else { return (f * log(f) + (1.0 - f) * log(1.0 - f)); +} } } @@ -97,17 +107,18 @@ REAL Sto_Func::nfdlnfd(REAL rawe) REAL Ebar = (*Emin + *Emax) / 2; REAL DeltaE = (*Emax - *Emin) / 2; REAL ne_mu = (rawe * DeltaE + Ebar - mu) / this->tem; - if (ne_mu > 36) + if (ne_mu > 36) { return 0; - else if (ne_mu < -36) + } else if (ne_mu < -36) { return 0; - else + } else { REAL f = 1 / (1 + exp(ne_mu)); - if (f == 0 || f == 1) + if (f == 0 || f == 1) { return 0; - else + } else { return f * log(f) + (1 - f) * log(1 - f); +} } } @@ -117,17 +128,18 @@ REAL Sto_Func::n_root_fdlnfd(REAL rawe) REAL Ebar = (*Emin + *Emax) / 2; REAL DeltaE = (*Emax - *Emin) / 2; REAL ne_mu = (rawe * DeltaE + Ebar - mu) / this->tem; - if (ne_mu > 36) + if (ne_mu > 36) { return 0; - else if (ne_mu < -36) + } else if (ne_mu < -36) { return 0; - else + } else { REAL f = 1 / (1 + exp(ne_mu)); - if (f == 0 || f == 1) + if (f == 0 || f == 1) { return 0; - else + } else { return sqrt(-f * log(f) - (1 - f) * log(1 - f)); +} } } @@ -137,11 +149,12 @@ REAL Sto_Func::nroot_mfd(REAL rawe) REAL Ebar = (*Emin + *Emax) / 2; REAL DeltaE = (*Emax - *Emin) / 2; REAL ne_mu = (rawe * DeltaE + Ebar - mu) / this->tem; - if (ne_mu < -72) + if (ne_mu < -72) { return 0; - else + } else { return 1 / sqrt(1 + exp(-ne_mu)); } +} template REAL Sto_Func::ncos(REAL rawe) @@ -174,11 +187,12 @@ template REAL Sto_Func::gauss(REAL e) { REAL a = pow((targ_e - e), 2) / 2.0 / pow(sigma, 2); - if (a > 72) + if (a > 72) { return 0; - else + } else { return exp(-a) / sqrt(TWOPI) / sigma; } +} template REAL Sto_Func::ngauss(REAL rawe) @@ -187,11 +201,12 @@ REAL Sto_Func::ngauss(REAL rawe) REAL DeltaE = (*Emax - *Emin) / 2; REAL e = rawe * DeltaE + Ebar; REAL a = pow((targ_e - e), 2) / 2.0 / pow(sigma, 2); - if (a > 72) + if (a > 72) { return 0; - else + } else { return exp(-a) / sqrt(TWOPI) / sigma; } +} template REAL Sto_Func::nroot_gauss(REAL rawe) @@ -200,11 +215,12 @@ REAL Sto_Func::nroot_gauss(REAL rawe) REAL DeltaE = (*Emax - *Emin) / 2; REAL e = rawe * DeltaE + Ebar; REAL a = pow((targ_e - e), 2) / 4.0 / pow(sigma, 2); - if (a > 72) + if (a > 72) { return 0; - else + } else { return exp(-a) / sqrt(sqrt(TWOPI) * sigma); } +} // we only have two examples: double and float. template class Sto_Func; diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_iter.h b/source/module_hamilt_pw/hamilt_stodft/sto_iter.h index 76cff4a0d9..901b1311f3 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_iter.h +++ b/source/module_hamilt_pw/hamilt_stodft/sto_iter.h @@ -121,15 +121,15 @@ class Stochastic_Iter double mu0; // chemical potential; unit in Ry bool change; - double targetne; + double targetne=0.0; Real* spolyv = nullptr; //[Device] coefficients of Chebyshev expansion Real* spolyv_cpu = nullptr; //[CPU] coefficients of Chebyshev expansion public: int* nchip = nullptr; bool check = false; - double th_ne; - double KS_ne; + double th_ne=0.0; + double KS_ne=0.0; public: int method; // different methods 1: slow, less memory 2: fast, more memory @@ -141,7 +141,7 @@ class Stochastic_Iter void calTnchi_ik(const int& ik, Stochastic_WF& stowf); private: - K_Vectors* pkv; + K_Vectors* pkv=nullptr; /** * @brief return cpu dot result * @param x [Device] diff --git a/source/module_hsolver/genelpa/elpa_new.cpp b/source/module_hsolver/genelpa/elpa_new.cpp index bcbf6e1ea6..c9475d2bdf 100644 --- a/source/module_hsolver/genelpa/elpa_new.cpp +++ b/source/module_hsolver/genelpa/elpa_new.cpp @@ -33,6 +33,10 @@ ELPA_Solver::ELPA_Solver(const bool isReal, this->nev = nev; this->narows = narows; this->nacols = nacols; + this->method = 0; + this->comm_f = 0; + this->mpi_comm_cols = 0; + this->mpi_comm_rows = 0; for (int i = 0; i < 9; ++i) this->desc[i] = desc[i]; cblacs_ctxt = desc[1]; @@ -111,6 +115,10 @@ ELPA_Solver::ELPA_Solver(const bool isReal, this->nev = nev; this->narows = narows; this->nacols = nacols; + this->method = 0; + this->comm_f = 0; + this->mpi_comm_cols = 0; + this->mpi_comm_rows = 0; for (int i = 0; i < 9; ++i) this->desc[i] = desc[i]; diff --git a/source/module_hsolver/module_pexsi/dist_ccs_matrix.h b/source/module_hsolver/module_pexsi/dist_ccs_matrix.h index a63a0dc16c..86bfddb966 100644 --- a/source/module_hsolver/module_pexsi/dist_ccs_matrix.h +++ b/source/module_hsolver/module_pexsi/dist_ccs_matrix.h @@ -65,8 +65,8 @@ class DistCCSMatrix MPI_Group group; // total number of processes and the processes with data in - int nprocs; - int nproc_data; + int nprocs = 0; + int nproc_data =0; MPI_Group group_data; MPI_Comm comm_data; @@ -83,7 +83,7 @@ class DistCCSMatrix int numColLocal; // the first column index in current process - int firstCol; + int firstCol=0; // Array stores the indices to the nonzero row indices in rowptrLocal and nzvalLocal int* colptrLocal; diff --git a/source/module_io/berryphase.h b/source/module_io/berryphase.h index 38029880f7..8c1285e37d 100644 --- a/source/module_io/berryphase.h +++ b/source/module_io/berryphase.h @@ -28,11 +28,11 @@ class berryphase const Parallel_Orbitals* paraV; #endif - int total_string; + int total_string=0; std::vector> k_index; - int nppstr; - int direction; - int occ_nbands; + int nppstr=0; + int direction=0; + int occ_nbands=0; int GDIR; void get_occupation_bands(); diff --git a/source/module_io/bessel_basis.h b/source/module_io/bessel_basis.h index 29207756c9..cf4c609b6e 100644 --- a/source/module_io/bessel_basis.h +++ b/source/module_io/bessel_basis.h @@ -71,24 +71,24 @@ class Bessel_Basis /// @brief get energy cutoff, which is used to truncate SBF Jlq. /// @param /// @return energy cutoff in Ry - const double &get_ecut(void) const {return ecut;} + const double &get_ecut() const {return ecut;} /// @brief cutoff radius of radial SBF Jlq. /// @param /// @return cutoff radius in a.u. - const double &get_rcut(void) const {return rcut;} + const double &get_rcut() const {return rcut;} - const double &get_tolerence(void) const {return tolerence;} + const double &get_tolerence() const {return tolerence;} /// @brief check if SBFs are smoothed (mohan add 2009-08-28) /// @attention in this case, the Jlq are not the true Jlq. /// @param /// @return boolean whether SBFs are smoothed - const bool &get_smooth(void) const {return smooth;} + const bool &get_smooth() const {return smooth;} /// @brief get sigma the stddev (standard deviation) used in smooth function (Gaussian function) /// @param /// @return stddev of smooth function - const double &get_sigma(void) const {return sigma;} + const double &get_sigma() const {return sigma;} private: /// @brief the most important array to calculate spillage, has dimension (ntype, lmax+1, max_n, nk) @@ -101,20 +101,20 @@ class Bessel_Basis ModuleBase::realArray TableOne; /// @brief mesh of k vector, k is in j_l(k*r) - int kmesh; + int kmesh=0; /// @brief grid of k double Dk; /// @brief number of q vector, q is in j_l(q*r) int Ecut_number; /// @brief Cutoff radius (in a.u.) of SBFs, for any SBF j_l(qr), r>=rcut, j_l(q*r) = 0 (if not smoothed) - double rcut; + double rcut=0.0; /// @brief energy cutoff for determining kmesh and number of SBFs - double ecut; - double tolerence; + double ecut=0.0; + double tolerence=0.0; /// @brief whether smooth SBFs around cutoff radius, resulting in non-zero values. For importance of smooth of SBFs, see J. Phys.: Condens. Matter 22 (2010) 445501, eqn 6. (mohan add 2009-01-18) - bool smooth; + bool smooth=false; /// @brief stddev of smooth function (Gaussian function, centered at rcut) - double sigma; + double sigma=0.0; /// @brief Allocate memory for C4 matrix and initialize all elements to one. /// @param ntype number of atom types @@ -146,7 +146,7 @@ class Bessel_Basis const UnitCell& ucell ); - void init_TableOne(void); + void init_TableOne(); /// @brief calculate F_{aln}(it, il, in, ik) = sum_{ie}{C4(it, il, in, ie)*TableOne(il, ie, ik)}, where TableOne is overlap integral between two spherical bessel functions (jle(r) and jlk(r)) /// @param ntype number of atomtype @@ -162,7 +162,7 @@ class Bessel_Basis ); /// @brief number of localized wave functions - int nwfc; + int nwfc=0; /// @brief calculate element value of TableOne matrix /// @details (be called in Bessel_Basis::init(), used for outputing overlap Q matrix) initialize the table whose matrix element is the result of integral int{dr r^2 jle(r)*jlk(r)}, TableOne has three subscript (l, ie, ik), the first runs over orbitals' angular momentum and ie, ik run over ecut_number and kmesh SBFs diff --git a/source/module_io/get_pchg_lcao.h b/source/module_io/get_pchg_lcao.h index 208c3f027c..99b4a38d7a 100644 --- a/source/module_io/get_pchg_lcao.h +++ b/source/module_io/get_pchg_lcao.h @@ -141,8 +141,8 @@ class IState_Charge #endif std::vector bands_picked_; - psi::Psi* psi_gamma; - psi::Psi>* psi_k; + psi::Psi* psi_gamma=nullptr; + psi::Psi>* psi_k=nullptr; const Parallel_Orbitals* ParaV; }; #endif diff --git a/source/module_io/input_conv.h b/source/module_io/input_conv.h index d4a9bf4f71..a756cc5499 100644 --- a/source/module_io/input_conv.h +++ b/source/module_io/input_conv.h @@ -101,7 +101,7 @@ void parse_expression(const std::string& fn, std::vector& vec) const size_t sub_nmatch = 1; if (regexec(&sub_reg, sub_str.c_str(), sub_nmatch, sub_pmatch, 0) == 0) { - int pos = sub_str.find("*"); + size_t pos = sub_str.find("*"); int num = stoi(sub_str.substr(0, pos)); T occ = stof(sub_str.substr(pos + 1, sub_str.size())); // std::vector ocp_temp(num, occ); diff --git a/source/module_io/json_output/json_node.h b/source/module_io/json_output/json_node.h index 3ac988e95f..f19bddcf78 100644 --- a/source/module_io/json_output/json_node.h +++ b/source/module_io/json_output/json_node.h @@ -12,7 +12,7 @@ namespace Json template jsonKeyNode(const char (&s)[N]): key(s) {}; - int i; + int i=0; std::string key; }; diff --git a/source/module_io/numerical_descriptor.cpp b/source/module_io/numerical_descriptor.cpp index aa879d40af..16236c63ea 100644 --- a/source/module_io/numerical_descriptor.cpp +++ b/source/module_io/numerical_descriptor.cpp @@ -13,6 +13,8 @@ Numerical_Descriptor::Numerical_Descriptor() this->init_label = false; this->lmax = -1; this->nmax = -1; + this->nlocal = 0; + this->mu_index = nullptr; } Numerical_Descriptor::~Numerical_Descriptor() diff --git a/source/module_io/to_wannier90.h b/source/module_io/to_wannier90.h index a004dfada6..4d93bcb2f9 100644 --- a/source/module_io/to_wannier90.h +++ b/source/module_io/to_wannier90.h @@ -48,15 +48,15 @@ class toWannier90 bool try_read_nnkp(const UnitCell& ucell, const K_Vectors& kv); // Parameters related to k point - int num_kpts; - int cal_num_kpts; + int num_kpts=0; + int cal_num_kpts=0; std::vector> nnlist; std::vector>> nncell; int nntot = 0; int start_k_index = 0; // Parameters related to trial orbitals - int num_wannier; // Number of Wannier orbits + int num_wannier=0; // Number of Wannier orbits ModuleBase::Vector3 *R_centre = nullptr; int *L = nullptr; int *m = nullptr; diff --git a/source/module_io/unk_overlap_lcao.h b/source/module_io/unk_overlap_lcao.h index c598a6b2a4..241ac3d775 100644 --- a/source/module_io/unk_overlap_lcao.h +++ b/source/module_io/unk_overlap_lcao.h @@ -29,9 +29,9 @@ class unkOverlap_lcao std::vector>> psi_psi; std::vector>>> psi_r_psi; bool allocate_flag; // translate: Used to initialize the array - int** cal_tag; // Used for parallel scheme + int** cal_tag=nullptr; // Used for parallel scheme - int kpoints_number; + int kpoints_number=0; std::vector rcut_orb_; // real space cutoffs of LCAO orbitals' radial functions diff --git a/source/module_md/fire.cpp b/source/module_md/fire.cpp index 98f294db19..bba8b3a150 100644 --- a/source/module_md/fire.cpp +++ b/source/module_md/fire.cpp @@ -18,6 +18,8 @@ FIRE::FIRE(const Parameter& param_in, UnitCell& unit_in) : MD_base(param_in, uni f_alpha = 0.99; n_min = 4; negative_count = 0; + max = 0.0; + force_thr = 1e-3; } FIRE::~FIRE() diff --git a/source/module_md/fire.h b/source/module_md/fire.h index 2528e44b20..d586f6399f 100644 --- a/source/module_md/fire.h +++ b/source/module_md/fire.h @@ -50,7 +50,7 @@ class FIRE : public MD_base int n_min; ///< n_min double dt_max; ///< dt_max int negative_count; ///< Negative count - double force_thr = 1.0e-3; ///< force convergence threshold in FIRE method + double force_thr; ///< force convergence threshold in FIRE method }; #endif diff --git a/source/module_md/md_base.h b/source/module_md/md_base.h index ca6eb0dcf7..c48afe10cc 100644 --- a/source/module_md/md_base.h +++ b/source/module_md/md_base.h @@ -82,13 +82,13 @@ class MD_base ModuleBase::Vector3* force; ///< force of each atom ModuleBase::matrix virial; ///< virial for this lattice ModuleBase::matrix stress; ///< stress for this lattice - double potential; ///< potential energy + double potential=0.0; ///< potential energy double kinetic; ///< kinetic energy protected: const MD_para& mdp; ///< input parameters used in md - UnitCell& ucell; ///< unitcell information - double energy_; ///< total energy of the system + UnitCell& ucell; ///< unitcell information + double energy_=0.0; ///< total energy of the system bool cal_stress; ///< whether calculate stress int my_rank; ///< MPI rank of the processor diff --git a/source/module_md/msst.cpp b/source/module_md/msst.cpp index faa9eada19..3ff8c7c6f9 100644 --- a/source/module_md/msst.cpp +++ b/source/module_md/msst.cpp @@ -22,7 +22,9 @@ MSST::MSST(const Parameter& param_in, UnitCell& unit_in) : MD_base(param_in, uni e0 = 0; v0 = 1; totmass = 0; - + lag_pos = 0; + vsum = 0; + for (int i = 0; i < ucell.nat; ++i) { totmass += allmass[i]; diff --git a/source/module_md/nhchain.h b/source/module_md/nhchain.h index b804d8784b..bdbcf08b2a 100644 --- a/source/module_md/nhchain.h +++ b/source/module_md/nhchain.h @@ -71,33 +71,33 @@ class Nose_Hoover : public MD_base const static int nys = 7; ///< the number of scale evolution operator double w[nys]; ///< scale evolution operator - int tdof; ///< particle degree of freedom - double t_target; ///< target temperature - double* mass_eta; ///< mass of thermostats coupled with particles - double* eta; ///< position of thermostats coupled with particles - double* v_eta; ///< velocity of thermostats coupled with particles - double* g_eta; ///< acceleration of thermostats coupled with particles + int tdof; ///< particle degree of freedom + double t_target=0.0;///< target temperature + double* mass_eta; ///< mass of thermostats coupled with particles + double* eta; ///< position of thermostats coupled with particles + double* v_eta; ///< velocity of thermostats coupled with particles + double* g_eta; ///< acceleration of thermostats coupled with particles - int npt_flag; ///< whether NPT ensemble - double mass_omega[6]; ///< mass of lattice component - double v_omega[6]; ///< velocity of lattice component - double pstart[6]; ///< initial stress components - double pstop[6]; ///< final stress components - double pfreq[6]; ///< Oscillation frequency, used to determine qmass of thermostats coupled with barostat - int pflag[6]; ///< control stress components - int pdim; ///< pdim = pflag[0] + pflag[1] + pflag[2], number of barostatted dims - double p_target[6]; ///< target stress components - double p_hydro; ///< target hydrostatic target pressure - double p_current[6]; ///< current stress after coupled - double* mass_peta; ///< mass of thermostats coupled with barostat - double* peta; ///< position of thermostats coupled with barostat - double* v_peta; ///< velocity of thermostats coupled with barostat - double* g_peta; ///< acceleration of thermostats coupled with barostat - double mtk_term; ///< mtk correction - double md_tfreq; ///< Oscillation frequency, used to determine qmass of thermostats coupled with particles - double md_pfirst; ///< Initial pressure - double md_plast; ///< Final pressure - double md_pfreq; ///< Oscillation frequency, used to determine qmass of thermostats coupled with barostat + int npt_flag; ///< whether NPT ensemble + double mass_omega[6]; ///< mass of lattice component + double v_omega[6]; ///< velocity of lattice component + double pstart[6]; ///< initial stress components + double pstop[6]; ///< final stress components + double pfreq[6]; ///< Oscillation frequency, used to determine qmass of thermostats coupled with barostat + int pflag[6]; ///< control stress components + int pdim; ///< pdim = pflag[0] + pflag[1] + pflag[2], number of barostatted dims + double p_target[6]; ///< target stress components + double p_hydro = 0.0; ///< target hydrostatic target pressure + double p_current[6] = {0.0}; ///< current stress after coupled + double* mass_peta; ///< mass of thermostats coupled with barostat + double* peta; ///< position of thermostats coupled with barostat + double* v_peta; ///< velocity of thermostats coupled with barostat + double* g_peta; ///< acceleration of thermostats coupled with barostat + double mtk_term=0; ///< mtk correction + double md_tfreq; ///< Oscillation frequency, used to determine qmass of thermostats coupled with particles + double md_pfirst; ///< Initial pressure + double md_plast; ///< Final pressure + double md_pfreq; ///< Oscillation frequency, used to determine qmass of thermostats coupled with barostat }; #endif \ No newline at end of file diff --git a/source/module_relax/relax_old/bfgs_basic.h b/source/module_relax/relax_old/bfgs_basic.h index 52227e7509..2e0a130a37 100644 --- a/source/module_relax/relax_old/bfgs_basic.h +++ b/source/module_relax/relax_old/bfgs_basic.h @@ -39,15 +39,15 @@ class BFGS_Basic static double relax_bfgs_w2; // fixed: parameters for Wolfe conditions. protected: - bool save_flag; - bool tr_min_hit; //.TRUE. if the trust_radius has already been set + bool save_flag=false; + bool tr_min_hit=false; //.TRUE. if the trust_radius has already been set // to the minimum value at the previous step // mohan add 2010-07-27 double check_move(const double& lat0, const double& pos, const double& pos_p); private: - bool wolfe_flag; + bool wolfe_flag=false; ModuleBase::matrix inv_hess; int bfgs_ndim; diff --git a/source/module_relax/relax_old/ions_move_cg.h b/source/module_relax/relax_old/ions_move_cg.h index cf61e5c2dc..59ed3b63c1 100644 --- a/source/module_relax/relax_old/ions_move_cg.h +++ b/source/module_relax/relax_old/ions_move_cg.h @@ -13,15 +13,15 @@ class Ions_Move_CG void start(UnitCell &ucell, const ModuleBase::matrix &force, const double &etot); static double RELAX_CG_THR; - int sd_step; - int cg_step; + int sd_step=0; + int cg_step=0; private: double *pos0; double *grad0; double *cg_grad0; double *move0; - double e0; + double e0=0.0; // setup gradients. void setup_cg_grad(double *grad, const double *grad0, diff --git a/source/module_relax/relax_old/lattice_change_cg.h b/source/module_relax/relax_old/lattice_change_cg.h index 74a78af080..bbaa012919 100644 --- a/source/module_relax/relax_old/lattice_change_cg.h +++ b/source/module_relax/relax_old/lattice_change_cg.h @@ -18,7 +18,7 @@ class Lattice_Change_CG double *grad0; double *cg_grad0; double *move0; - double e0; + double e0=0.0; // setup gradients. void setup_cg_grad(double *grad, From cd48c629f175b23743914260f0dc90bf027de182 Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Wed, 1 Jan 2025 09:52:30 +0800 Subject: [PATCH 28/44] Feature: binary format of backup charge density (#5782) * Feature: binary format of backup charge density * Tests: update tests * move backup charge density output to esolver_fp --- docs/advanced/input_files/input-main.md | 6 +- source/module_esolver/esolver_fp.cpp | 65 +++++++++++++++------ source/module_esolver/esolver_fp.h | 3 + source/module_esolver/esolver_ks.cpp | 43 +------------- source/module_esolver/esolver_ks.h | 1 - source/module_esolver/esolver_ks_pw.cpp | 6 +- source/module_esolver/esolver_of.cpp | 2 + source/module_io/read_input_item_output.cpp | 10 +++- source/module_io/test/read_input_ptest.cpp | 2 +- source/module_parameter/input_parameter.h | 3 +- 10 files changed, 67 insertions(+), 74 deletions(-) diff --git a/docs/advanced/input_files/input-main.md b/docs/advanced/input_files/input-main.md index 1e1cfc3ba3..7eb1b382a0 100644 --- a/docs/advanced/input_files/input-main.md +++ b/docs/advanced/input_files/input-main.md @@ -1561,10 +1561,8 @@ These variables are used to control the output of properties. ### out_freq_elec - **Type**: Integer -- **Description**: The output frequency of the charge density (controlled by [out_chg](#out_chg)), wavefunction (controlled by [out_wfc_pw](#out_wfc_pw) or [out_wfc_r](#out_wfc_r)), and density matrix of localized orbitals (controlled by [out_dm](#out_dm)). - - \>0: Output them every `out_freq_elec` iteration numbers in electronic iterations. - - 0: Output them when the electronic iteration is converged or reaches the maximal iteration number. -- **Default**: 0 +- **Description**: Output the charge density (only binary format, controlled by [out_chg](#out_chg)), wavefunction (controlled by [out_wfc_pw](#out_wfc_pw) or [out_wfc_r](#out_wfc_r)) per `out_freq_elec` electronic iterations. Note that they are always output when converged or reach the maximum iterations [scf_nmax](#scf_nmax). +- **Default**: [scf_nmax](#scf_nmax) ### out_chg diff --git a/source/module_esolver/esolver_fp.cpp b/source/module_esolver/esolver_fp.cpp index 4d057a2576..8dbf5ee254 100644 --- a/source/module_esolver/esolver_fp.cpp +++ b/source/module_esolver/esolver_fp.cpp @@ -183,24 +183,6 @@ void ESolver_FP::after_scf(UnitCell& ucell, const int istep) } } } - if (PARAM.inp.out_chg[0] != -1) - { - std::complex** rhog_tot = (PARAM.inp.dm_to_rho)? this->pelec->charge->rhog : this->pelec->charge->rhog_save; - double** rhor_tot = (PARAM.inp.dm_to_rho)? this->pelec->charge->rho : this->pelec->charge->rho_save; - for (int is = 0; is < PARAM.inp.nspin; is++) - { - this->pw_rhod->real2recip(rhor_tot[is], rhog_tot[is]); - } - ModuleIO::write_rhog(PARAM.globalv.global_out_dir + PARAM.inp.suffix + "-CHARGE-DENSITY.restart", - PARAM.globalv.gamma_only_pw || PARAM.globalv.gamma_only_local, - this->pw_rhod, - PARAM.inp.nspin, - ucell.GT, - rhog_tot, - GlobalV::MY_POOL, - GlobalV::RANK_IN_POOL, - GlobalV::NPROC_IN_POOL); - } // 4) write potential if (PARAM.inp.out_pot == 1 || PARAM.inp.out_pot == 3) @@ -304,4 +286,51 @@ void ESolver_FP::before_scf(UnitCell& ucell, const int istep) return; } +void ESolver_FP::iter_finish(UnitCell& ucell, const int istep, int& iter) +{ + //! output charge density + if (PARAM.inp.out_chg[0] != -1) + { + if (iter % PARAM.inp.out_freq_elec == 0 || iter == PARAM.inp.scf_nmax || this->conv_esolver) + { + std::complex** rhog_tot + = (PARAM.inp.dm_to_rho) ? this->pelec->charge->rhog : this->pelec->charge->rhog_save; + double** rhor_tot = (PARAM.inp.dm_to_rho) ? this->pelec->charge->rho : this->pelec->charge->rho_save; + for (int is = 0; is < PARAM.inp.nspin; is++) + { + this->pw_rhod->real2recip(rhor_tot[is], rhog_tot[is]); + } + ModuleIO::write_rhog(PARAM.globalv.global_out_dir + PARAM.inp.suffix + "-CHARGE-DENSITY.restart", + PARAM.globalv.gamma_only_pw || PARAM.globalv.gamma_only_local, + this->pw_rhod, + PARAM.inp.nspin, + ucell.GT, + rhog_tot, + GlobalV::MY_POOL, + GlobalV::RANK_IN_POOL, + GlobalV::NPROC_IN_POOL); + + if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) + { + std::vector> kin_g_space(PARAM.inp.nspin * this->pelec->charge->ngmc, {0.0, 0.0}); + std::vector*> kin_g; + for (int is = 0; is < PARAM.inp.nspin; is++) + { + kin_g.push_back(kin_g_space.data() + is * this->pelec->charge->ngmc); + this->pw_rhod->real2recip(this->pelec->charge->kin_r_save[is], kin_g[is]); + } + ModuleIO::write_rhog(PARAM.globalv.global_out_dir + PARAM.inp.suffix + "-TAU-DENSITY.restart", + PARAM.globalv.gamma_only_pw || PARAM.globalv.gamma_only_local, + this->pw_rhod, + PARAM.inp.nspin, + ucell.GT, + kin_g.data(), + GlobalV::MY_POOL, + GlobalV::RANK_IN_POOL, + GlobalV::NPROC_IN_POOL); + } + } + } +} + } // namespace ModuleESolver diff --git a/source/module_esolver/esolver_fp.h b/source/module_esolver/esolver_fp.h index 127d04706e..355d6af5b5 100644 --- a/source/module_esolver/esolver_fp.h +++ b/source/module_esolver/esolver_fp.h @@ -41,6 +41,9 @@ class ESolver_FP : public ESolver //! Something to do after SCF iterations when SCF is converged or comes to the max iter step. virtual void after_scf(UnitCell& ucell, const int istep); + //! Something to do after hamilt2density function in each iter loop. + virtual void iter_finish(UnitCell& ucell, const int istep, int& iter); + //! ------------------------------------------------------------------------------ //! These pointers will be deleted in the free_pointers() function every ion step. //! ------------------------------------------------------------------------------ diff --git a/source/module_esolver/esolver_ks.cpp b/source/module_esolver/esolver_ks.cpp index 920eec06ac..3f97814ca2 100644 --- a/source/module_esolver/esolver_ks.cpp +++ b/source/module_esolver/esolver_ks.cpp @@ -46,9 +46,6 @@ ESolver_KS::ESolver_KS() maxniter = PARAM.inp.scf_nmax; niter = maxniter; - // should not use GlobalV here, mohan 2024-05-12 - out_freq_elec = PARAM.inp.out_freq_elec; - // pw_rho = new ModuleBase::PW_Basis(); // temporary, it will be removed std::string fft_device = PARAM.inp.device; @@ -693,45 +690,7 @@ void ESolver_KS::iter_finish(UnitCell& ucell, const int istep, int& i std::cout << " SCF restart after this step!" << std::endl; } - //! output charge density and density matrix - if (this->out_freq_elec && iter % this->out_freq_elec == 0) - { - for (int is = 0; is < PARAM.inp.nspin; is++) - { - double* data = nullptr; - if (PARAM.inp.dm_to_rho) - { - data = this->pelec->charge->rho[is]; - } - else - { - data = this->pelec->charge->rho_save[is]; - } - std::string fn = PARAM.globalv.global_out_dir + "/tmp_SPIN" + std::to_string(is + 1) + "_CHG.cube"; - ModuleIO::write_vdata_palgrid(Pgrid, - data, - is, - PARAM.inp.nspin, - 0, - fn, - this->pelec->eferm.get_efval(is), - &(ucell), - 3, - 1); - if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) - { - fn = PARAM.globalv.global_out_dir + "/tmp_SPIN" + std::to_string(is + 1) + "_TAU.cube"; - ModuleIO::write_vdata_palgrid(Pgrid, - this->pelec->charge->kin_r_save[is], - is, - PARAM.inp.nspin, - 0, - fn, - this->pelec->eferm.get_efval(is), - &(ucell)); - } - } - } + ESolver_FP::iter_finish(ucell, istep, iter); } //! Something to do after SCF iterations when SCF is converged or comes to the max iter step. diff --git a/source/module_esolver/esolver_ks.h b/source/module_esolver/esolver_ks.h index 8f98f78bc7..c20a53f555 100644 --- a/source/module_esolver/esolver_ks.h +++ b/source/module_esolver/esolver_ks.h @@ -95,7 +95,6 @@ class ESolver_KS : public ESolver_FP double hsolver_error; //! the error of HSolver int maxniter; //! maximum iter steps for scf int niter; //! iter steps actually used in scf - int out_freq_elec; //! frequency for output }; } // namespace ModuleESolver #endif diff --git a/source/module_esolver/esolver_ks_pw.cpp b/source/module_esolver/esolver_ks_pw.cpp index dca648f262..0b303f33e1 100644 --- a/source/module_esolver/esolver_ks_pw.cpp +++ b/source/module_esolver/esolver_ks_pw.cpp @@ -619,10 +619,10 @@ void ESolver_KS_PW::iter_finish(UnitCell& ucell, const int istep, int this->ppcell.cal_effective_D(veff, this->pw_rhod, ucell); } - if (this->out_freq_elec && iter % this->out_freq_elec == 0) + // 4) Print out electronic wavefunctions + if (PARAM.inp.out_wfc_pw == 1 || PARAM.inp.out_wfc_pw == 2) { - // 4) Print out electronic wavefunctions - if (PARAM.inp.out_wfc_pw == 1 || PARAM.inp.out_wfc_pw == 2) + if (iter % PARAM.inp.out_freq_elec == 0 || iter == PARAM.inp.scf_nmax || this->conv_esolver) { std::stringstream ssw; ssw << PARAM.globalv.global_out_dir << "WAVEFUNC"; diff --git a/source/module_esolver/esolver_of.cpp b/source/module_esolver/esolver_of.cpp index 8c30664573..fc8d60c6d0 100644 --- a/source/module_esolver/esolver_of.cpp +++ b/source/module_esolver/esolver_of.cpp @@ -182,6 +182,8 @@ void ESolver_OF::runner(UnitCell& ucell, const int istep) this->update_rho(); this->iter_++; + + ESolver_FP::iter_finish(ucell, istep, this->iter_); } this->after_opt(istep, ucell); diff --git a/source/module_io/read_input_item_output.cpp b/source/module_io/read_input_item_output.cpp index ba22c04e80..8e4a59d046 100644 --- a/source/module_io/read_input_item_output.cpp +++ b/source/module_io/read_input_item_output.cpp @@ -21,9 +21,13 @@ void ReadInput::item_output() } { Input_Item item("out_freq_elec"); - item.annotation = "the frequency ( >= 0) of electronic iter to output " - "charge density and wavefunction. 0: " - "output only when converged"; + item.annotation = "the frequency of electronic iter to output charge density and wavefunction "; + item.reset_value = [](const Input_Item& item, Parameter& para) { + if (para.input.out_freq_elec <= 0) + { + para.input.out_freq_elec = para.input.scf_nmax; + } + }; read_sync_int(input.out_freq_elec); this->add_item(item); } diff --git a/source/module_io/test/read_input_ptest.cpp b/source/module_io/test/read_input_ptest.cpp index 5e02408361..b29cdcfc55 100644 --- a/source/module_io/test/read_input_ptest.cpp +++ b/source/module_io/test/read_input_ptest.cpp @@ -184,7 +184,7 @@ TEST_F(InputParaTest, ParaRead) EXPECT_EQ(param.inp.printe, 100); EXPECT_EQ(param.inp.init_chg, "atomic"); EXPECT_EQ(param.inp.chg_extrap, "atomic"); - EXPECT_EQ(param.inp.out_freq_elec, 0); + EXPECT_EQ(param.inp.out_freq_elec, 50); EXPECT_EQ(param.inp.out_freq_ion, 0); EXPECT_EQ(param.inp.out_chg[0], 0); EXPECT_EQ(param.inp.out_chg[1], 3); diff --git a/source/module_parameter/input_parameter.h b/source/module_parameter/input_parameter.h index 75b2647f76..7d50b3db1e 100644 --- a/source/module_parameter/input_parameter.h +++ b/source/module_parameter/input_parameter.h @@ -316,8 +316,7 @@ struct Input_para std::vector aims_nbasis = {}; ///< the number of basis functions for each atom type used in FHI-aims (for benchmark) // ============== #Parameters (11.Output) =========================== bool out_stru = false; ///< outut stru file each ion step - int out_freq_elec = 0; ///< the frequency ( >= 0) of electronic iter to output charge - ///< 0: output only when converged + int out_freq_elec = 0; ///< the frequency of electronic iter to output charge and wavefunction int out_freq_ion = 0; ///< the frequency ( >= 0 ) of ionic step to output charge density; ///< 0: output only when ion steps are finished std::vector out_chg = {0, 3}; ///< output charge density. 0: no; 1: yes From d7b76fc2206f9dd15a040eae06f70ca57e6fa49d Mon Sep 17 00:00:00 2001 From: Erjie Wu <110683255+ErjieWu@users.noreply.github.com> Date: Wed, 1 Jan 2025 09:55:57 +0800 Subject: [PATCH 29/44] Refactor: Remove some redundant variables and global dependence in DeePKS. (#5791) * Remove cal_orbital_precalc() and corresponding temporary variables from LCAO_Deepks; Partially change cal_gevdm() for future refactor; Remove the double pointer pdm and use tensor vector for replacement. * clang-format adjustment. --- source/Makefile.Objects | 2 +- .../hamilt_lcaodft/FORCE_STRESS.cpp | 10 +- .../module_deepks/CMakeLists.txt | 2 +- .../module_deepks/LCAO_deepks.cpp | 87 +--- .../module_deepks/LCAO_deepks.h | 68 +-- .../module_deepks/LCAO_deepks_interface.cpp | 26 +- .../module_deepks/LCAO_deepks_io.cpp | 493 +++++++++--------- .../module_deepks/LCAO_deepks_io.h | 185 ++++--- .../module_deepks/LCAO_deepks_pdm.cpp | 97 ++-- .../module_deepks/LCAO_deepks_torch.cpp | 32 +- .../module_deepks/cal_descriptor.cpp | 155 +++--- .../module_deepks/cal_gedm.cpp | 107 ++-- .../module_deepks/cal_gvx.cpp | 89 ++-- ...{orbital_precalc.cpp => deepks_orbpre.cpp} | 97 ++-- .../module_deepks/deepks_orbpre.h | 46 ++ .../module_deepks/test/LCAO_deepks_test.cpp | 7 +- .../module_deepks/v_delta_precalc.cpp | 9 +- 17 files changed, 749 insertions(+), 763 deletions(-) rename source/module_hamilt_lcao/module_deepks/{orbital_precalc.cpp => deepks_orbpre.cpp} (79%) create mode 100644 source/module_hamilt_lcao/module_deepks/deepks_orbpre.h diff --git a/source/Makefile.Objects b/source/Makefile.Objects index b366ae524f..b04a96624b 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -200,7 +200,7 @@ OBJS_DEEPKS=LCAO_deepks.o\ LCAO_deepks_vdelta.o\ deepks_hmat.o\ LCAO_deepks_interface.o\ - orbital_precalc.o\ + deepks_orbpre.o\ cal_gdmx.o\ cal_gedm.o\ cal_gvx.o\ diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp index f19d980d85..bc98636d3a 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp @@ -7,12 +7,12 @@ // new #include "module_base/timer.h" #include "module_cell/module_neighbor/sltk_grid_driver.h" +#include "module_elecstate/elecstate_lcao.h" #include "module_elecstate/potentials/efield.h" // liuyu add 2022-05-18 #include "module_elecstate/potentials/gatefield.h" // liuyu add 2022-09-13 #include "module_hamilt_general/module_surchem/surchem.h" //sunml add 2022-08-10 #include "module_hamilt_general/module_vdw/vdw.h" #include "module_parameter/parameter.h" -#include "module_elecstate/elecstate_lcao.h" #ifdef __DEEPKS #include "module_hamilt_lcao/module_deepks/LCAO_deepks.h" //caoyu add for deepks 2021-06-03 #include "module_hamilt_lcao/module_deepks/LCAO_deepks_io.h" // mohan add 2024-07-22 @@ -540,7 +540,9 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, { GlobalC::ld.check_gdmx(ucell.nat); } - GlobalC::ld.cal_gvx(ucell.nat); + std::vector gevdm; + GlobalC::ld.cal_gevdm(ucell.nat, gevdm); + GlobalC::ld.cal_gvx(ucell.nat, gevdm); if (PARAM.inp.deepks_out_unittest) { @@ -758,7 +760,9 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, if (!PARAM.inp.deepks_equiv) // training with stress label not supported by equivariant version now { - GlobalC::ld.cal_gvepsl(ucell.nat); + std::vector gevdm; + GlobalC::ld.cal_gevdm(ucell.nat, gevdm); + GlobalC::ld.cal_gvepsl(ucell.nat, gevdm); LCAO_deepks_io::save_npy_gvepsl(ucell.nat, GlobalC::ld.des_per_atom, diff --git a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt index 1a2d618cbf..180b52a955 100644 --- a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt +++ b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt @@ -11,7 +11,7 @@ if(ENABLE_DEEPKS) LCAO_deepks_vdelta.cpp deepks_hmat.cpp LCAO_deepks_interface.cpp - orbital_precalc.cpp + deepks_orbpre.cpp cal_gdmx.cpp cal_gedm.cpp cal_gvx.cpp diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp index ad64939097..bffeb97efd 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp @@ -45,12 +45,7 @@ LCAO_Deepks::~LCAO_Deepks() delete[] inl_l; //=======1. to use deepks, pdm is required========== - // delete pdm** - for (int inl = 0; inl < this->inlmax; inl++) - { - delete[] pdm[inl]; - } - delete[] pdm; + pdm.clear(); //=======2. "deepks_scf" part========== // if (PARAM.inp.deepks_scf) if (gedm) @@ -100,12 +95,33 @@ void LCAO_Deepks::init(const LCAO_Orbitals& orb, int pdm_size = 0; this->inlmax = tot_inl; + this->pdm.resize(this->inlmax); + + // cal n(descriptor) per atom , related to Lmax, nchi(L) and m. (not total_nchi!) + if (!PARAM.inp.deepks_equiv) + { + this->des_per_atom = 0; // mohan add 2021-04-21 + for (int l = 0; l <= this->lmaxd; l++) + { + this->des_per_atom += orb.Alpha[0].getNchi(l) * (2 * l + 1); + } + this->n_descriptor = nat * this->des_per_atom; + + this->init_index(ntype, nat, na, tot_inl, orb); + } + if (!PARAM.inp.deepks_equiv) { GlobalV::ofs_running << " total basis (all atoms) for descriptor = " << std::endl; - // init pdm** - pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); + // init pdm + for (int inl = 0; inl < this->inlmax; inl++) + { + int nm = 2 * inl_l[inl] + 1; + pdm_size += nm * nm; + this->pdm[inl] = torch::zeros({nm, nm}, torch::kFloat64); + // this->pdm[inl].requires_grad_(true); + } } else { @@ -116,26 +132,10 @@ void LCAO_Deepks::init(const LCAO_Orbitals& orb, pdm_size = pdm_size * pdm_size; this->des_per_atom = pdm_size; GlobalV::ofs_running << " Equivariant version, size of pdm matrices : " << pdm_size << std::endl; - } - - this->pdm = new double*[this->inlmax]; - for (int inl = 0; inl < this->inlmax; inl++) - { - this->pdm[inl] = new double[pdm_size]; - ModuleBase::GlobalFunc::ZEROS(this->pdm[inl], pdm_size); - } - - // cal n(descriptor) per atom , related to Lmax, nchi(L) and m. (not total_nchi!) - if (!PARAM.inp.deepks_equiv) - { - this->des_per_atom = 0; // mohan add 2021-04-21 - for (int l = 0; l <= this->lmaxd; l++) + for (int inl = 0; inl < this->inlmax; inl++) { - this->des_per_atom += orb.Alpha[0].getNchi(l) * (2 * l + 1); + this->pdm[inl] = torch::zeros({pdm_size}, torch::kFloat64); } - this->n_descriptor = nat * this->des_per_atom; - - this->init_index(ntype, nat, na, tot_inl, orb); } this->pv = &pv_in; @@ -343,41 +343,6 @@ void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) return; } -void LCAO_Deepks::init_orbital_pdm_shell(const int nks) -{ - - this->orbital_pdm_shell = new double**[nks]; - - for (int iks = 0; iks < nks; iks++) - { - this->orbital_pdm_shell[iks] = new double*[this->inlmax]; - for (int inl = 0; inl < this->inlmax; inl++) - { - this->orbital_pdm_shell[iks][inl] = new double[(2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)]; - ModuleBase::GlobalFunc::ZEROS(orbital_pdm_shell[iks][inl], - (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1)); - } - - } - - return; -} - -void LCAO_Deepks::del_orbital_pdm_shell(const int nks) -{ - for (int iks = 0; iks < nks; iks++) - { - for (int inl = 0; inl < this->inlmax; inl++) - { - delete[] this->orbital_pdm_shell[iks][inl]; - } - delete[] this->orbital_pdm_shell[iks]; - } - delete[] this->orbital_pdm_shell; - - return; -} - void LCAO_Deepks::init_v_delta_pdm_shell(const int nks, const int nlocal) { const int mn_size = (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1); diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h index 8737515004..9238ed73fd 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h @@ -6,6 +6,7 @@ #include "deepks_force.h" #include "deepks_hmat.h" #include "deepks_orbital.h" +#include "deepks_orbpre.h" #include "module_base/complexmatrix.h" #include "module_base/intarray.h" #include "module_base/matrix.h" @@ -57,12 +58,6 @@ class LCAO_Deepks /// Correction term to Hamiltonian, for multi-k std::vector>> H_V_delta_k; - // k index of HOMO for multi-k bandgap label. QO added 2022-01-24 - int h_ind = 0; - - // k index of LUMO for multi-k bandgap label. QO added 2022-01-24 - int l_ind = 0; - // functions for hr status: 1. get value; 2. set value; int get_hr_cal() { @@ -109,8 +104,9 @@ class LCAO_Deepks std::vector*> phialpha; // projected density matrix - double** pdm; //[tot_Inl][2l+1][2l+1] caoyu modified 2021-05-07; if equivariant version: [nat][nlm*nlm] - std::vector pdm_tensor; + // [tot_Inl][2l+1][2l+1], here l is corresponding to inl; + // [nat][nlm*nlm] for equivariant version + std::vector pdm; // descriptors std::vector d_tensor; @@ -138,17 +134,9 @@ class LCAO_Deepks // gvx:d(d)/dX, [natom][3][natom][des_per_atom] torch::Tensor gvx_tensor; - // d(d)/dD, autograd from torch::linalg::eigh - std::vector gevdm_vector; - // dD/dX, tensor form of gdmx std::vector gdmr_vector; - // orbital_pdm_shell:[Inl,nm*nm]; \langle \phi_\mu|\alpha\rangle\langle\alpha|\phi_\nu\ranlge - double*** orbital_pdm_shell; - // orbital_precalc:[1,NAt,NDscrpt]; gvdm*orbital_pdm_shell - torch::Tensor orbital_precalc_tensor; - // v_delta_pdm_shell[nks,nlocal,nlocal,Inl,nm*nm] = overlap * overlap double***** v_delta_pdm_shell; std::complex***** v_delta_pdm_shell_complex; // for multi-k @@ -223,12 +211,6 @@ class LCAO_Deepks private: // arrange index of descriptor in all atoms void init_index(const int ntype, const int nat, std::vector na, const int tot_inl, const LCAO_Orbitals& orb); - // data structure that saves - void allocate_nlm(const int nat); - - // for bandgap label calculation; QO added on 2022-1-7 - void init_orbital_pdm_shell(const int nks); - void del_orbital_pdm_shell(const int nks); // for v_delta label calculation; xinyuan added on 2023-2-22 void init_v_delta_pdm_shell(const int nks, const int nlocal); @@ -373,7 +355,7 @@ class LCAO_Deepks // descriptors wrt strain tensor, calculated by // d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdm_epsl * gvdm // using einsum - // 6. cal_gvdm : d(des)/d(pdm) + // 6. cal_gevdm : d(des)/d(pdm) // calculated using torch::autograd::grad // 7. load_model : loads model for applying V_delta // 8. cal_gedm : calculates d(E_delta)/d(pdm) @@ -381,8 +363,8 @@ class LCAO_Deepks // caculated using torch::autograd::grad // 9. check_gedm : prints gedm for checking // 10. cal_orbital_precalc : orbital_precalc is usted for training with orbital label, - // which equals gvdm * orbital_pdm_shell, - // orbital_pdm_shell[Inl,nm*nm] = dm_hl * overlap * overlap + // which equals gvdm * orbital_pdm, + // orbital_pdm[nks,Inl,nm,nm] = dm_hl * overlap * overlap // 11. cal_v_delta_precalc : v_delta_precalc is used for training with v_delta label, // which equals gvdm * v_delta_pdm_shell, // v_delta_pdm_shell = overlap * overlap @@ -408,11 +390,11 @@ class LCAO_Deepks /// - b: the atoms whose force being calculated) /// gvdm*gdmx->gvx ///---------------------------------------------------- - void cal_gvx(const int nat); + void cal_gvx(const int nat, const std::vector& gevdm); void check_gvx(const int nat); // for stress - void cal_gvepsl(const int nat); + void cal_gvepsl(const int nat, const std::vector& gevdm); // load the trained neural network model void load_model(const std::string& model_file); @@ -423,20 +405,22 @@ class LCAO_Deepks void cal_gedm_equiv(const int nat); // calculates orbital_precalc - template - void cal_orbital_precalc(const std::vector& dm_hl, - const int lmaxd, - const int inlmax, - const int nat, - const int nks, - const int* inl_l, - const std::vector>& kvec_d, - const std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Parallel_Orbitals& pv, - const Grid_Driver& GridD); + // template + // void cal_orbital_precalc(const std::vector& dm_hl, + // const int lmaxd, + // const int inlmax, + // const int nat, + // const int nks, + // const int* inl_l, + // const std::vector>& kvec_d, + // const std::vector*> phialpha, + // const std::vector gevdm, + // const ModuleBase::IntArray* inl_index, + // const UnitCell& ucell, + // const LCAO_Orbitals& orb, + // const Parallel_Orbitals& pv, + // const Grid_Driver& GridD, + // torch::Tensor& orbital_precalc); // calculates v_delta_precalc template @@ -466,11 +450,11 @@ class LCAO_Deepks // prepare gevdm for outputting npy file void prepare_gevdm(const int nat, const LCAO_Orbitals& orb); + void cal_gevdm(const int nat, std::vector& gevdm); void check_vdp_gevdm(const int nat); private: const Parallel_Orbitals* pv; - void cal_gvdm(const int nat); #ifdef __MPI diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp index 37a5a2cc1b..7207a64a27 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -113,14 +113,32 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, std::vector o_delta(nks, 0.0); - ld->cal_orbital_precalc(dm_bandgap, ld->lmaxd, ld->inlmax, nat, nks, ld->inl_l, kvec_d, ld->phialpha, ld->inl_index, ucell, orb, *ParaV, GridD); + // calculate and save orbital_precalc: [nks,NAt,NDscrpt] + torch::Tensor orbital_precalc; + std::vector gevdm; + ld->cal_gevdm(nat, gevdm); + DeePKS_domain::cal_orbital_precalc(dm_bandgap, + ld->lmaxd, + ld->inlmax, + nat, + nks, + ld->inl_l, + kvec_d, + ld->phialpha, + gevdm, + ld->inl_index, + ucell, + orb, + *ParaV, + GridD, + orbital_precalc); DeePKS_domain::cal_o_delta(dm_bandgap, *h_delta, o_delta, *ParaV, nks); // save obase and orbital_precalc LCAO_deepks_io::save_npy_orbital_precalc(nat, nks, ld->des_per_atom, - ld->orbital_precalc_tensor, + orbital_precalc, PARAM.globalv.global_out_dir, my_rank); const std::string file_obase = PARAM.globalv.global_out_dir + "deepks_obase.npy"; @@ -135,8 +153,8 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, { const std::string file_obase = PARAM.globalv.global_out_dir + "deepks_obase.npy"; LCAO_deepks_io::save_npy_o(o_tot, file_obase, nks, my_rank); // no scf, o_tot=o_base - } // end deepks_scf == 0 - } // end bandgap label + } // end deepks_scf == 0 + } // end bandgap label // save H(R) matrix if (true) // should be modified later! diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp index 5e2eff5860..fdf3ba7e38 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp @@ -1,50 +1,48 @@ -//wenfei 2022-1-11 -//This file contains subroutines that contains interface with libnpy +// wenfei 2022-1-11 +// This file contains subroutines that contains interface with libnpy #include "module_parameter/parameter.h" -//since many arrays must be saved in numpy format -//It also contains subroutines for printing density matrices -//which is used in unit tests - -//There are 2 subroutines for printing density matrices: -//1. print_dm : for gamma only -//2. print_dm_k : for multi-k - -//There are 4 subroutines in this file that prints to npy file: -//1. save_npy_d : descriptor ->dm_eig.npy -//2. save_npy_gvx : gvx ->grad_vx.npy -//3. save_npy_e : energy -//4. save_npy_f : force -//5. save_npy_s : stress -//6. save_npy_o : bandgap -//7. save_npy_orbital_precalc : orbital_precalc -//8. save_npy_h : Hamiltonian -//9. save_npy_v_delta_precalc : v_delta_precalc -//10. save_npy_phialpha : phialpha -//11. save_npy_gevdm : grav_evdm , can use phialpha and gevdm to calculate v_delta_precalc +// since many arrays must be saved in numpy format +// It also contains subroutines for printing density matrices +// which is used in unit tests + +// There are 2 subroutines for printing density matrices: +// 1. print_dm : for gamma only +// 2. print_dm_k : for multi-k + +// There are 4 subroutines in this file that prints to npy file: +// 1. save_npy_d : descriptor ->dm_eig.npy +// 2. save_npy_gvx : gvx ->grad_vx.npy +// 3. save_npy_e : energy +// 4. save_npy_f : force +// 5. save_npy_s : stress +// 6. save_npy_o : bandgap +// 7. save_npy_orbital_precalc : orbital_precalc +// 8. save_npy_h : Hamiltonian +// 9. save_npy_v_delta_precalc : v_delta_precalc +// 10. save_npy_phialpha : phialpha +// 11. save_npy_gevdm : grav_evdm , can use phialpha and gevdm to calculate v_delta_precalc #ifdef __DEEPKS -#include #include "LCAO_deepks_io.h" #include "npy.hpp" +#include + template -void LCAO_deepks_io::print_dm(const int nks, - const int nlocal, - const int nrow, - const std::vector>& dm) +void LCAO_deepks_io::print_dm(const int nks, const int nlocal, const int nrow, const std::vector>& dm) { std::stringstream ss; - for(int ik=0;ik npy_gedm; - std::vector dshape = {static_cast(nat), - static_cast(des_per_atom)}; + std::vector dshape = {static_cast(nat), static_cast(des_per_atom)}; std::string gedm_file = "gedm.npy"; @@ -75,57 +71,55 @@ void LCAO_deepks_io::load_npy_gedm(const int nat, for (int iat = 0; iat < nat; iat++) { - for(int ides = 0; ides < des_per_atom; ides++) + for (int ides = 0; ides < des_per_atom; ides++) { - gedm[iat][ides] = npy_gedm[iat*des_per_atom + ides] * 2.0; //Ha to Ry + gedm[iat][ides] = npy_gedm[iat * des_per_atom + ides] * 2.0; // Ha to Ry } } - //load ec.npy + // load ec.npy std::vector npy_ec; - std::vector eshape = { 1ul }; + std::vector eshape = {1ul}; std::string ec_file = "ec.npy"; npy::LoadArrayFromNumpy(ec_file, eshape, npy_ec); - e_delta = npy_ec[0] * 2.0; //Ha to Ry + e_delta = npy_ec[0] * 2.0; // Ha to Ry } #ifdef __MPI - for(int iat = 0; iat < nat; iat++) + for (int iat = 0; iat < nat; iat++) { MPI_Bcast(gedm[iat], des_per_atom, MPI_DOUBLE, 0, MPI_COMM_WORLD); } MPI_Bcast(&e_delta, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD); #endif - } - -//saves descriptor into dm_eig.npy -void LCAO_deepks_io::save_npy_d(const int nat, +// saves descriptor into dm_eig.npy +void LCAO_deepks_io::save_npy_d(const int nat, const int des_per_atom, const int inlmax, - const int *inl_l, + const int* inl_l, const bool deepks_equiv, - const std::vector &d_tensor, + const std::vector& d_tensor, const std::string& out_dir, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_d"); - if(rank!=0) - { - return; - } + if (rank != 0) + { + return; + } - //save descriptor in .npy format - // deepks_equiv was PARAM.inp.deepks_equiv - if(!deepks_equiv) + // save descriptor in .npy format + // deepks_equiv was PARAM.inp.deepks_equiv + if (!deepks_equiv) { std::vector npy_des; - for (int inl = 0;inl < inlmax;++inl) + for (int inl = 0; inl < inlmax; ++inl) { - int nm = 2*inl_l[inl] + 1; - for(int im=0;im npy_des; - for(int iat = 0; iat < nat; iat ++) + for (int iat = 0; iat < nat; iat++) { - for(int i = 0; i < des_per_atom; i++) + for (int i = 0; i < des_per_atom; i++) { npy_des.push_back(d_tensor[iat].index({i}).item().toDouble()); } @@ -153,90 +147,85 @@ void LCAO_deepks_io::save_npy_d(const int nat, if (rank == 0) { std::string file_dm_eig = out_dir + "deepks_dm_eig.npy"; - //std::string file_dm_eig = "dm_eig.npy"; + // std::string file_dm_eig = "dm_eig.npy"; npy::SaveArrayAsNumpy(file_dm_eig, false, 2, dshape, npy_des); - } + } } return; } - -//saves gvx into grad_vx.npy -void LCAO_deepks_io::save_npy_gvx(const int nat, +// saves gvx into grad_vx.npy +void LCAO_deepks_io::save_npy_gvx(const int nat, const int des_per_atom, - const torch::Tensor &gvx_tensor, - const std::string &out_dir, + const torch::Tensor& gvx_tensor, + const std::string& out_dir, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_gvx"); - if(rank!=0) - { - return; - } + if (rank != 0) + { + return; + } - assert(nat>0); + assert(nat > 0); - //save grad_vx.npy (when force label is in use) - //unit: /Bohr - const long unsigned gshape[] - = {static_cast(nat), - 3UL, - static_cast(nat), - static_cast(des_per_atom)}; + // save grad_vx.npy (when force label is in use) + // unit: /Bohr + const long unsigned gshape[] = {static_cast(nat), + 3UL, + static_cast(nat), + static_cast(des_per_atom)}; std::vector npy_gvx; - for (int ibt = 0;ibt < nat;++ibt) + for (int ibt = 0; ibt < nat; ++ibt) { - for (int i = 0;i < 3;i++) + for (int i = 0; i < 3; i++) { - for (int iat = 0;iat < nat;++iat) + for (int iat = 0; iat < nat; ++iat) { - for(int p=0;p(nat), static_cast(des_per_atom)}; - //save grad_vepsl.npy (when stress label is in use) - //unit: none - const long unsigned gshape[] = {6UL, - static_cast(nat), - static_cast(des_per_atom)}; - std::vector npy_gvepsl; - for (int i = 0;i < 6;i++) + for (int i = 0; i < 6; i++) { - for (int ibt = 0;ibt < nat;++ibt) + for (int ibt = 0; ibt < nat; ++ibt) { - for(int p=0;p npy_e; npy_e.push_back(e); npy::SaveArrayAsNumpy(e_file, false, 1, eshape, npy_e); return; } - -//saves force in numpy format -void LCAO_deepks_io::save_npy_f(const ModuleBase::matrix &f, - const std::string &f_file, - const int nat, - const int rank) +// saves force in numpy format +void LCAO_deepks_io::save_npy_f(const ModuleBase::matrix& f, const std::string& f_file, const int nat, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_f"); - if(rank!=0) - { - return; - } + if (rank != 0) + { + return; + } - assert(nat>0); + assert(nat > 0); - //save f_base - //caution: unit: Rydberg/Bohr + // save f_base + // caution: unit: Rydberg/Bohr const long unsigned fshape[] = {static_cast(nat), 3}; std::vector npy_f; - for (int iat = 0;iat < nat;++iat) + for (int iat = 0; iat < nat; ++iat) { - for (int i = 0;i < 3;i++) + for (int i = 0; i < 3; i++) { npy_f.push_back(f(iat, i)); } @@ -297,79 +279,75 @@ void LCAO_deepks_io::save_npy_f(const ModuleBase::matrix &f, return; } - -//saves stress in numpy format -void LCAO_deepks_io::save_npy_s(const ModuleBase::matrix &stress, - const std::string &s_file, - const double &omega, +// saves stress in numpy format +void LCAO_deepks_io::save_npy_s(const ModuleBase::matrix& stress, + const std::string& s_file, + const double& omega, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_s"); - if(rank!=0) - { - return; - } + if (rank != 0) + { + return; + } - const long unsigned sshape[] = { 6 }; + const long unsigned sshape[] = {6}; std::vector npy_s; - for (int ipol = 0;ipol < 3;++ipol) + for (int ipol = 0; ipol < 3; ++ipol) { - for (int jpol = ipol;jpol < 3;jpol++) + for (int jpol = ipol; jpol < 3; jpol++) { - npy_s.push_back(stress(ipol, jpol)*omega); + npy_s.push_back(stress(ipol, jpol) * omega); } } npy::SaveArrayAsNumpy(s_file, false, 1, sshape, npy_s); return; } - -void LCAO_deepks_io::save_npy_o(const std::vector& bandgap, - const std::string& o_file, +void LCAO_deepks_io::save_npy_o(const std::vector& bandgap, + const std::string& o_file, const int nks, const int rank) { - ModuleBase::TITLE("LCAO_deepks_io", "save_npy_o"); - if(rank!=0) - { - return; - } - - //save o_base - const long unsigned oshape[] = {static_cast(nks), 1 }; + ModuleBase::TITLE("LCAO_deepks_io", "save_npy_o"); + if (rank != 0) + { + return; + } + + // save o_base + const long unsigned oshape[] = {static_cast(nks), 1}; npy::SaveArrayAsNumpy(o_file, false, 2, oshape, bandgap); return; } - -void LCAO_deepks_io::save_npy_orbital_precalc(const int nat, - const int nks, +void LCAO_deepks_io::save_npy_orbital_precalc(const int nat, + const int nks, const int des_per_atom, - const torch::Tensor& orbital_precalc_tensor, + const torch::Tensor& orbital_precalc, const std::string& out_dir, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_orbital_precalc"); - if(rank!=0) - { - return; - } + if (rank != 0) + { + return; + } - //save orbital_precalc.npy (when bandgap label is in use) - //unit: a.u. - const long unsigned gshape[] = {static_cast(nks), - static_cast(nat), - static_cast(des_per_atom)}; + // save orbital_precalc.npy (when bandgap label is in use) + // unit: a.u. + const long unsigned gshape[] + = {static_cast(nks), static_cast(nat), static_cast(des_per_atom)}; std::vector npy_orbital_precalc; for (int iks = 0; iks < nks; ++iks) { - for (int iat = 0;iat < nat;++iat) + for (int iat = 0; iat < nat; ++iat) { - for(int p=0; p -void LCAO_deepks_io::save_npy_h(const std::vector &hamilt, - const std::string &h_file, +void LCAO_deepks_io::save_npy_h(const std::vector& hamilt, + const std::string& h_file, const int nlocal, const int nks, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_h"); - if(rank!=0) - { - return; - } + if (rank != 0) + { + return; + } - const long unsigned hshape[] = {static_cast(nks), - static_cast(nlocal), - static_cast(nlocal) }; + const long unsigned hshape[] + = {static_cast(nks), static_cast(nlocal), static_cast(nlocal)}; std::vector npy_h; - for(int k=0; k -void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, +void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, const int nks, - const int nlocal, + const int nlocal, const int des_per_atom, const torch::Tensor& v_delta_precalc_tensor, const std::string& out_dir, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_v_delta_precalc"); - if(rank!=0) - { - return; - } + if (rank != 0) + { + return; + } - // timeval t_start; + // timeval t_start; // gettimeofday(&t_start,NULL); - //save v_delta_precalc.npy (when v_delta label is in use) - //unit: a.u. + // save v_delta_precalc.npy (when v_delta label is in use) + // unit: a.u. const long unsigned gshape[] = {static_cast(nks), static_cast(nlocal), static_cast(nlocal), static_cast(nat), static_cast(des_per_atom)}; - std::vector npy_v_delta_precalc; + std::vector npy_v_delta_precalc; for (int iks = 0; iks < nks; ++iks) { for (int mu = 0; mu < nlocal; ++mu) { for (int nu = 0; nu < nlocal; ++nu) { - for (int iat = 0;iat < nat;++iat) + for (int iat = 0; iat < nat; ++iat) { - for(int p=0; p::value) { - npy_v_delta_precalc.push_back(v_delta_precalc_tensor.index({iks, mu, nu, iat, p }).item().toDouble()); + npy_v_delta_precalc.push_back( + v_delta_precalc_tensor.index({iks, mu, nu, iat, p}).item().toDouble()); } else { - std::complex value(torch::real(v_delta_precalc_tensor.index({iks, mu, nu, iat, p})).item(), - torch::imag(v_delta_precalc_tensor.index({iks, mu, nu, iat, p})).item()); + std::complex value( + torch::real(v_delta_precalc_tensor.index({iks, mu, nu, iat, p})).item(), + torch::imag(v_delta_precalc_tensor.index({iks, mu, nu, iat, p})).item()); npy_v_delta_precalc.push_back(value); } } - } + } } } } @@ -469,53 +448,54 @@ void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, } template -void LCAO_deepks_io::save_npy_phialpha(const int nat, +void LCAO_deepks_io::save_npy_phialpha(const int nat, const int nks, const int nlocal, const int inlmax, const int lmaxd, - const torch::Tensor &phialpha_tensor, + const torch::Tensor& phialpha_tensor, const std::string& out_dir, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_phialpha"); - if(rank!=0) - { - return; - } - - //save phialpha.npy (when v_delta label == 2) - //unit: a.u. - const int nlmax = inlmax/nat; - const int mmax = 2*lmaxd+1; + if (rank != 0) + { + return; + } + + // save phialpha.npy (when v_delta label == 2) + // unit: a.u. + const int nlmax = inlmax / nat; + const int mmax = 2 * lmaxd + 1; const long unsigned gshape[] = {static_cast(nat), static_cast(nlmax), static_cast(nks), static_cast(nlocal), static_cast(mmax)}; std::vector npy_phialpha; - for(int iat=0; iat< nat ; iat++) + for (int iat = 0; iat < nat; iat++) { - for(int nl = 0; nl < nlmax; nl++) + for (int nl = 0; nl < nlmax; nl++) { - for (int iks = 0; iks < nks ; iks++) + for (int iks = 0; iks < nks; iks++) { - for(int mu = 0; mu < nlocal ; mu++) + for (int mu = 0; mu < nlocal; mu++) { - for(int m=0; m< mmax; m++) + for (int m = 0; m < mmax; m++) { if constexpr (std::is_same::value) { - npy_phialpha.push_back(phialpha_tensor.index({ iat,nl, iks, mu, m }).item().toDouble()); + npy_phialpha.push_back(phialpha_tensor.index({iat, nl, iks, mu, m}).item().toDouble()); } else { - std::complex value(torch::real(phialpha_tensor.index({ iat, nl, iks, mu, m })).item(), - torch::imag(phialpha_tensor.index({ iat, nl, iks, mu, m })).item()); + std::complex value( + torch::real(phialpha_tensor.index({iat, nl, iks, mu, m})).item(), + torch::imag(phialpha_tensor.index({iat, nl, iks, mu, m})).item()); npy_phialpha.push_back(value); } } - } + } } } } @@ -524,7 +504,6 @@ void LCAO_deepks_io::save_npy_phialpha(const int nat, return; } - void LCAO_deepks_io::save_npy_gevdm(const int nat, const int inlmax, const int lmaxd, @@ -533,37 +512,37 @@ void LCAO_deepks_io::save_npy_gevdm(const int nat, const int rank) { ModuleBase::TITLE("LCAO_deepks_io", "save_npy_gevdm"); - if(rank!=0) - { - return; - } + if (rank != 0) + { + return; + } - assert(nat>0); + assert(nat > 0); - //save grad_evdm.npy (when v_delta label == 2) - //unit: a.u. - const int nlmax = inlmax/nat; - const int mmax = 2*lmaxd+1; + // save grad_evdm.npy (when v_delta label == 2) + // unit: a.u. + const int nlmax = inlmax / nat; + const int mmax = 2 * lmaxd + 1; const long unsigned gshape[] = {static_cast(nat), static_cast(nlmax), static_cast(mmax), static_cast(mmax), static_cast(mmax)}; std::vector npy_gevdm; - for(int iat=0; iat< nat ; iat++) + for (int iat = 0; iat < nat; iat++) { - for(int nl = 0; nl < nlmax; nl++) + for (int nl = 0; nl < nlmax; nl++) { - for(int v=0; v< mmax; v++) + for (int v = 0; v < mmax; v++) { - for(int m=0; m< mmax; m++) + for (int m = 0; m < mmax; m++) { - for(int n=0; n< mmax; n++) + for (int n = 0; n < mmax; n++) { - npy_gevdm.push_back(gevdm_tensor.index({ iat, nl, v, m, n}).item().toDouble()); - } + npy_gevdm.push_back(gevdm_tensor.index({iat, nl, v, m, n}).item().toDouble()); + } } - } + } } } const std::string file_gevdm = out_dir + "deepks_gevdm.npy"; @@ -571,51 +550,51 @@ void LCAO_deepks_io::save_npy_gevdm(const int nat, return; } - -template void LCAO_deepks_io::print_dm(const int nks, +template void LCAO_deepks_io::print_dm(const int nks, const int nlocal, const int nrow, const std::vector>& dm); -template void LCAO_deepks_io::print_dm>(const int nks, +template void LCAO_deepks_io::print_dm>(const int nks, const int nlocal, const int nrow, const std::vector>>& dm); -template void LCAO_deepks_io::save_npy_h(const std::vector &hamilt, - const std::string &h_file, +template void LCAO_deepks_io::save_npy_h(const std::vector& hamilt, + const std::string& h_file, const int nlocal, const int nks, const int rank); -template void LCAO_deepks_io::save_npy_h>(const std::vector &hamilt, - const std::string &h_file, +template void LCAO_deepks_io::save_npy_h>(const std::vector& hamilt, + const std::string& h_file, const int nlocal, const int nks, const int rank); -template void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, +template void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, const int nks, - const int nlocal, + const int nlocal, const int des_per_atom, const torch::Tensor& v_delta_precalc_tensor, const std::string& out_dir, const int rank); -template void LCAO_deepks_io::save_npy_v_delta_precalc>(const int nat, - const int nks, - const int nlocal, - const int des_per_atom, - const torch::Tensor& v_delta_precalc_tensor, - const std::string& out_dir, - const int rank); +template void LCAO_deepks_io::save_npy_v_delta_precalc>( + const int nat, + const int nks, + const int nlocal, + const int des_per_atom, + const torch::Tensor& v_delta_precalc_tensor, + const std::string& out_dir, + const int rank); template void LCAO_deepks_io::save_npy_phialpha(const int nat, const int nks, const int nlocal, const int inlmax, const int lmaxd, - const torch::Tensor &phialpha_tensor, + const torch::Tensor& phialpha_tensor, const std::string& out_dir, const int rank); @@ -624,7 +603,7 @@ template void LCAO_deepks_io::save_npy_phialpha>(const int const int nlocal, const int inlmax, const int lmaxd, - const torch::Tensor &phialpha_tensor, + const torch::Tensor& phialpha_tensor, const std::string& out_dir, const int rank); diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h index 33854e3b83..8c537f1e46 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h @@ -1,144 +1,137 @@ -#ifndef LCAO_DEEPKS_IO_H +#ifndef LCAO_DEEPKS_IO_H #define LCAO_DEEPKS_IO_H #ifdef __DEEPKS -#include -#include -#include "module_base/tool_title.h" -#include "module_base/matrix.h" #include "module_base/complexmatrix.h" +#include "module_base/matrix.h" +#include "module_base/tool_title.h" +#include #include #include +#include namespace LCAO_deepks_io { - /// This file contains subroutines that contains interface with libnpy - /// since many arrays must be saved in numpy format - /// It also contains subroutines for printing density matrices - /// which is used in unit tests - - /// There are 2 subroutines for printing and loading .npy file: - /// 1. print_dm : print density matrices - /// 2. load_npy_gedm : load gedm from .npy file - - /// others print quantities in .npy format - - /// 3. save_npy_d : descriptor -> deepks_dm_eig.npy - /// 4. save_npy_e : energy - /// 5. save_npy_f : force - /// 6. save_npy_gvx : gvx -> deepks_gradvx.npy - /// 7. save_npy_s : stress - /// 8. save_npy_gvepsl : gvepsl -> deepks_gvepsl.npy - /// 9. save_npy_o: orbital - /// 10. save_npy_orbital_precalc: orbital_precalc -> deepks_orbpre.npy - /// 11. save_npy_h : Hamiltonian - /// 12. save_npy_v_delta_precalc : v_delta_precalc -> deepks_vdpre.npy - /// 13. save_npy_phialpha : phialpha -> deepks_phialpha.npy - /// 14. save_npy_gevdm : grav_evdm -> deepks_gevdm.npy, can use phialpha and gevdm to calculate v_delta_precalc +/// This file contains subroutines that contains interface with libnpy +/// since many arrays must be saved in numpy format +/// It also contains subroutines for printing density matrices +/// which is used in unit tests + +/// There are 2 subroutines for printing and loading .npy file: +/// 1. print_dm : print density matrices +/// 2. load_npy_gedm : load gedm from .npy file + +/// others print quantities in .npy format + +/// 3. save_npy_d : descriptor -> deepks_dm_eig.npy +/// 4. save_npy_e : energy +/// 5. save_npy_f : force +/// 6. save_npy_gvx : gvx -> deepks_gradvx.npy +/// 7. save_npy_s : stress +/// 8. save_npy_gvepsl : gvepsl -> deepks_gvepsl.npy +/// 9. save_npy_o: orbital +/// 10. save_npy_orbital_precalc: orbital_precalc -> deepks_orbpre.npy +/// 11. save_npy_h : Hamiltonian +/// 12. save_npy_v_delta_precalc : v_delta_precalc -> deepks_vdpre.npy +/// 13. save_npy_phialpha : phialpha -> deepks_phialpha.npy +/// 14. save_npy_gevdm : grav_evdm -> deepks_gevdm.npy, can use phialpha and gevdm to calculate v_delta_precalc /// print density matrices template -void print_dm(const int nks, - const int nlocal, - const int nrow, - const std::vector>& dm); +void print_dm(const int nks, const int nlocal, const int nrow, const std::vector>& dm); -void load_npy_gedm(const int nat, - const int des_per_atom, - double** gedm, - double& e_delta, - const int rank); +void load_npy_gedm(const int nat, const int des_per_atom, double** gedm, double& e_delta, const int rank); /// save descriptor void save_npy_d(const int nat, - const int des_per_atom, - const int inlmax, - const int* inl_l, - const bool deepks_equiv, - const std::vector &d_tensor, - const std::string& out_dir, - const int rank); + const int des_per_atom, + const int inlmax, + const int* inl_l, + const bool deepks_equiv, + const std::vector& d_tensor, + const std::string& out_dir, + const int rank); // save energy -void save_npy_e(const double &e, /**<[in] \f$E_{base}\f$ or \f$E_{tot}\f$, in Ry*/ - const std::string &e_file, - const int rank); +void save_npy_e(const double& e, /**<[in] \f$E_{base}\f$ or \f$E_{tot}\f$, in Ry*/ + const std::string& e_file, + const int rank); // save force and gvx -void save_npy_f(const ModuleBase::matrix &f, /**<[in] \f$F_{base}\f$ or \f$F_{tot}\f$, in Ry/Bohr*/ - const std::string &f_file, - const int nat, - const int rank); +void save_npy_f(const ModuleBase::matrix& f, /**<[in] \f$F_{base}\f$ or \f$F_{tot}\f$, in Ry/Bohr*/ + const std::string& f_file, + const int nat, + const int rank); void save_npy_gvx(const int nat, - const int des_per_atom, - const torch::Tensor &gvx_tensor, - const std::string& out_dir, - const int rank); + const int des_per_atom, + const torch::Tensor& gvx_tensor, + const std::string& out_dir, + const int rank); // save stress and gvepsl -void save_npy_s(const ModuleBase::matrix &stress, /**<[in] \f$S_{base}\f$ or \f$S_{tot}\f$, in Ry/Bohr^3*/ - const std::string &s_file, - const double &omega, - const int rank); +void save_npy_s(const ModuleBase::matrix& stress, /**<[in] \f$S_{base}\f$ or \f$S_{tot}\f$, in Ry/Bohr^3*/ + const std::string& s_file, + const double& omega, + const int rank); void save_npy_gvepsl(const int nat, - const int des_per_atom, - const torch::Tensor &gvepsl_tensor, - const std::string& out_dir, - const int rank); + const int des_per_atom, + const torch::Tensor& gvepsl_tensor, + const std::string& out_dir, + const int rank); /// save orbital and orbital_precalc void save_npy_o(const std::vector& bandgap, /**<[in] \f$E_{base}\f$ or \f$E_{tot}\f$, in Ry*/ - const std::string &o_file, - const int nks, - const int rank); + const std::string& o_file, + const int nks, + const int rank); -void save_npy_orbital_precalc(const int nat, - const int nks, - const int des_per_atom, - const torch::Tensor& orbital_precalc_tensor, - const std::string& out_dir, - const int rank); +void save_npy_orbital_precalc(const int nat, + const int nks, + const int des_per_atom, + const torch::Tensor& orbital_precalc, + const std::string& out_dir, + const int rank); // save Hamiltonian and v_delta_precalc(for deepks_v_delta==1)/phialpha+gevdm(for deepks_v_delta==2) template -void save_npy_h(const std::vector &hamilt, - const std::string &h_file, - const int nlocal, - const int nks, - const int rank); +void save_npy_h(const std::vector& hamilt, + const std::string& h_file, + const int nlocal, + const int nks, + const int rank); template void save_npy_v_delta_precalc(const int nat, - const int nks, - const int nlocal, - const int des_per_atom, - const torch::Tensor& v_delta_precalc_tensor, - const std::string& out_dir, - const int rank); + const int nks, + const int nlocal, + const int des_per_atom, + const torch::Tensor& v_delta_precalc_tensor, + const std::string& out_dir, + const int rank); template void save_npy_phialpha(const int nat, - const int nks, - const int nlocal, - const int inlmax, - const int lmaxd, - const torch::Tensor &phialpha_tensor, - const std::string& out_dir, - const int rank); + const int nks, + const int nlocal, + const int inlmax, + const int lmaxd, + const torch::Tensor& phialpha_tensor, + const std::string& out_dir, + const int rank); // Always real, no need for template now void save_npy_gevdm(const int nat, - const int inlmax, - const int lmaxd, - const torch::Tensor& gevdm_tensor, - const std::string& out_dir, - const int rank); -}; + const int inlmax, + const int lmaxd, + const torch::Tensor& gevdm_tensor, + const std::string& out_dir, + const int rank); +}; // namespace LCAO_deepks_io #endif #endif diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp index c1c30989d1..58e6b315c9 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp @@ -21,42 +21,57 @@ #include "module_base/timer.h" #include "module_base/vector3.h" #include "module_hamilt_lcao/module_hcontainer/atom_pair.h" +#ifdef __MPI +#include "module_base/parallel_reduce.h" +#endif void LCAO_Deepks::read_projected_DM(bool read_pdm_file, bool is_equiv, const Numerical_Orbital& alpha) { if (read_pdm_file && !this->init_pdm) // for DeePKS NSCF calculation { - int pdm_size = 0; + const std::string file_projdm = PARAM.globalv.global_out_dir + "deepks_projdm.dat"; + std::ifstream ifs(file_projdm.c_str()); + + if (!ifs) + { + ModuleBase::WARNING_QUIT("LCAO_Deepks::read_projected_DM", "Cannot find the file deepks_projdm.dat"); + } if (!is_equiv) { - pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); + for (int inl = 0; inl < this->inlmax; inl++) + { + int nm = this->inl_l[inl] * 2 + 1; + for (int m1 = 0; m1 < nm; m1++) + { + for (int m2 = 0; m2 < nm; m2++) + { + double c; + ifs >> c; + this->pdm[inl][m1][m2] = c; + } + } + } } else { + int pdm_size = 0; int nproj = 0; for (int il = 0; il < this->lmaxd + 1; il++) { nproj += (2 * il + 1) * alpha.getNchi(il); } pdm_size = nproj * nproj; - } - - const std::string file_projdm = PARAM.globalv.global_out_dir + "deepks_projdm.dat"; - std::ifstream ifs(file_projdm.c_str()); - - if (!ifs) - { - ModuleBase::WARNING_QUIT("LCAO_Deepks::read_projected_DM", "Cannot find the file deepks_projdm.dat"); - } - for (int inl = 0; inl < this->inlmax; inl++) - { - for (int ind = 0; ind < pdm_size; ind++) + for (int inl = 0; inl < this->inlmax; inl++) { - double c; - ifs >> c; - pdm[inl][ind] = c; + for (int ind = 0; ind < pdm_size; ind++) + { + double c; + ifs >> c; + this->pdm[inl][ind] = c; + } } } + this->init_pdm = true; } } @@ -78,32 +93,32 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* d this->init_pdm = false; return; } - int pdm_size = 0; + if (!PARAM.inp.deepks_equiv) { - pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); + for (int inl = 0; inl < this->inlmax; inl++) + { + int nm = this->inl_l[inl] * 2 + 1; + this->pdm[inl] = torch::zeros({nm, nm}, torch::kFloat64); + } } else { + int pdm_size = 0; int nproj = 0; for (int il = 0; il < this->lmaxd + 1; il++) { nproj += (2 * il + 1) * orb.Alpha[0].getNchi(il); } pdm_size = nproj * nproj; + for (int inl = 0; inl < inlmax; inl++) + { + this->pdm[inl] = torch::zeros({pdm_size}, torch::kFloat64); + } } - // if(dm.size() == 0 || dm[0].size() == 0) - //{ - // return; - // } ModuleBase::timer::tick("LCAO_Deepks", "cal_projected_DM"); - for (int inl = 0; inl < inlmax; inl++) - { - ModuleBase::GlobalFunc::ZEROS(pdm[inl], pdm_size); - } - const double Rcut_Alpha = orb.Alpha[0].getRcut(); for (int T0 = 0; T0 < ucell.ntype; T0++) { @@ -299,7 +314,6 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* d g_1dmt.data(), &row_size); } // ad2 - // do dot of g_1dmt and s_1t to get orbital_pdm_shell if (!PARAM.inp.deepks_equiv) { int ib = 0, index = 0, inc = 1; @@ -315,11 +329,11 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* d for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { int ind = m1 * nm + m2; - pdm[inl][ind] += ddot_(&row_size, - g_1dmt.data() + index * row_size, - &inc, - s_1t.data() + index * row_size, - &inc); + pdm[inl][m1][m2] += ddot_(&row_size, + g_1dmt.data() + index * row_size, + &inc, + s_1t.data() + index * row_size, + &inc); index++; } } @@ -353,7 +367,11 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* d } // T0 #ifdef __MPI - allsum_deepks(this->inlmax, pdm_size, this->pdm); + for (int inl = 0; inl < inlmax; inl++) + { + int pdm_size = (2 * inl_l[inl] + 1) * (2 * inl_l[inl] + 1); + Parallel_Reduce::reduce_all(pdm[inl].data_ptr(), pdm_size); + } #endif ModuleBase::timer::tick("LCAO_Deepks", "cal_projected_DM"); return; @@ -364,13 +382,16 @@ void LCAO_Deepks::check_projected_dm() const std::string file_projdm = PARAM.globalv.global_out_dir + "deepks_projdm.dat"; std::ofstream ofs(file_projdm.c_str()); - const int pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); ofs << std::setprecision(10); for (int inl = 0; inl < inlmax; inl++) { - for (int ind = 0; ind < pdm_size; ind++) + const int nm = 2 * this->inl_l[inl] + 1; + for (int m1 = 0; m1 < nm; m1++) { - ofs << pdm[inl][ind] << " "; + for (int m2 = 0; m2 < nm; m2++) + { + ofs << pdm[inl][m1][m2].item() << " "; + } } ofs << std::endl; } diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp index 350c3db0e7..5d881f82f9 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp @@ -7,7 +7,7 @@ // descriptors wrt strain tensor, calculated by // d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdm_epsl * gvdm // using einsum -// cal_gvdm : d(des)/d(pdm) +// cal_gevdm : d(des)/d(pdm) // calculated using torch::autograd::grad // load_model : loads model for applying V_delta // prepare_phialpha : prepare phialpha for outputting npy file @@ -25,11 +25,9 @@ #include "module_parameter/parameter.h" // calculates stress of descriptors from gradient of projected density matrices -void LCAO_Deepks::cal_gvepsl(const int nat) +void LCAO_Deepks::cal_gvepsl(const int nat, const std::vector& gevdm) { ModuleBase::TITLE("LCAO_Deepks", "cal_gvepsl"); - // preconditions - this->cal_gvdm(nat); if (!gdmepsl_vector.empty()) { gdmepsl_vector.erase(gdmepsl_vector.begin(), gdmepsl_vector.end()); @@ -76,13 +74,13 @@ void LCAO_Deepks::cal_gvepsl(const int nat) // einsum for each inl: // gdmepsl_vector : b:npol * a:inl(projector) * m:nm * n:nm - // gevdm_vector : a:inl * v:nm (descriptor) * m:nm (pdm, dim1) * n:nm + // gevdm : a:inl * v:nm (descriptor) * m:nm (pdm, dim1) * n:nm // (pdm, dim2) gvepsl_vector : b:npol * a:inl(projector) * // m:nm(descriptor) std::vector gvepsl_vector; for (int nl = 0; nl < nlmax; ++nl) { - gvepsl_vector.push_back(at::einsum("bamn, avmn->bav", {this->gdmepsl_vector[nl], this->gevdm_vector[nl]})); + gvepsl_vector.push_back(at::einsum("bamn, avmn->bav", {this->gdmepsl_vector[nl], gevdm[nl]})); } // cat nv-> \sum_nl(nv) = \sum_nl(nm_nl)=des_per_atom @@ -96,13 +94,14 @@ void LCAO_Deepks::cal_gvepsl(const int nat) return; } -// dDescriptor / dprojected density matrix -void LCAO_Deepks::cal_gvdm(const int nat) +// d(Descriptor) / d(projected density matrix) +// Dimension is different for each inl, so there's a vector of tensors +void LCAO_Deepks::cal_gevdm(const int nat, std::vector& gevdm) { - ModuleBase::TITLE("LCAO_Deepks", "cal_gvdm"); - if (!gevdm_vector.empty()) + ModuleBase::TITLE("LCAO_Deepks", "cal_gevdm"); + if (!gevdm.empty()) { - gevdm_vector.erase(gevdm_vector.begin(), gevdm_vector.end()); + gevdm.erase(gevdm.begin(), gevdm.end()); } // cal gevdm(d(EigenValue(D))/dD) int nlmax = inlmax / nat; @@ -114,7 +113,7 @@ void LCAO_Deepks::cal_gvdm(const int nat) int inl = iat * nlmax + nl; int nm = 2 * this->inl_l[inl] + 1; // repeat each block for nm times in an additional dimension - torch::Tensor tmp_x = this->pdm_tensor[inl].reshape({nm, nm}).unsqueeze(0).repeat({nm, 1, 1}); + torch::Tensor tmp_x = this->pdm[inl].reshape({nm, nm}).unsqueeze(0).repeat({nm, 1, 1}); // torch::Tensor tmp_y = std::get<0>(torch::symeig(tmp_x, true)); torch::Tensor tmp_y = std::get<0>(torch::linalg::eigh(tmp_x, "U")); torch::Tensor tmp_yshell = torch::eye(nm, torch::TensorOptions().dtype(torch::kFloat64)); @@ -134,9 +133,9 @@ void LCAO_Deepks::cal_gvdm(const int nat) avmmv.push_back(tmp_res[0]); } torch::Tensor avmm = torch::stack(avmmv, 0); // nat*nv**nm*nm - this->gevdm_vector.push_back(avmm); + gevdm.push_back(avmm); } - assert(this->gevdm_vector.size() == nlmax); + assert(gevdm.size() == nlmax); return; } @@ -367,7 +366,8 @@ void LCAO_Deepks::prepare_gevdm(const int nat, const LCAO_Orbitals& orb) int mmax = 2 * this->lmaxd + 1; this->gevdm_tensor = torch::zeros({nat, nlmax, mmax, mmax, mmax}, torch::TensorOptions().dtype(torch::kFloat64)); - this->cal_gvdm(nat); + std::vector gevdm; + this->cal_gevdm(nat, gevdm); int nl = 0; for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) @@ -383,7 +383,7 @@ void LCAO_Deepks::prepare_gevdm(const int nat, const LCAO_Orbitals& orb) { for (int n = 0; n < nm; ++n) { - this->gevdm_tensor[iat][nl][v][m][n] = this->gevdm_vector[nl][iat][v][m][n]; + this->gevdm_tensor[iat][nl][v][m][n] = gevdm[nl][iat][v][m][n]; } } } diff --git a/source/module_hamilt_lcao/module_deepks/cal_descriptor.cpp b/source/module_hamilt_lcao/module_deepks/cal_descriptor.cpp index 6cc5b2a6a1..e58473ec24 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_descriptor.cpp +++ b/source/module_hamilt_lcao/module_deepks/cal_descriptor.cpp @@ -1,6 +1,6 @@ -///1. cal_descriptor : obtains descriptors which are eigenvalues of pdm -/// by calling torch::linalg::eigh -///2. check_descriptor : prints descriptor for checking +/// 1. cal_descriptor : obtains descriptors which are eigenvalues of pdm +/// by calling torch::linalg::eigh +/// 2. check_descriptor : prints descriptor for checking #ifdef __DEEPKS @@ -13,21 +13,21 @@ #include "module_hamilt_lcao/module_hcontainer/atom_pair.h" #include "module_parameter/parameter.h" -void LCAO_Deepks::cal_descriptor_equiv(const int nat) +void LCAO_Deepks::cal_descriptor_equiv(const int nat) { ModuleBase::TITLE("LCAO_Deepks", "cal_descriptor_equiv"); ModuleBase::timer::tick("LCAO_Deepks", "cal_descriptor_equiv"); // a rather unnecessary way of writing this, but I'll do it for now - if (!this->d_tensor.empty()) + if (!this->d_tensor.empty()) { this->d_tensor.erase(this->d_tensor.begin(), this->d_tensor.end()); } - for (int iat = 0; iat < nat; iat++) + for (int iat = 0; iat < nat; iat++) { auto tmp = torch::zeros(des_per_atom, torch::kFloat64); - std::memcpy(tmp.data_ptr(), pdm[iat], sizeof(double) * tmp.numel()); + std::memcpy(tmp.data_ptr(), pdm[iat].data_ptr(), sizeof(double) * tmp.numel()); this->d_tensor.push_back(tmp); } @@ -35,126 +35,103 @@ void LCAO_Deepks::cal_descriptor_equiv(const int nat) } // calculates descriptors from projected density matrices -void LCAO_Deepks::cal_descriptor(const int nat) { +void LCAO_Deepks::cal_descriptor(const int nat) +{ ModuleBase::TITLE("LCAO_Deepks", "cal_descriptor"); ModuleBase::timer::tick("LCAO_Deepks", "cal_descriptor"); - if (PARAM.inp.deepks_equiv) + if (PARAM.inp.deepks_equiv) { this->cal_descriptor_equiv(nat); return; } - // init pdm_tensor and d_tensor - torch::Tensor tmp; - - // if pdm_tensor and d_tensor is not empty, clear it !! - if (!this->d_tensor.empty()) + // init d_tensor + // if d_tensor is not empty, clear it !! + if (!this->d_tensor.empty()) { this->d_tensor.erase(this->d_tensor.begin(), this->d_tensor.end()); } - if (!this->pdm_tensor.empty()) - { - this->pdm_tensor.erase(this->pdm_tensor.begin(), - this->pdm_tensor.end()); - } - - for (int inl = 0; inl < this->inlmax; ++inl) + for (int inl = 0; inl < this->inlmax; ++inl) { const int nm = 2 * inl_l[inl] + 1; - tmp = torch::ones({nm, nm}, - torch::TensorOptions().dtype(torch::kFloat64)); - - for (int m1 = 0; m1 < nm; ++m1) - { - for (int m2 = 0; m2 < nm; ++m2) - { - tmp.index_put_({m1, m2}, this->pdm[inl][m1 * nm + m2]); - } - } - - // torch::Tensor tmp = torch::from_blob(this->pdm[inl], { nm, nm }, - // torch::requires_grad()); - - tmp.requires_grad_(true); - this->pdm_tensor.push_back(tmp); + this->pdm[inl].requires_grad_(true); this->d_tensor.push_back(torch::ones({nm}, torch::requires_grad(true))); } // cal d_tensor - for (int inl = 0; inl < inlmax; ++inl) + for (int inl = 0; inl < inlmax; ++inl) { torch::Tensor vd; std::tuple d_v(this->d_tensor[inl], vd); - // d_v = torch::symeig(pdm_tensor[inl], /*eigenvalues=*/true, + // d_v = torch::symeig(pdm[inl], /*eigenvalues=*/true, // /*upper=*/true); - d_v = torch::linalg::eigh(pdm_tensor[inl], /*uplo*/ "U"); + d_v = torch::linalg::eigh(pdm[inl], /*uplo*/ "U"); d_tensor[inl] = std::get<0>(d_v); } ModuleBase::timer::tick("LCAO_Deepks", "cal_descriptor"); return; } - -void LCAO_Deepks::check_descriptor(const UnitCell& ucell, const std::string& out_dir) { +void LCAO_Deepks::check_descriptor(const UnitCell& ucell, const std::string& out_dir) +{ ModuleBase::TITLE("LCAO_Deepks", "check_descriptor"); - if (GlobalV::MY_RANK != 0) + if (GlobalV::MY_RANK != 0) { return; } // mohan updated 2024-07-25 std::string file = out_dir + "deepks_desc.dat"; - + std::ofstream ofs(file.c_str()); - ofs << std::setprecision(10); - if (!PARAM.inp.deepks_equiv) - { - for (int it = 0; it < ucell.ntype; it++) - { - for (int ia = 0; ia < ucell.atoms[it].na; ia++) - { - int iat = ucell.itia2iat(it, ia); - ofs << ucell.atoms[it].label << " atom_index " << ia + 1 - << " n_descriptor " << this->des_per_atom << std::endl; - int id = 0; - for (int inl = 0; inl < inlmax / ucell.nat; inl++) - { - int nm = 2 * inl_l[inl] + 1; - for (int im = 0; im < nm; im++) - { - const int ind = iat * inlmax / ucell.nat + inl; - ofs << d_tensor[ind].index({im}).item().toDouble() - << " "; - - if (id % 8 == 7) - { - ofs << std::endl; - } - id++; - } - } - ofs << std::endl << std::endl; - } - } - } - else - { - for (int iat = 0; iat < ucell.nat; iat++) - { - const int it = ucell.iat2it[iat]; - ofs << ucell.atoms[it].label << " atom_index " << iat + 1 - << " n_descriptor " << this->des_per_atom << std::endl; - for (int i = 0; i < this->des_per_atom; i++) + ofs << std::setprecision(10); + if (!PARAM.inp.deepks_equiv) + { + for (int it = 0; it < ucell.ntype; it++) + { + for (int ia = 0; ia < ucell.atoms[it].na; ia++) + { + int iat = ucell.itia2iat(it, ia); + ofs << ucell.atoms[it].label << " atom_index " << ia + 1 << " n_descriptor " << this->des_per_atom + << std::endl; + int id = 0; + for (int inl = 0; inl < inlmax / ucell.nat; inl++) + { + int nm = 2 * inl_l[inl] + 1; + for (int im = 0; im < nm; im++) + { + const int ind = iat * inlmax / ucell.nat + inl; + ofs << d_tensor[ind].index({im}).item().toDouble() << " "; + + if (id % 8 == 7) + { + ofs << std::endl; + } + id++; + } + } + ofs << std::endl << std::endl; + } + } + } + else + { + for (int iat = 0; iat < ucell.nat; iat++) + { + const int it = ucell.iat2it[iat]; + ofs << ucell.atoms[it].label << " atom_index " << iat + 1 << " n_descriptor " << this->des_per_atom + << std::endl; + for (int i = 0; i < this->des_per_atom; i++) { - ofs << this->pdm[iat][i] << " "; - if (i % 8 == 7) - { - ofs << std::endl; - } - } + ofs << this->pdm[iat][i].item() << " "; + if (i % 8 == 7) + { + ofs << std::endl; + } + } ofs << std::endl << std::endl; } } diff --git a/source/module_hamilt_lcao/module_deepks/cal_gedm.cpp b/source/module_hamilt_lcao/module_deepks/cal_gedm.cpp index 4b3ca70999..d35972205b 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_gedm.cpp +++ b/source/module_hamilt_lcao/module_deepks/cal_gedm.cpp @@ -14,13 +14,13 @@ #include "module_hamilt_lcao/module_hcontainer/atom_pair.h" #include "module_parameter/parameter.h" +inline void generate_py_files(const int lmaxd, const int nmaxd, const std::string& out_dir) +{ -inline void generate_py_files(const int lmaxd, const int nmaxd, const std::string &out_dir) { - - if (GlobalV::MY_RANK != 0) - { - return; - } + if (GlobalV::MY_RANK != 0) + { + return; + } std::ofstream ofs("cal_gedm.py"); ofs << "import torch" << std::endl; @@ -52,12 +52,15 @@ inline void generate_py_files(const int lmaxd, const int nmaxd, const std::strin ofs.open("basis.yaml"); ofs << "proj_basis:" << std::endl; - for (int l = 0; l < lmaxd + 1; l++) { + for (int l = 0; l < lmaxd + 1; l++) + { ofs << " - - " << l << std::endl; ofs << " - ["; - for (int i = 0; i < nmaxd + 1; i++) { + for (int i = 0; i < nmaxd + 1; i++) + { ofs << "0"; - if (i != nmaxd) { + if (i != nmaxd) + { ofs << ", "; } } @@ -65,22 +68,23 @@ inline void generate_py_files(const int lmaxd, const int nmaxd, const std::strin } } -void LCAO_Deepks::cal_gedm_equiv(const int nat) { +void LCAO_Deepks::cal_gedm_equiv(const int nat) +{ ModuleBase::TITLE("LCAO_Deepks", "cal_gedm_equiv"); - LCAO_deepks_io::save_npy_d( - nat, - this->des_per_atom, - this->inlmax, - this->inl_l, - PARAM.inp.deepks_equiv, - this->d_tensor, - PARAM.globalv.global_out_dir, - GlobalV::MY_RANK); // libnpy needed + LCAO_deepks_io::save_npy_d(nat, + this->des_per_atom, + this->inlmax, + this->inl_l, + PARAM.inp.deepks_equiv, + this->d_tensor, + PARAM.globalv.global_out_dir, + GlobalV::MY_RANK); // libnpy needed generate_py_files(this->lmaxd, this->nmaxd, PARAM.globalv.global_out_dir); - if (GlobalV::MY_RANK == 0) { + if (GlobalV::MY_RANK == 0) + { std::string cmd = "python cal_gedm.py " + PARAM.inp.deepks_model; int stat = std::system(cmd.c_str()); assert(stat == 0); @@ -88,83 +92,78 @@ void LCAO_Deepks::cal_gedm_equiv(const int nat) { MPI_Barrier(MPI_COMM_WORLD); - LCAO_deepks_io::load_npy_gedm( - nat, - this->des_per_atom, - this->gedm, - this->E_delta, - GlobalV::MY_RANK); + LCAO_deepks_io::load_npy_gedm(nat, this->des_per_atom, this->gedm, this->E_delta, GlobalV::MY_RANK); std::string cmd = "rm -f cal_gedm.py basis.yaml ec.npy gedm.npy"; std::system(cmd.c_str()); } // obtain from the machine learning model dE_delta/dDescriptor -void LCAO_Deepks::cal_gedm(const int nat) { +void LCAO_Deepks::cal_gedm(const int nat) +{ - if (PARAM.inp.deepks_equiv) + if (PARAM.inp.deepks_equiv) { this->cal_gedm_equiv(nat); return; } - // using this->pdm_tensor ModuleBase::TITLE("LCAO_Deepks", "cal_gedm"); // forward std::vector inputs; // input_dim:(natom, des_per_atom) - inputs.push_back( - torch::cat(this->d_tensor, 0).reshape({1, nat, this->des_per_atom})); + inputs.push_back(torch::cat(this->d_tensor, 0).reshape({1, nat, this->des_per_atom})); std::vector ec; ec.push_back(module.forward(inputs).toTensor()); // Hartree - this->E_delta = ec[0].item().toDouble() * 2; // Ry; *2 is for Hartree to Ry + this->E_delta = ec[0].item().toDouble() * 2; // Ry; *2 is for Hartree to Ry // cal gedm std::vector gedm_shell; gedm_shell.push_back(torch::ones_like(ec[0])); this->gedm_tensor = torch::autograd::grad(ec, - this->pdm_tensor, + this->pdm, gedm_shell, /*retain_grad=*/true, /*create_graph=*/false, /*allow_unused=*/true); // gedm_tensor(Hartree) to gedm(Ry) - for (int inl = 0; inl < inlmax; ++inl) { + for (int inl = 0; inl < inlmax; ++inl) + { int nm = 2 * inl_l[inl] + 1; - for (int m1 = 0; m1 < nm; ++m1) { - for (int m2 = 0; m2 < nm; ++m2) { + for (int m1 = 0; m1 < nm; ++m1) + { + for (int m2 = 0; m2 < nm; ++m2) + { int index = m1 * nm + m2; //*2 is for Hartree to Ry - this->gedm[inl][index] - = this->gedm_tensor[inl].index({m1, m2}).item().toDouble() - * 2; + this->gedm[inl][index] = this->gedm_tensor[inl].index({m1, m2}).item().toDouble() * 2; } } } return; } -void LCAO_Deepks::check_gedm() +void LCAO_Deepks::check_gedm() { std::ofstream ofs("gedm.dat"); - for (int inl = 0; inl < inlmax; inl++) - { - int nm = 2 * inl_l[inl] + 1; - for (int m1 = 0; m1 < nm; ++m1) - { - for (int m2 = 0; m2 < nm; ++m2) - { - int index = m1 * nm + m2; - //*2 is for Hartree to Ry - ofs << this->gedm[inl][index] << " "; - } - } - ofs << std::endl; - } + for (int inl = 0; inl < inlmax; inl++) + { + int nm = 2 * inl_l[inl] + 1; + for (int m1 = 0; m1 < nm; ++m1) + { + for (int m2 = 0; m2 < nm; ++m2) + { + int index = m1 * nm + m2; + //*2 is for Hartree to Ry + ofs << this->gedm[inl][index] << " "; + } + } + ofs << std::endl; + } } #endif diff --git a/source/module_hamilt_lcao/module_deepks/cal_gvx.cpp b/source/module_hamilt_lcao/module_deepks/cal_gvx.cpp index 6744285505..cec0f1d84a 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_gvx.cpp +++ b/source/module_hamilt_lcao/module_deepks/cal_gvx.cpp @@ -1,4 +1,4 @@ -/// 1. cal_gvx : gvx is used for training with force label, which is gradient of descriptors, +/// 1. cal_gvx : gvx is used for training with force label, which is gradient of descriptors, /// calculated by d(des)/dX = d(pdm)/dX * d(des)/d(pdm) = gdmx * gvdm /// using einsum /// 2. check_gvx : prints gvx into gvx.dat for checking @@ -16,60 +16,54 @@ // calculates gradient of descriptors from gradient of projected density // matrices -void LCAO_Deepks::cal_gvx(const int nat) { +void LCAO_Deepks::cal_gvx(const int nat, const std::vector& gevdm) +{ ModuleBase::TITLE("LCAO_Deepks", "cal_gvx"); - // preconditions - this->cal_gvdm(nat); - if (!gdmr_vector.empty()) + if (!gdmr_vector.empty()) { gdmr_vector.erase(gdmr_vector.begin(), gdmr_vector.end()); } // gdmr_vector : nat(derivative) * 3 * inl(projector) * nm * nm - if (GlobalV::MY_RANK == 0) + if (GlobalV::MY_RANK == 0) { // make gdmx as tensor int nlmax = this->inlmax / nat; - for (int nl = 0; nl < nlmax; ++nl) + for (int nl = 0; nl < nlmax; ++nl) { std::vector bmmv; - for (int ibt = 0; ibt < nat; ++ibt) + for (int ibt = 0; ibt < nat; ++ibt) { std::vector xmmv; - for (int i = 0; i < 3; ++i) + for (int i = 0; i < 3; ++i) { std::vector ammv; - for (int iat = 0; iat < nat; ++iat) + for (int iat = 0; iat < nat; ++iat) { int inl = iat * nlmax + nl; int nm = 2 * this->inl_l[inl] + 1; std::vector mmv; - for (int m1 = 0; m1 < nm; ++m1) + for (int m1 = 0; m1 < nm; ++m1) { - for (int m2 = 0; m2 < nm; ++m2) + for (int m2 = 0; m2 < nm; ++m2) { - if (i == 0) - { - mmv.push_back( - this->gdmx[ibt][inl][m1 * nm + m2]); - } - if (i == 1) - { - mmv.push_back( - this->gdmy[ibt][inl][m1 * nm + m2]); - } - if (i == 2) - { - mmv.push_back( - this->gdmz[ibt][inl][m1 * nm + m2]); - } + if (i == 0) + { + mmv.push_back(this->gdmx[ibt][inl][m1 * nm + m2]); + } + if (i == 1) + { + mmv.push_back(this->gdmy[ibt][inl][m1 * nm + m2]); + } + if (i == 2) + { + mmv.push_back(this->gdmz[ibt][inl][m1 * nm + m2]); + } } } // nm^2 - torch::Tensor mm - = torch::tensor( - mmv, - torch::TensorOptions().dtype(torch::kFloat64)).reshape({nm, nm}); // nm*nm + torch::Tensor mm = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64)) + .reshape({nm, nm}); // nm*nm ammv.push_back(mm); } torch::Tensor amm = torch::stack(ammv, 0); // nat*nm*nm @@ -85,14 +79,13 @@ void LCAO_Deepks::cal_gvx(const int nat) { // einsum for each inl: // gdmr_vector : b:nat(derivative) * x:3 * a:inl(projector) * m:nm * - // n:nm gevdm_vector : a:inl * v:nm (descriptor) * m:nm (pdm, dim1) * + // n:nm gevdm : a:inl * v:nm (descriptor) * m:nm (pdm, dim1) * // n:nm (pdm, dim2) gvx_vector : b:nat(derivative) * x:3 * // a:inl(projector) * m:nm(descriptor) std::vector gvx_vector; - for (int nl = 0; nl < nlmax; ++nl) { - gvx_vector.push_back( - at::einsum("bxamn, avmn->bxav", - {this->gdmr_vector[nl], this->gevdm_vector[nl]})); + for (int nl = 0; nl < nlmax; ++nl) + { + gvx_vector.push_back(at::einsum("bxamn, avmn->bxav", {this->gdmr_vector[nl], gevdm[nl]})); } // cat nv-> \sum_nl(nv) = \sum_nl(nm_nl)=des_per_atom @@ -108,7 +101,8 @@ void LCAO_Deepks::cal_gvx(const int nat) { return; } -void LCAO_Deepks::check_gvx(const int nat) { +void LCAO_Deepks::check_gvx(const int nat) +{ std::stringstream ss; std::ofstream ofs_x; std::ofstream ofs_y; @@ -118,7 +112,8 @@ void LCAO_Deepks::check_gvx(const int nat) { ofs_y << std::setprecision(12); ofs_z << std::setprecision(12); - for (int ia = 0; ia < nat; ia++) { + for (int ia = 0; ia < nat; ia++) + { ss.str(""); ss << "gvx_" << ia << ".dat"; ofs_x.open(ss.str().c_str()); @@ -133,20 +128,16 @@ void LCAO_Deepks::check_gvx(const int nat) { ofs_y << std::setprecision(10); ofs_z << std::setprecision(10); - for (int ib = 0; ib < nat; ib++) { - for (int inl = 0; inl < inlmax / nat; inl++) { + for (int ib = 0; ib < nat; ib++) + { + for (int inl = 0; inl < inlmax / nat; inl++) + { int nm = 2 * inl_l[inl] + 1; { const int ind = ib * inlmax / nat + inl; - ofs_x - << gvx_tensor.index({ia, 0, ib, inl}).item().toDouble() - << " "; - ofs_y - << gvx_tensor.index({ia, 1, ib, inl}).item().toDouble() - << " "; - ofs_z - << gvx_tensor.index({ia, 2, ib, inl}).item().toDouble() - << " "; + ofs_x << gvx_tensor.index({ia, 0, ib, inl}).item().toDouble() << " "; + ofs_y << gvx_tensor.index({ia, 1, ib, inl}).item().toDouble() << " "; + ofs_z << gvx_tensor.index({ia, 2, ib, inl}).item().toDouble() << " "; } } ofs_x << std::endl; diff --git a/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp b/source/module_hamilt_lcao/module_deepks/deepks_orbpre.cpp similarity index 79% rename from source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp rename to source/module_hamilt_lcao/module_deepks/deepks_orbpre.cpp index 8154746d1b..8d48b981c0 100644 --- a/source/module_hamilt_lcao/module_deepks/orbital_precalc.cpp +++ b/source/module_hamilt_lcao/module_deepks/deepks_orbpre.cpp @@ -1,10 +1,11 @@ #ifdef __DEEPKS -/// cal_orbital_precalc : orbital_precalc is usted for training with orbital label, -/// which equals gvdm * orbital_pdm_shell, -/// orbital_pdm_shell[Inl,nm*nm] = dm_hl * overlap * overlap +/// cal_orbital_precalc : orbital_precalc is used for training with orbital label, +/// which equals gvdm * orbital_pdm, +/// orbital_pdm[nks,Inl,nm,nm] = dm_hl * overlap * overlap + +#include "deepks_orbpre.h" -#include "LCAO_deepks.h" #include "LCAO_deepks_io.h" // mohan add 2024-07-22 #include "module_base/blas_connector.h" #include "module_base/constants.h" @@ -13,31 +14,32 @@ #include "module_hamilt_lcao/module_hcontainer/atom_pair.h" #include "module_parameter/parameter.h" -// calculates orbital_precalc[1,NAt,NDscrpt] = gvdm * orbital_pdm_shell; -// orbital_pdm_shell[Inl,nm*nm] = dm_hl * overlap * overlap; +// calculates orbital_precalc[nks,NAt,NDscrpt] = gvdm * orbital_pdm; +// orbital_pdm[nks,Inl,nm,nm] = dm_hl * overlap * overlap; template -void LCAO_Deepks::cal_orbital_precalc(const std::vector& dm_hl, - const int lmaxd, - const int inlmax, - const int nat, - const int nks, - const int* inl_l, - const std::vector>& kvec_d, - const std::vector*> phialpha, - const ModuleBase::IntArray* inl_index, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Parallel_Orbitals& pv, - const Grid_Driver& GridD) +void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const int* inl_l, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const std::vector gevdm, + const ModuleBase::IntArray* inl_index, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& orbital_precalc) { - ModuleBase::TITLE("LCAO_Deepks", "cal_orbital_precalc"); - ModuleBase::timer::tick("LCAO_Deepks", "calc_orbital_precalc"); - - this->cal_gvdm(nat); + ModuleBase::TITLE("DeePKS_domain", "cal_orbital_precalc"); + ModuleBase::timer::tick("DeePKS_domain", "calc_orbital_precalc"); const double Rcut_Alpha = orb.Alpha[0].getRcut(); - this->init_orbital_pdm_shell(nks); + torch::Tensor orbital_pdm + = torch::zeros({nks, inlmax, (2 * lmaxd + 1), (2 * lmaxd + 1)}, torch::dtype(torch::kFloat64)); for (int T0 = 0; T0 < ucell.ntype; T0++) { @@ -256,7 +258,8 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector& dm_hl, for (int ik = 0; ik < nks; ik++) { - // do dot of g_1dmt and s_1t to get orbital_pdm_shell + // do dot of g_1dmt and s_1t to get orbital_pdm + const double* p_g1dmt = g_1dmt.data() + ik * row_size; int ib = 0, index = 0, inc = 1; @@ -272,12 +275,11 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector& dm_hl, { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - orbital_pdm_shell[ik][inl][m1 * nm + m2] - += ddot_(&row_size, - p_g1dmt + index * row_size * nks, - &inc, - s_1t.data() + index * row_size, - &inc); + orbital_pdm[ik][inl][m1][m2] += ddot_(&row_size, + p_g1dmt + index * row_size * nks, + &inc, + s_1t.data() + index * row_size, + &inc); index++; } } @@ -293,17 +295,16 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector& dm_hl, { for (int inl = 0; inl < inlmax; inl++) { - Parallel_Reduce::reduce_all(this->orbital_pdm_shell[iks][inl], - (2 * lmaxd + 1) * (2 * lmaxd + 1)); + auto tensor_slice = orbital_pdm[iks][inl]; + Parallel_Reduce::reduce_all(tensor_slice.data_ptr(), (2 * lmaxd + 1) * (2 * lmaxd + 1)); } } #endif - // transfer orbital_pdm_shell to orbital_pdm_shell_vector - + // transfer orbital_pdm [nks,inl,nm,nm] to orbital_pdm_vector [nl,[nks,nat,nm,nm]] int nlmax = inlmax / nat; - std::vector orbital_pdm_shell_vector; + std::vector orbital_pdm_vector; for (int nl = 0; nl < nlmax; ++nl) { std::vector kammv; @@ -320,7 +321,7 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector& dm_hl, { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - mmv.push_back(this->orbital_pdm_shell[iks][inl][m1 * nm + m2]); + mmv.push_back(orbital_pdm[iks][inl][m1][m2].item()); } } torch::Tensor mm @@ -332,26 +333,24 @@ void LCAO_Deepks::cal_orbital_precalc(const std::vector& dm_hl, kammv.push_back(amm); } torch::Tensor kamm = torch::stack(kammv, 0); - orbital_pdm_shell_vector.push_back(kamm); + orbital_pdm_vector.push_back(kamm); } - assert(orbital_pdm_shell_vector.size() == nlmax); + assert(orbital_pdm_vector.size() == nlmax); // einsum for each nl: std::vector orbital_precalc_vector; for (int nl = 0; nl < nlmax; ++nl) { - orbital_precalc_vector.push_back( - at::einsum("kamn, avmn->kav", {orbital_pdm_shell_vector[nl], this->gevdm_vector[nl]})); + orbital_precalc_vector.push_back(at::einsum("kamn, avmn->kav", {orbital_pdm_vector[nl], gevdm[nl]})); } - this->orbital_precalc_tensor = torch::cat(orbital_precalc_vector, -1); - this->del_orbital_pdm_shell(nks); + orbital_precalc = torch::cat(orbital_precalc_vector, -1); ModuleBase::timer::tick("LCAO_Deepks", "calc_orbital_precalc"); return; } -template void LCAO_Deepks::cal_orbital_precalc( +template void DeePKS_domain::cal_orbital_precalc( const std::vector& dm_hl, const int lmaxd, const int inlmax, @@ -360,13 +359,15 @@ template void LCAO_Deepks::cal_orbital_precalc( const int* inl_l, const std::vector>& kvec_d, const std::vector*> phialpha, + const std::vector gevdm, const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, - const Grid_Driver& GridD); + const Grid_Driver& GridD, + torch::Tensor& orbital_precalc); -template void LCAO_Deepks::cal_orbital_precalc, ModuleBase::ComplexMatrix>( +template void DeePKS_domain::cal_orbital_precalc, ModuleBase::ComplexMatrix>( const std::vector& dm_hl, const int lmaxd, const int inlmax, @@ -375,9 +376,11 @@ template void LCAO_Deepks::cal_orbital_precalc, ModuleBase: const int* inl_l, const std::vector>& kvec_d, const std::vector*> phialpha, + const std::vector gevdm, const ModuleBase::IntArray* inl_index, const UnitCell& ucell, const LCAO_Orbitals& orb, const Parallel_Orbitals& pv, - const Grid_Driver& GridD); + const Grid_Driver& GridD, + torch::Tensor& orbital_precalc); #endif diff --git a/source/module_hamilt_lcao/module_deepks/deepks_orbpre.h b/source/module_hamilt_lcao/module_deepks/deepks_orbpre.h new file mode 100644 index 0000000000..8b5ebe4998 --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/deepks_orbpre.h @@ -0,0 +1,46 @@ +#ifndef DEEPKS_ORBPRE_H +#define DEEPKS_ORBPRE_H + +#ifdef __DEEPKS + +#include "module_base/complexmatrix.h" +#include "module_base/intarray.h" +#include "module_base/matrix.h" +#include "module_base/timer.h" +#include "module_basis/module_ao/parallel_orbitals.h" +#include "module_basis/module_nao/two_center_integrator.h" +#include "module_cell/module_neighbor/sltk_grid_driver.h" +#include "module_elecstate/module_dm/density_matrix.h" +#include "module_hamilt_lcao/module_hcontainer/hcontainer.h" + +#include +#include + +namespace DeePKS_domain +{ +//------------------------ +// deepks_orbpre.cpp +//------------------------ + +// This file contains one subroutine for calculating orbital_precalc, +// which is defind as gvdm * dm_hl * overlap * overlap + +template +void cal_orbital_precalc(const std::vector& dm_hl, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const int* inl_l, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const std::vector gevdm, + const ModuleBase::IntArray* inl_index, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& orbital_precalc); +} // namespace DeePKS_domain +#endif +#endif diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp index 1414b4bbea..d1914d5ca4 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp @@ -1,6 +1,9 @@ #include "LCAO_deepks_test.h" #define private public #include "module_parameter/parameter.h" + +#include +#include #undef private namespace Test_Deepks { @@ -170,7 +173,9 @@ void test_deepks::check_descriptor() void test_deepks::check_gvx() { - this->ld.cal_gvx(ucell.nat); + std::vector gevdm; + this->ld.cal_gevdm(ucell.nat, gevdm); + this->ld.cal_gvx(ucell.nat, gevdm); this->ld.check_gvx(ucell.nat); for (int ia = 0; ia < ucell.nat; ia++) diff --git a/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp b/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp index 489692ed1a..c3cea5eb76 100644 --- a/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp +++ b/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp @@ -30,7 +30,8 @@ void LCAO_Deepks::cal_v_delta_precalc(const int nlocal, // timeval t_start; // gettimeofday(&t_start,NULL); - this->cal_gvdm(nat); + std::vector gevdm; + this->cal_gevdm(nat, gevdm); const double Rcut_Alpha = orb.Alpha[0].getRcut(); this->init_v_delta_pdm_shell(nks, nlocal); @@ -266,13 +267,13 @@ void LCAO_Deepks::cal_v_delta_precalc(const int nlocal, if constexpr (std::is_same::value) { v_delta_precalc_vector.push_back( - at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], this->gevdm_vector[nl]})); + at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], gevdm[nl]})); } else { - torch::Tensor gevdm_vector_complex = this->gevdm_vector[nl].to(torch::kComplexDouble); + torch::Tensor gevdm_complex = gevdm[nl].to(torch::kComplexDouble); v_delta_precalc_vector.push_back( - at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], gevdm_vector_complex})); + at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], gevdm_complex})); } } From 3a2eb06a32fe3fa33bea666e0e09a7438e25ab3e Mon Sep 17 00:00:00 2001 From: Critsium Date: Tue, 31 Dec 2024 21:04:29 -0500 Subject: [PATCH 30/44] Initial commit (#5790) --- source/module_base/blas_connector.cpp | 143 +++++++++++++++++- source/module_base/blas_connector.h | 74 ++++++++- .../module_gint/mult_psi_dmr.cpp | 5 +- 3 files changed, 217 insertions(+), 5 deletions(-) diff --git a/source/module_base/blas_connector.cpp b/source/module_base/blas_connector.cpp index 69f51b744f..85ea4584e9 100644 --- a/source/module_base/blas_connector.cpp +++ b/source/module_base/blas_connector.cpp @@ -82,6 +82,7 @@ double BlasConnector::dot( const int n, const double *X, const int incX, const d } // C = a * A.? * B.? + b * C +// Row-Major part void BlasConnector::gemm(const char transa, const char transb, const int m, const int n, const int k, const float alpha, const float *a, const int lda, const float *b, const int ldb, const float beta, float *c, const int ldc, base_device::AbacusDevice_t device_type) @@ -154,6 +155,147 @@ void BlasConnector::gemm(const char transa, const char transb, const int m, cons #endif } +// Col-Major part +void BlasConnector::gemm_cm(const char transa, const char transb, const int m, const int n, const int k, + const float alpha, const float *a, const int lda, const float *b, const int ldb, + const float beta, float *c, const int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + sgemm_(&transa, &transb, &m, &n, &k, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } + #ifdef __DSP + else if (device_type == base_device::AbacusDevice_t::DspDevice){ + sgemm_mth_(&transb, &transa, &m, &n, &k, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc, GlobalV::MY_RANK); + } + #endif +} + +void BlasConnector::gemm_cm(const char transa, const char transb, const int m, const int n, const int k, + const double alpha, const double *a, const int lda, const double *b, const int ldb, + const double beta, double *c, const int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + dgemm_(&transa, &transb, &m, &n, &k, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } + #ifdef __DSP + else if (device_type == base_device::AbacusDevice_t::DspDevice){ + dgemm_mth_(&transa, &transb, &m, &n, &k, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc, GlobalV::MY_RANK); + } + #endif +} + +void BlasConnector::gemm_cm(const char transa, const char transb, const int m, const int n, const int k, + const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, + const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + cgemm_(&transa, &transb, &m, &n, &k, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } + #ifdef __DSP + else if (device_type == base_device::AbacusDevice_t::DspDevice) { + cgemm_mth_(&transa, &transb, &m, &n, &k, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc, GlobalV::MY_RANK); + } + #endif +} + +void BlasConnector::gemm_cm(const char transa, const char transb, const int m, const int n, const int k, + const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, + const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + zgemm_(&transa, &transb, &m, &n, &k, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } + #ifdef __DSP + else if (device_type == base_device::AbacusDevice_t::DspDevice) { + zgemm_mth_(&transa, &transb, &m, &n, &k, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc, GlobalV::MY_RANK); + } + #endif +} + +// Symm and Hemm part. Only col-major is supported. + +void BlasConnector::symm_cm(const char side, const char uplo, const int m, const int n, + const float alpha, const float *a, const int lda, const float *b, const int ldb, + const float beta, float *c, const int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + ssymm_(&side, &uplo, &m, &n, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } +} + +void BlasConnector::symm_cm(const char side, const char uplo, const int m, const int n, + const double alpha, const double *a, const int lda, const double *b, const int ldb, + const double beta, double *c, const int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + dsymm_(&side, &uplo, &m, &n, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } +} + +void BlasConnector::symm_cm(const char side, const char uplo, const int m, const int n, + const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, + const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + csymm_(&side, &uplo, &m, &n, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } +} + +void BlasConnector::symm_cm(const char side, const char uplo, const int m, const int n, + const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, + const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + zsymm_(&side, &uplo, &m, &n, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } +} + +void BlasConnector::hemm_cm(char side, char uplo, int m, int n, + std::complex alpha, std::complex *a, int lda, std::complex *b, int ldb, + std::complex beta, std::complex *c, int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + chemm_(&side, &uplo, &m, &n, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } +} + +void BlasConnector::hemm_cm(char side, char uplo, int m, int n, + std::complex alpha, std::complex *a, int lda, std::complex *b, int ldb, + std::complex beta, std::complex *c, int ldc, base_device::AbacusDevice_t device_type) +{ + if (device_type == base_device::AbacusDevice_t::CpuDevice) { + zhemm_(&side, &uplo, &m, &n, + &alpha, a, &lda, b, &ldb, + &beta, c, &ldc); + } +} + void BlasConnector::gemv(const char trans, const int m, const int n, const float alpha, const float* A, const int lda, const float* X, const int incx, const float beta, float* Y, const int incy, base_device::AbacusDevice_t device_type) @@ -190,7 +332,6 @@ void BlasConnector::gemv(const char trans, const int m, const int n, } } - // out = ||x||_2 float BlasConnector::nrm2( const int n, const float *X, const int incX, base_device::AbacusDevice_t device_type ) { diff --git a/source/module_base/blas_connector.h b/source/module_base/blas_connector.h index 090d8512ee..7675429520 100644 --- a/source/module_base/blas_connector.h +++ b/source/module_base/blas_connector.h @@ -111,11 +111,23 @@ extern "C" const std::complex *alpha, const std::complex *a, const int *lda, const std::complex *b, const int *ldb, const std::complex *beta, std::complex *c, const int *ldc); - //a is symmetric + // A is symmetric. C = a * A.? * B.? + b * C + void ssymm_(const char *side, const char *uplo, const int *m, const int *n, + const float *alpha, const float *a, const int *lda, const float *b, const int *ldb, + const float *beta, float *c, const int *ldc); void dsymm_(const char *side, const char *uplo, const int *m, const int *n, const double *alpha, const double *a, const int *lda, const double *b, const int *ldb, const double *beta, double *c, const int *ldc); - //a is hermitian + void csymm_(const char *side, const char *uplo, const int *m, const int *n, + const std::complex *alpha, const std::complex *a, const int *lda, const std::complex *b, const int *ldb, + const std::complex *beta, std::complex *c, const int *ldc); + void zsymm_(const char *side, const char *uplo, const int *m, const int *n, + const std::complex *alpha, const std::complex *a, const int *lda, const std::complex *b, const int *ldb, + const std::complex *beta, std::complex *c, const int *ldc); + + // A is hermitian. C = a * A.? * B.? + b * C + void chemm_(char *side, char *uplo, int *m, int *n,std::complex *alpha, + std::complex *a, int *lda, std::complex *b, int *ldb, std::complex *beta, std::complex *c, int *ldc); void zhemm_(char *side, char *uplo, int *m, int *n,std::complex *alpha, std::complex *a, int *lda, std::complex *b, int *ldb, std::complex *beta, std::complex *c, int *ldc); @@ -175,6 +187,7 @@ class BlasConnector // Peize Lin add 2017-10-27, fix bug trans 2019-01-17 // C = a * A.? * B.? + b * C + // Row Major by default static void gemm(const char transa, const char transb, const int m, const int n, const int k, const float alpha, const float *a, const int lda, const float *b, const int ldb, @@ -195,6 +208,61 @@ class BlasConnector const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + // Col-Major if you need to use it + + static + void gemm_cm(const char transa, const char transb, const int m, const int n, const int k, + const float alpha, const float *a, const int lda, const float *b, const int ldb, + const float beta, float *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void gemm_cm(const char transa, const char transb, const int m, const int n, const int k, + const double alpha, const double *a, const int lda, const double *b, const int ldb, + const double beta, double *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void gemm_cm(const char transa, const char transb, const int m, const int n, const int k, + const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, + const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void gemm_cm(const char transa, const char transb, const int m, const int n, const int k, + const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, + const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + // Because you cannot pack symm or hemm into a row-major kernel by exchanging parameters, so only col-major functions are provided. + static + void symm_cm(const char side, const char uplo, const int m, const int n, + const float alpha, const float *a, const int lda, const float *b, const int ldb, + const float beta, float *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void symm_cm(const char side, const char uplo, const int m, const int n, + const double alpha, const double *a, const int lda, const double *b, const int ldb, + const double beta, double *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void symm_cm(const char side, const char uplo, const int m, const int n, + const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, + const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void symm_cm(const char side, const char uplo, const int m, const int n, + const std::complex alpha, const std::complex *a, const int lda, const std::complex *b, const int ldb, + const std::complex beta, std::complex *c, const int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void hemm_cm(char side, char uplo, int m, int n, + std::complex alpha, std::complex *a, int lda, std::complex *b, int ldb, + std::complex beta, std::complex *c, int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + static + void hemm_cm(char side, char uplo, int m, int n, + std::complex alpha, std::complex *a, int lda, std::complex *b, int ldb, + std::complex beta, std::complex *c, int ldc, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + // y = A*x + beta*y + static void gemv(const char trans, const int m, const int n, const float alpha, const float* A, const int lda, const float* X, const int incx, @@ -234,6 +302,8 @@ class BlasConnector static void copy(const long n, const std::complex *a, const int incx, std::complex *b, const int incy, base_device::AbacusDevice_t device_type = base_device::AbacusDevice_t::CpuDevice); + + // A is symmetric }; // If GATHER_INFO is defined, the original function is replaced with a "i" suffix, diff --git a/source/module_hamilt_lcao/module_gint/mult_psi_dmr.cpp b/source/module_hamilt_lcao/module_gint/mult_psi_dmr.cpp index fabe3b0773..efa51ec4a6 100644 --- a/source/module_hamilt_lcao/module_gint/mult_psi_dmr.cpp +++ b/source/module_hamilt_lcao/module_gint/mult_psi_dmr.cpp @@ -1,6 +1,7 @@ #include "gint_tools.h" #include "module_base/timer.h" #include "module_base/ylm.h" +#include "module_base/blas_connector.h" namespace Gint_Tools{ @@ -60,8 +61,8 @@ void mult_psi_DMR( const auto tmp_matrix_ptr = tmp_matrix->get_pointer(); const int idx1 = block_index[ia1]; - dsymm_(&side, &uplo, &block_size[ia1], &ib_len, &alpha, tmp_matrix_ptr, &block_size[ia1], - &psi[ib_start][idx1], &LD_pool, &beta, &psi_DMR[ib_start][idx1], &LD_pool); + BlasConnector::symm_cm(side, uplo, block_size[ia1], ib_len, alpha, tmp_matrix_ptr, block_size[ia1], + &psi[ib_start][idx1], LD_pool, beta, &psi_DMR[ib_start][idx1], LD_pool); } //! get (j,beta,R2) From 7ae18a570ebc2c918d309e97ce08851ccc770552 Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Thu, 2 Jan 2025 10:05:21 +0800 Subject: [PATCH 31/44] Feature: enable init_chg=file for metagga (#5792) * Feature: enable init_chg=file for metagga * Tests: decrease the size of charge file --- .../module_elecstate/module_charge/charge.h | 2 +- .../module_charge/charge_init.cpp | 41 +++++++++++++----- tests/integrate/101_PW_15_f_pseudopots/INPUT | 5 ++- tests/integrate/101_PW_15_f_pseudopots/README | 2 + tests/integrate/101_PW_15_f_pseudopots/STRU | 2 +- .../autotest-CHARGE-DENSITY.restart | Bin 0 -> 18176 bytes .../autotest-TAU-DENSITY.restart | Bin 0 -> 18176 bytes tests/integrate/101_PW_15_f_pseudopots/jd | 2 +- .../101_PW_15_f_pseudopots/result.ref | 6 +-- 9 files changed, 43 insertions(+), 17 deletions(-) create mode 100644 tests/integrate/101_PW_15_f_pseudopots/autotest-CHARGE-DENSITY.restart create mode 100644 tests/integrate/101_PW_15_f_pseudopots/autotest-TAU-DENSITY.restart diff --git a/source/module_elecstate/module_charge/charge.h b/source/module_elecstate/module_charge/charge.h index 0fe89f2dbb..926bffebea 100644 --- a/source/module_elecstate/module_charge/charge.h +++ b/source/module_elecstate/module_charge/charge.h @@ -145,7 +145,7 @@ class Charge // mohan add 2021-02-20 int nrxx=0; // number of r vectors in this processor - int nxyz=0; // total nuber of r vectors + int nxyz = 0; // total number of r vectors int ngmc=0; // number of g vectors in this processor int nspin=0; // number of spins ModulePW::PW_Basis* rhopw = nullptr;// When double_grid is used, rhopw = rhodpw (dense grid) diff --git a/source/module_elecstate/module_charge/charge_init.cpp b/source/module_elecstate/module_charge/charge_init.cpp index 5ed8b098d1..6a8e59bee8 100644 --- a/source/module_elecstate/module_charge/charge_init.cpp +++ b/source/module_elecstate/module_charge/charge_init.cpp @@ -39,7 +39,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, bool read_error = false; if (PARAM.inp.init_chg == "file" || PARAM.inp.init_chg == "auto") { - GlobalV::ofs_running << " try to read charge from file : " << std::endl; + GlobalV::ofs_running << " try to read charge from file" << std::endl; // try to read charge from binary file first, which is the same as QE // liuyu 2023-12-05 @@ -99,22 +99,43 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, break; } } + } + + if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) + { + GlobalV::ofs_running << " try to read kinetic energy density from file" << std::endl; + // try to read charge from binary file first, which is the same as QE + std::vector> kin_g_space(PARAM.inp.nspin * this->ngmc, {0.0, 0.0}); + std::vector*> kin_g; + for (int is = 0; is < PARAM.inp.nspin; is++) + { + kin_g.push_back(kin_g_space.data() + is * this->ngmc); + } - if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) + std::stringstream binary; + binary << PARAM.globalv.global_readin_dir << PARAM.inp.suffix + "-TAU-DENSITY.restart"; + if (ModuleIO::read_rhog(binary.str(), rhopw, kin_g.data())) + { + GlobalV::ofs_running << " Read in the kinetic energy density: " << binary.str() << std::endl; + for (int is = 0; is < PARAM.inp.nspin; ++is) + { + rhopw->recip2real(kin_g[is], this->kin_r[is]); + } + } + else { for (int is = 0; is < PARAM.inp.nspin; is++) { std::stringstream ssc; ssc << PARAM.globalv.global_readin_dir << "SPIN" << is + 1 << "_TAU.cube"; - GlobalV::ofs_running << " try to read kinetic energy density from file : " << ssc.str() - << std::endl; // mohan update 2012-02-10, sunliang update 2023-03-09 - if (ModuleIO::read_vdata_palgrid(pgrid, - (PARAM.inp.esolver_type == "sdft" ? GlobalV::RANK_IN_STOGROUP : GlobalV::MY_RANK), - GlobalV::ofs_running, - ssc.str(), - this->kin_r[is], - ucell.nat)) + if (ModuleIO::read_vdata_palgrid( + pgrid, + (PARAM.inp.esolver_type == "sdft" ? GlobalV::RANK_IN_STOGROUP : GlobalV::MY_RANK), + GlobalV::ofs_running, + ssc.str(), + this->kin_r[is], + ucell.nat)) { GlobalV::ofs_running << " Read in the kinetic energy density: " << ssc.str() << std::endl; } diff --git a/tests/integrate/101_PW_15_f_pseudopots/INPUT b/tests/integrate/101_PW_15_f_pseudopots/INPUT index 0e0bc273d2..d7e2a76324 100644 --- a/tests/integrate/101_PW_15_f_pseudopots/INPUT +++ b/tests/integrate/101_PW_15_f_pseudopots/INPUT @@ -1,7 +1,8 @@ INPUT_PARAMETERS #Parameters (1.General) suffix autotest -calculation scf +calculation scf +dft_functional scan nbands 8 symmetry 1 @@ -23,3 +24,5 @@ smearing_sigma 0.002 mixing_type broyden mixing_beta 0.7 +init_chg file +read_file_dir . diff --git a/tests/integrate/101_PW_15_f_pseudopots/README b/tests/integrate/101_PW_15_f_pseudopots/README index a160db7610..59e8929bfb 100644 --- a/tests/integrate/101_PW_15_f_pseudopots/README +++ b/tests/integrate/101_PW_15_f_pseudopots/README @@ -3,3 +3,5 @@ This test for: *SG15 pseudopotential containing f electron *mixing_type broyden *mixing_beta 0.7 +*dft_functional scan +*init_chg file diff --git a/tests/integrate/101_PW_15_f_pseudopots/STRU b/tests/integrate/101_PW_15_f_pseudopots/STRU index 36abe7d942..3c51d489d1 100644 --- a/tests/integrate/101_PW_15_f_pseudopots/STRU +++ b/tests/integrate/101_PW_15_f_pseudopots/STRU @@ -2,7 +2,7 @@ ATOMIC_SPECIES Ce 140.115 58_Ce.UPF upf201 LATTICE_CONSTANT -8.92 +6 LATTICE_VECTORS 0.5 0.5 0.0 diff --git a/tests/integrate/101_PW_15_f_pseudopots/autotest-CHARGE-DENSITY.restart b/tests/integrate/101_PW_15_f_pseudopots/autotest-CHARGE-DENSITY.restart new file mode 100644 index 0000000000000000000000000000000000000000..826ca5085016bffbd20704d3bfd2468b70a1043d GIT binary patch literal 18176 zcmb7KbyQVNvF&;t5<$EpD2Sxpfq|kJC@8jqg{asqb|CVpSQvN)5JgcDKU*vm z6%jEgDT#MCXZC$}-S^j>n`vKQh1recCYez>1KDCMAb}=l3A{(>?3H8Gytga|QoiWKW0Ji80F!} zF2In4rk#C@{RDNJEQBHqI!KU@z5t^y!01Z|MZN%|FTm&vF!}-v3HVVWMqi*uUx3AZ zLI0wiWPDLCUT-Lmdhml7Bx3M|7<_@`7clw-3<;#<5B-83{Q^e6 zfYC45qA$Sc3o!Zu3<=5s28kG-L833f=nF9Vf_&r$jQoHh0Vi@GMt;y^9!TT|jQpTO zPQZ|W2W=4}C+LwAFxr7cPLPnGEb0&=59pBxF!DfuVr&6p+W|uY9>7A;$qyKG@Pl&r z3>bMpA`f6lXpcN-i+ZdlltWIyXa^WMK|+GEfRPjPQ7_JkZHIEm4;c9YV|l=kfCnV< zqYm}R4|;Kah%Mwn0)E86j~L1z20O&SjTj_i;72UZ4}A%GD2KiPqc6$23bRD^=nEzC zpfAv)FTm&v?9dlr^aU8(1sD=Y_=)>K9Z2*A7<~aoUyzUdfRP_CB;-JTaX!HK3=;VP zBR}Yn6EGyK3vyyP)FUV8F%Kkif`o+aKpxCTJ@SAac>tpw#2DiY65{|E67T>PicVjE z(HCIIhaZ%~XTZn<5)#@V59pBxZP5nn4CRm$Fxmlz1oj}26EJcDhJ3UU=Y%-GGbG?g z4E%_pJYujz4E%_J8!<@4;`|V2&_g-o2aNoHA)yWOgG7GRp$+nb9{Ir*`6b&d%C z23zC=3<>pE2K2}Y5;;+a_Q)yTe!!5x1~760#`1vShc+M)BPTpV!aU@GXXL>$Xd^C> z2PBpSjAa319ncoa1IA~F6C}`s6pGIJ07g#0$O#xYp*$q8K@2vC(FXD%fgUj0gG774 z;`Ufa$cF@F0b^OfSQaFf1uR|`%E1rvAt6Q{&?66EucaSZP=>V>cq!!xW8LBbF10i(TmK45$XiS~fS?S+s3 zhYxJAEMP1P63YUHgmn=%SxUSvh>-`%ArD~W0SO81kq2~G7BH3tjAa2sg0hgHER;cs z7|J4svWSIHgs}`r7z1Df63YU{vVgHHU`S{W&w!y$@Iwp|F>+#?Q7<&jx&tR-utf|KF>oRlLJp61U`S|#JfMdk=%J2~087q07$1y1*q{zE`UO2C)FUUv70Y11 zfepqRG4g;O66(cyu>O!ISy#|u8N}ie`9TK>^N=5&#rZKlP!8)480#(02N<70LIOU( z$PXC#0VBTC6m=GgB=#d{V@S}gIKVslVEM7;@pEwZOXa^X1Kq3$7fCn%n#Ns?yXDEl9 zfU!JagNDa`K72OaVQMt;EJ{1|7UTI35bwgoV@ z0WkUk3<;hgp)bJb3o!Zu48A~uEwl>~V2m|jj1gdQZr+-=hde9`z7T^i#NxhS-3WTH zMPGo?mw0`V5AB6!qOzC=5`6(iUx3jU34XR?Ri&v9|tN6I3I)30$CxyuXl*fSlWFYulDbeA8qryGyN85hPq^n*G;lE{}V zFUe0O{L>_@&$(BQ4$0Mdqdxz#YY_EK?(fl1ukEM3ci83Lg+X*$#r>?_nS=B6i?;=s&0AexYW;j{*vE&YTRg&U){}X zBNyfsEj2oKY@$CYyGr(Cezo@NJG^=@SsF;jwav_!v{>FRKhN{HO==j~*(dUqyGwHJ zB`*cdE{ENz;?L$ufz9Q)HrK9cc8UJOaqEVC9MoOfZ|>BOQy*sZqib3H^yD=9CZ6&j zE-ZdgkAjr8AM_v_n14;HM`OZYgc22*nRR1^4$Eta%-VJ4mKXUJGH+*GuBTtj{lKTI z?3_qc!v?*{1yX)Vi=@B)`P7g6DE~ciUPO9se2Hqp&L!S-*}?Pu`=8&QyZ_UVoGXU{ zNqRY7zeMk!6VI&jr?%_(_=S1CZ7q$lpq}&i{(Uv4Tz>?x#kEuQBdRuUAhL*e?3u>;2B*%C`x=BxCx%-qFvJa=rR@ zsi{?VBgxtIo&C48`}X30S_A3+gZ%jNi|g=EY?dYqTKV{L^1an!-+PgA*1p8Ouj~JD z(4hOi^ZZVKFL)=}cc};+aa=OY+fsJ9&RQb2d6}&JU!gS$$^8B^OFpc#$er z-wNYo-G3h$lMSpr!C@07%6#&r;jF!@xT8m#H2&j$kL2UgNd6tCIW?I0PUYh@X=;tz z*a5Cos)lcGRI;^`cZV+xWAS$K8hdM@dmr+b^~W{ea~TtMnp5nr^)bzTm#gWC`tw@6 z`L_S=%8L4X&BA@#-`z7HZ`gRSpxb7@aq%ackMrXt_JP@|(9eOi=_@~;+!xgh+hp%W z_OkY^T6ukrtal)-VE&JMzA+^;+JWMDUFlhuvnk1k;&|TtI`GS#y&)9G`|zD#1t}ix zbRByi{+&8WC(F}?rnC1Yc30-lvcb$$^N4Exqhqvh$HX&ir)A0r`_$fGW7_~2f>CuFRG4t5}Yr3 zXiU7On_@+xS^c8bchtruc@rl#-!vWn`j6?p021Bxd*^tL+WtXnuxmI8Ypd>jUcUX( z?|^)FiuMs7`mfVl<4ochUzJ^EL|Bs|$zk)8#k69TrRR)9^V2fz%%HNR+GH1-pDsm2 zmJSW+N!GLZ;e*=<&aByus$S#gr~4X5xBf`erUTe`E9`R0$#tLy`LTCmXS`y%-?bSU zCQbi%jPHCdTV=YupL-8_q=SFo(qy-`ygKheyD+};w%1$ybW}w1(OkWmXI)ME5S%aL zkDlGA7OF#rv-z|OO_~35r3U3#dxmQjPr6y7Po}f>X5T1z^fp4CK3U7pH~AY%WvQ13 zE&R~d8LwGA1#bdRxl>u2Z=Wh!?&dmH-_fx(YZKhB`f%#>I&Hte*>)-YeH@7Ll>9rH z2EFr+IY*dSGzvuZYZI6T^ceA*!+5Gq39WBj*@q^xcx7eCWe1Nnq*koFPVCE5N^8w& zpC3H`8ScrGX}MPPwKebmXj#tPE83Ryn*HY^GHGSGJ^Q;Kt2v`h6Ip#!eyyim_)kF| z8*i8IQSI%EJ;_Yg-YMH=pMRobMdX;jyv7U3(oa<>&Yy|ulUIlL_{&Aj%2?|4S=le~ z?99Jb_gzWo6)Cp}`<&eJu&{<&T@BL5kgw0_;{lUXZ&*;jcJ}=lwJPPpPz^Gh&EK|) z)f=o9Ig@Nwzs#rh=TgcP$bH5?zclz>$y}YmoKSrj@N}d5x*A=o&95cTh2;5tcL3_;p@}deWQi(WGNDQm9OuJ_F~)N z1!iQ#5T5V-p^wqIGpwk6ZgVGpd!trO{bwZ_{)o4~F!J5YQ*-5LyFSk+=ey^a{AdmG zvR`YbKi@p-uXcO%===fvd>$v0JTgt)m)_XG^TlpnS@I~;oTjqx&8J>32c}lmbF!?x zdifEpKff!IWEKzK6=MwajvEjs7O%lQ&bsApv!(ego}U|=(v>zl&>6;jeOe;FY5Z4!qQrd}Z@r#c{8b@oTyh3)bJy8|a+I3>zBH#>2|t z5o8&4q$O;;gnp_rNq%8TTUq@AdMRzWyF{86Iq>5xeU!K7@$Z&oAB)eY#(=lBnKgom z%)azs(}vMmtpaoAZ-;Kjc|Ruwx|)r5^Rj-w3a*-n);}&ScQ+i)uoAs5?=()f6w6zY zj!6D}%8?nAaiyO*HDdg?esh+6$EeV+%>P`O343Opb){t${QBY7p0W@v#fp$;*rWbS^P^0oJzM%MX5Kj`1%mI{6*qV*xo{2RO|)P>Aq<7uXJ{4Sd+ zNAiHhKV(&1Vs^X{ne(0RAD^TdIa#S)NX9LG{C?Q}u6f8F1-gul-{{vV*V0l|DAwmi za9!_@O)Y|UHXicqE{>a~@{OC#{H0`X%NyCJgZqz-U#kLDE1UIl9*;QEKeAa zo@~AhEq2;CD9nm1xXb$w@X1>{dWZ(`V)2l64n0|Qqn4wrd|t-S(bJn0=~vdC&pW?P z**ijq7P9=S>vrW2uP~zptbAaH-Pfh>rRcx;Jpa?EmR~jrI&|qdKK=)kLxwp%lBYi{ z`2JBnZR8kfYfN^s@jFW~CgGDy9rwzPf8WC5f+MH=c_KJnE zSv=gkL|+~AO^zO9@rpX*AC!7YpJuWA;+q#vUixK9!&$rrOFx>}zfPBC zEYPIhtiHEvUp{)D@ts@A%D;{&S$RpTK`@u~cl7bb!zsb-Tr3+8%5A-hEN7Q;t!%tx zd-O^fSfxQ~+4wHC(HpeH-ijV#5vwI4t=+fUvDP7*K96{ zGa-hRe7r_JEl=7e?MPO#`FgUu$GfQBdc=Y4Pj)BP{)|ibEO^W6_kLn_p8qa&(fj4N z*Yek&I7j;R9=|`4-MYb~Mq7h!tL49cK3SeRuDQDOp7O5F{>{wjt~q9u7Kvr!x3GO~ z?vAB)bP0>csOYvnD_N06{y=#B{n}L%=9h_H+{_EdNtB}`>tyi%2Wo|hX)iRwiLS1Qr4a-`6bWS zM=6o#ti7gXBj?*|DiPfkd_1-+>u{YNgKiH}!6X{6Jg6kDpm_8;3#+X8w`v!y>+ zeMYr82S?4R6cn-e9GxpozB}`L=ZfMqq-qUm z;0gZyR)2iG=T$dTy0w;X-yncYgogGHeTzx~ZhqY&6 zevcU?kIm^*Ha}5%t_N)lkdn8L$)6d{aX++ z#6>s3 z5?Oy5s0Ti$5w=8u?e|`uUGr%|NhK%E*1L^Lj^n2{{Sin7^YN{D?0UU!N*5x>{52N! zFx!7rj~-|Bt=X+Gbw*o;AOQD|!lj{e&t^e(D&N1BM~>}|Qh3IxhW_d7|1iVm$YsWr zT;o?ho_k|1+uGJ^oocZ$vEo>>AcCzI zHaXrM(XzNw5Hf|2uZ-pMq?}9*T4liVUozeAR`S+>{DHkynSuA6FOlF)#%Xg{C-I}?Tw6~x+c|S?J2tQENykD9Fc#;x3~7`L)pLs z=LNHF@czf89XD(+P$t<6cz>I_s&QeHs=1l0yo>C-mxHoCa^`IP;*fbQq0YjTJh0{0 zFN*Wh*K2EQ5qq}Y+Bf3Ngq$`zdVL%J{{Q50K&=4dBfYqJcEKkpqQc_0?n=M@BedTOjW{&VLkeZ2YPm zY<^!cty(aTjql~dUT1eTQKmTle;>J8y2kVZhwsNq@2eLS2guRU?ESfY_4bW$HBB;_ zy<`I5GV z@bhW@hb3VZ*_ERC);~7R^Tq2YqWQSrs9_FgEt)x;uPZLkyF6jUSx%PC=Tp+O)zgIE z8=UV4d|6Uqc(DsrVc&!8w=h%JNZJ z4JQ;u-y^9M?fcCcQZ$D7vzU|JYr+^ga&SLC-@Ow|u(h78MT^<^eA%L~%x97u#qZ(b z`c*M;WqR}+w(Q1V|Vv#GAFoRxLA6rSG3G2 z4%ZVu{;CfTtFIE^dc)qNHq&;z0nK3Rkvf%I=iG(oDH8h&$^8eB*q=!5Ux>v1hDz*z zIEnocmDoQ??yp4aGxsc~9K$u1#EPxodiv@#=Ve)u2DY9sEblU8jFYZt{a0VmlG0VU zKF0N7@mBZekv8rW*N-1tACzt{Rwlk|eR<3AL|74Vpvp4*{JpqOcm0{OZ0Szc-=mF+ z9)?#~(}nDNGdbtqm52T_BK_F+ChX(Pg|@kFq@AsQ&Ceu6KkjfLC)oP9TmSh>e{6K8 zpV|KLO^3qqd6D|0={GJa?9zvKw|wZxjrWn>vt-#z9$mve=4y*;0Ce%!<^BJ zl@Dz-q#*04@2<|_&?CRYX9;iZbe^P2RCu4(VhXD64WLW&6i@rv@88U#LjmvG;Y??Z>INpDT&>pZc1QSM^YJ z72T)gRFy8)D^eo3e~mD>d{1fo9Zs6|ffr>BQDq5=G>@U-O~w4o8aTol}iyVA(WFg6A1?UDHl% zd16Z|S$w>bK7J2vSE4Ied(x6erSw&iA+uR~lZWn|bm*Q9kvNZ(Jg+1Y=b1#}yi@W# zl#@6wl{`7UobT}9_JH@)1ut|_-7c;1(l z^|$8jEp>|V=&?M;IidKSAeP0$H2+6=kZH33&xd-Ala7Bqy@d;9@2}pL;hT)CY6MH! z`O@A}JIj|cS|pV17uIZlHax0HpWyjal-|Dl*WJy?5w<_FbsSb$B0T?C%;G)#f`QF<*y_Qsc+>Z*Kg;;_!0G^FJbS zJ}7y9$Vr?p3M9@SCC?{GJKK*0%hZqZo25%`vv@5E-dx!3Bu(zHcvPHBxoKW&Mk-jm zW?j3bhLd z(zlF%`nf<&i;u<>&v%E7Jg0Y=bfI|udr9x8tN(-+0iO3cbl014>cSTRo*!SiRA~N> zPAiA!TL$Ns{A03Ql`LZC&(yrp?zo#g8Nkk`PbgMtz8u|+=CbxIx)}7YmAt9QpUSqG zGoETX(|_3gLBg3CZKH?Si|%t9*Ik&O*-w??`FXC7yzFyMi~M5qnS;Wt%Z;6 z!?|}$JZ7ni&gYjzUSI4d-HqO4<7IWeY*xw{1LDQ@?=laYY80##DZU?D&P^#T^0lUG z+5O7QURp!PN9l|150=@jy_jQTExKMb>9a0$ zuO&ZT)7NF&d2iC868E)4;yzdMzE|=-Sn|GD@;;g3{V2O{7M)+R`)JAgYASJ`P4GUb ze=naoc3*smHEYkLI+G9A!?cJrJC9UMcT(LEWJ@;UebgzdnsrOt1$e)%bim(k+64>I zebv`zAd=(V>k0!@$C|sUBTu9|JyK-o#~ftc>CR-j`ipd$m>7 zincTRgfG%APivJ4-naGb7#wb)Y(wxqZuK@D`7(Vc(S2Rqz&F=-_OKP*=UEkHj-Q$D zNf)yD(|xRlyZtj2`p+|dz8F8aNB*)UCS;r`U!O5$8C5oUhV(T1{;zvx)qnaI6=K7_ z$L6P;Wc$uB65U5mzjS8&8XIFO&G=7Fw|o{hNSo@i_3~478MP->4czHR{Cc@K@=wLx z5+f42gFo-E9rns*MT##8=*Hid>Q;w``YJ1vt}H&=#!n1f+Ao2VV)eBedq6PcZVlJ- z9M2b{F+_X!u5MJ~zE<)+mrC6CQi=Oufy8|=ee28f-*6r(dn?a~>ag|oiay%4hHjqp z1Z%I#+1DqM?irIatiQUSc%^LVCr78Scu57s$Q!D;Q^MkDv*l9lsD2hSgtaf^Swq+i z2V){&_vK@9j=KAe>_#K7zl`0wJaBUp-M6ob-f>PRzFu@6XnG(hf4G;H=)T@1rkB?9 zb=DN`^B?Rk`#B@M2gUc*`en6E>5Mw=5t~0JB_) zysgb2xjv%%u!G}@H0Q@VivBOr`$3n20ReiV|5L0VWF$Yh#*s9!|68oPd{5SEz9X5! z?r-unH#*p~|L^=&_uyE-$njfXIOjFN(omb6k(P?SI=$*(=?6cj!N z3Q#Hw{*TXrz_q5Wlu)6mrKN?Qe#_uy87zTP8?prn^`j)It~5cNDJdfWTk-{%d;un3 zfXNqNN`UDZB>4hNz5vVmYAtz&1h(W0F!=&ZzKBnv`eRSNKu>uf$roVq1(vrWBqY$wa#FiM zPwfH@@&%ZD0R}tZ0SrIF5-7!>g9Q2H3o!WtOui&g>I*RW0!+RDlP|!KfS)8`@&$VG z1z6S>^e@@T$Cvc7^@j4K2S0>C5(Zy{!53j!Uo@T|kNg6r{s2sV0h3?AkU+}+$S>&0 zFJSTunEZk*`2tM70Fy7kkf0o3kc84hNz5tUi$R~cl#19w}a1sY$;s-tDfh2yw z#1A^+1Plpy$d)j1f}S`5lO0In1PKYsl8!L(fSz~&6A$z!#TGEN9WW%|0W1-J_yL0s zeo&5{0TT~M;sFea?1_hLNl*2Ja>NOk>;MxdNJvl?FmX~o>18>o?NE;R0TVx9Di0VE z@PH(K(vhC{K`+Y>v4uQHz)u+X2}2peU`H6Z34$B~%LkaA zK@vY;;s+gZ0)|9&AxxN13zIXPZ;b713zKlCJd6WEI-5<^iYoY0TVx9NMu9&Ac>!JWJCO*Cw{Oce)%>_ zvi|Ucp11(R4>(B@CVtQpKjaZVV5&c0NFd=y{D5V7DIX;91D54)BYCEL;s;wuq$hsR z6Td7UV0s2g{2(EbPvQYR@sKUq5D(}nkLn0EFm@#34=2Qi;sX*A*Z`KbA-|v}zf=zF zp&UH}hD3Ve0UhxGCLX|GOZF5CCAz{ErO zWDoHK47S7x7!v8J4CsjyByp0C?1@vh{eU5X4PfE~OyvQ?k8D5^CQf*UM0vym&%{Gz z$VOHY4@fEtn92gCI*=`t2TacpCrF?NDG`6_1DH4g6DMHcgz}KUhA`L=CL73y1bV<^ z50dNw%i2>NAs-Ty1x#fDQ(2Hy7O-qtC-b2vVh4B zF#O0KB>l)9p2?o7 z)?V`XzxcqG$^xdcAgL^1NK_X|lNDs^LYR1<9Pt1q9*~g8o_IhJy;2Vsze zi63l;A21}cA%2j=PZDeZ6AxhG0St+3hzIoW13lCc5@7jxhvGxA2OH86CcmJEM0(1 zNJzj3nD_w`KVagQKq)_9;s;E11Po>1nG#{*2R-ov27dAn^(PGcgk|dpI?_v^6azo$ zfuFD}Ka3&JLq73ST}Tg-F!6&8B+?T9iI40hX40~h2aI_ENq?^~YA0hw2ICh!ZfC0Zg1AiIa2^)t`Lg1idULwH?Y4KVaeqOk9BB2Zc^>)$aezO9P%ut(j`EC$zy(V&3NZsMUy13@D zn@1)vr-A+TL~pT^di{kd4Heb>0rg91axC$pG~;XLQI_PxVp{sr?=dLDha-->Gv{QKuT z15v@N{Ij?H&KmJ@vy`~UQ*Q-mC#Pqm7WL*=&fUu#;BOUJtFUus^LECMpHKL{hSJg_PuEsf4)PApVPn**CuF>R$IX$)o?&n&!=JTJW9)Pb1vb`5{A!v<4tHrE>z zjBilvXWbOS!?xQxKk9QUAY%Tkh#a4hY+!`Yf7iQ~Y<3TJXFG9xy))aj-rc~9U5gOn z>!3Hi?ajklEcu<#z7eCk4YT|d#%3UY?DM|a3thul)U8t^a`Zn3RHUztpR3@-tCWQP z$V=8*-nZG1y;~~8Bd*(EuUe&Gp239r=nj6P5nk0-{#o9h$?@?==7P`_(s1FNolj^7c30mEpbEP#mx2`sHEwD0z%f2yM`K6P3v#a<%l^tv9rjy;3oi-Nwx8L@}j~PDw zm=nH_W=*Q)Uv)g$2^_DP2dyGryz0sd(f=mPtnkeK5z_ZPTIKEG1Medl%?C^OdLOHN z*M(c*d_jD#@O^!&J+-J%S(mHfeB;;{RIeTtB%P1C<^FdnAuWoxnfIU5kHY+F!yIvbGGFkn=aYMFc|Nu$ zYsA8L@6^4xCARm($e#6{-W_>1j<;csITQPi@?(~MLcECYxwG)Rq0ZOng;ebH@Drm z^JcsY+V^yKYti%9<1;W`(Rv?il6SV{cd)%#S((|pwmETstnWPMu6Omt-z7aR%-?m1 zih)bJYVer!{LERS0t%i#`stC~(U+G`dGtkf*YAM6NluaR+LruEu@H~n8S#40hU@X& z*k1t;G#jhuyYm(tU-6k<<+pRRxF6Opu%mO;!hueFKJp*`)Sd--S@1YLVSe88Z$-+B zQ6AhfJ?~C#BM;botn}>iATPcM$ICjUmee)2Iy`-{&_5P^bc(a;n#321g!-rs6#aLh zK%d>1DAYG2?#|V!JR7buTi~l4*hWvu$Aw2O7M{h!rX0>lFy%>;1$&Kyi%aTFL~IYX zFV@4)f8z}iOPnS6`>FgyrTDcYGs5vYU1OSi_T;bPU8@DYwx4>X%!&4A*7`zwMs@q1 zT9<3XGO@iSU++D2FLz)fjK}hToU*>_4Owd(f46_fDj!Ky;~5ywH8b7kyzOkwCt&|S z^6MKEv!We8F-fTJ^b2aAme!cD8OWb$oi}xtuLbKy^Ph>k)rWJ2ED-zqn(sJm&#|_= z2**R&s?A{z|9%q^6?~!X5)Y7bUncJA5CW8ztr>)plb4V7_v{ z1tX(=d9m(T-?{$J_ICVa%si0aETU4Rbjp`4ME|{l-rnmn&xf7C`MApE{I7{hw(Kdc zZ@P`!XySgkLUa$?`!d$%mr}Vh8-eSae|E(CzFk!*I)nb3#ofarKL!+4JS>qPOaqq=-6eoxQ#UNhEUt2+NXMfe_BBrO_b(XCnB0sCvJ)!4#UdQBpV z=luMc`?GdvN&6$X!_&OG3(TbLzj>tn4bO3(#TFQ!MfUHe)yHV_6Ij2$z8J;VHnoVl zVtfkj8+5a~sVSY0KK7by-DcfKu`Bw2b-7@EQo|?l6Rh8`Yfqf~Cs^?`tpDdz(Pl5+ zH;6p2eUEg8`kk53C>nt6FTU6PiB6UdJBI#GJR9mA{kJ8j`1zZ-=?^rpXAdyG=Lc2a zGC0(Vf5Z51+&sWFX{tWkg#FXFW?0-u9~E9dK^VW01%~^r!>$ zeIheWAKFFV6H|MOf>YeS#kg|n&zcj#CDUt__&6NDH~#aww5{-)*agSSS+kchU$ef7 zf1VWP%UNeHZ-|h*uVy$ubi7&qx7+IW{2<2Tg2|SaM+-lQeXx8|O3VuLgIe3ZR5yJgUW4T|hrdiIiZqnIpPM=<9=~_GN$i#?jE`PN>5vsd^&5#3h;e5S*)noXR8JKXQr?obN^IR zbJ4hy?Oim=Tk&rAejJV7+FMssoB7cA4ome7 ze5%ja<9KVhbZVA^;W3diwy$bK?GRNBOE&I?us>NpVDR*SC`Eo2<5k*J)O$~%C;N@x zx0z+dt%qvauM!U zyLc~tFV0oIak@A`k*$pv`m-`qWYNCFgB`?pj3}-QJ#n6KQ;bLNvpQSK!<_g4^!MM( z_XYoqwvoP%rJ2<^lUMn3n*W2^c4#}t%a{9NeRh^B-mM&H%V%OdUO&0sC+?IMYm48* z=VlAEQ+1|V@H%{7QzNZjt&DVFt8u)KoR&E5b*eu5 ziR*=oy@r1OwzuRnF`n^h>!&PjZN$1@eKN+TYfeBjEk_g>@S>7c~z z8q5dhhk-^J|IT!LB$^&0jEBst4-4(88^jl}Kh(N^oD*zo$qr$>78Fm6%QmrK!?FI! z75z(XgB{soTpwkgzc#2!$$`C^C%oT@^>&N1yE*e~XNC5adA4}&e(Avq^Mz+!l}pb~ zo-t!J3kCbTjm9aZy4p+!>o@Vj)cwQf+p@vv?@e;A9KBEv7J}n-`frwHZqkt*!1>-~ z`qa7CF1fR5;%h_By zpZwUcE&R^O_G~D|JDN|+F`jP8KH>OSaWE|)N@T;+MhX2jaAwqwO{&gpWsI<%8{H~9 z;@mbZ-h}(#?=K%*J-tVf=b`_agZqC(6`HeSINx2b>0o#{RfCr!zuWkn=w^2vmV8Ip z@7K71W;^Urkg3mE}I4ss(zy1FrXcZH@E0=o@o?9RE(n{UX=B z@5tk^J+5W`cdhT+^E2r0%dbhltiQe!t(zsZ=VN?R*@tKqW`Of&inYi#G0T>7tnbU* z2l=rpT)8juJLndME?;TQ8*zT#`el$~@XlOON6a6V(cL4kpCw;{)syP0|Ln>C(f7O$&M;q;jn+;p2#qE&aym{g^n+r

? z4WC4`o(UXl73kw{$o3-N+{}CTrL)W#qV=Mj7e2 z@u+0s{g1oycK466FQO9cpO5RBKmQDA79GX+-^M)Ui>hS*<%I8lmjgML*`?}CgyZMi z-EAIyXRER7(L#NX>@Lk6oTJHeh6~Tv9fLLwa#Z8%aDMx&Qcz~!^QkBr`Ha&e+i14v z@d)%+mlo#m-$H%vg!S?6m#uYUq!sUt>)lsveyACZ*Wx4Q3GqxBa>UJayCEyX`g~Qr zb@u&mHU16za$ywQ1Um71pi~f;m&T1?Q z<2Pbhl9Hw5e5Mb^*Lup2&5_AkjN-o~MZapN$cj<_WE8DA^TJP`QU8r!@@t3h3q7_L z`!_7u)S%bN3h`0w|M?+R-c4uJ*eQzdh|876@tTZbe;JytRum_yavEPYdwjzCcTwj@ za6IhUmj2^(x<0>y<3as^^4P6Me~Y8Bf80i|GjVDDBF@9{9ePWD>m*e-M&p0%+S8Wj z>(7bk{dm}B_k(X^euzTw{V^S!TVtqY#)|R%(o~+Aw0wS}NN)a@|2}ZJ?+26nzQ})n z1I`Cwrt9>YidsZfIA0WN?>oFCx>8(;<9BWTVeOA+ym=bVH(T_(H+G2a$V+iP zYG|(FV}m8%+y8&Q;&Stu{Cvmd=0h$wUy6s|eCjlIe(dA*mYn9>WS6qzD$6@?nvX}M z8RRxie;`W1@5{1f8M~&oG3GR%f9a-oDO=-<_yo@P^Gr9yet-U6bQSw^PR@Z%zKyM< z--}H_N2ja^v0;t)Jy9^+g*3hgm(Z;f~vj<+{%T@FTv88Z4FnrG^ypZQQP{a$JXZ~q;!*Miaa)W0-m z>7l#DBKqE@w5y!QF4!>o9yeIdo#yb_m08mKqq6Y+G0FNy0mq|aV8Q(TfSHl=oYKX1jMfX<4wfNzTwEEgCnkGzuGqTXn9+LU+3lDo9oy=&xfs8U z)^}B^k9x}QFSy+PLw{5ArP&wR@55oCnjoQe% zw+*gb7x{`#7OsuEXu}(DeH^@NuFHoVTKqn)pWO?F^e?Qp;(Ks?y(lL4VRfblms@|! zug|&M`kl+I@44LipUdqJL|w3c9^tD-74aux+F$f)yW;Jk&Dzrahy8(5I$za2r027y zJr`!@y>Vc)f3eugCK~-V<5Tc`(QlsU6Qch^9E+cDs_ec-?BI-%X_P(G2ta z=Cxmo)!_H+aq%AKfa7LNgzKr<_B-ZOckCpcf1K`K&bhEgQ@a25G)hYesk4=y2cBr< z`tZmmU+MjX`4-RcUX@)K?eB|p_d4yKXC>YLYtlgXWjO3(Z7yi|JLg6FAR?z~kjcOJ{%;(YhiE^fDOu!Z#e<(pz=>F-O` z()$OWkul@8zA|KVepBi>DfgPV6{q{D;wy{(R?}5sv#|drWk#)U>GM-MAOCg~kL|C} zC=SJVG%S$KCQDN1%KN43S zsZ$wkBRzjgv`gKimxJg};8{v8=>q?cIc(N^* zJOATy=Yw4C{E*9?FN)>PA4PKKll(lkr+VVc4*GCJSf(rMzbxndLP`RA$SYOaZA zYee-Jui)g|F&mBAa5_JIpR1(1HdaS^-gh>kyS}yaZ;>jtFKvhF^H3W#_5xl{tB!F&zrlA37+?3+bik$u&%jxxB6T+M(4+6 zg~3(Dov(;i;ePr^!rn7!0Yt%qO7Hh`#*or>2n>^TB zI{p&s0y=M+{6kFV-`9I7O@BPdnA7?AQMKZtxg!l(KRiG0Y0meJ`fSYU`}xsZr!cL$ z4X5?bl9NMh{;OAJ-Ecjf)Kb`gd}j^jg!6Ys^D^~u1)rt&2hMrHJAG$;m7f1A#FVP; z=PHcu2eyw*jasePEWJM%9y>bAAXH0wztB6#_0;&;_e69axM}t9{)?HV^!{MP=k*2A zHXS(KU;MlF=J9pLKgDwQwet75^7p+=?mk%lzF7V~nakZbOXH3A(en4z^7q+n4ZdH4 zQWEt1_jz-=FFLROK6mp7;TsI%4p_*zHled*C%c^MlvS#!GYTKU@EWKV(;e~12W>~7sObL9&W-Iopawm%ux|s zc>dL|IY=wXfmh=D+ORgS)z#fbJPF6owO@OU5_V{_bX*U0aGf;m+yp!6|C3A`$0RwM zs7u$APvb8iIo+to*CGE9m7g)il}_9WzyAg&$6QF*Xve$beW$5wo9YY?#`7J7{qFg` zhc+Gg8NfpDzI4Tjll;mfCB6vb^Ey z72EwPy%_x;VbAaPvkwgSX7qoB&f5bAWp(gm^nZp7{a-hRG<9UYxIU_W6TjTGyiw$i z{LAOhamnu~lKx*p;nq~`H-0Y6X_|1J^8Ah2_K09#Zh`US{rtqu`vN)5=PlLIIu%|0 zrSD@_P@{86+!wJT{y%Q Date: Thu, 2 Jan 2025 10:06:52 +0800 Subject: [PATCH 32/44] Refactor:Remove update_tau_pos in ucell (#5783) * modify periodic_boundary_adjustment * modify update_pos_tau * update compile * delete ucell referenc in update_pos_tau * add unittest for update_pos_tau * move back test file * use EXPECT_THAT instead of EXPECT_EQ in relax_old and use regex to remove the title * remove the bug in the relax_old for it didn't run update_pos * [pre-commit.ci lite] apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/Makefile.Objects | 1 + source/module_cell/CMakeLists.txt | 1 + source/module_cell/bcast_cell.cpp | 15 +++ source/module_cell/bcast_cell.h | 10 ++ source/module_cell/test/CMakeLists.txt | 7 +- .../test/support/mock_unitcell.cpp | 2 - source/module_cell/test/unitcell_test.cpp | 7 +- .../module_cell/test/unitcell_test_para.cpp | 34 ++++++- source/module_cell/test_pw/CMakeLists.txt | 2 +- source/module_cell/unitcell.cpp | 76 +-------------- source/module_cell/unitcell.h | 2 - source/module_cell/update_cell.cpp | 96 +++++++++++++++++++ source/module_cell/update_cell.h | 28 ++++++ source/module_md/test/CMakeLists.txt | 3 +- .../relax_new/test/CMakeLists.txt | 2 +- source/module_relax/relax_old/bfgs.cpp | 3 +- .../relax_old/ions_move_basic.cpp | 15 +-- .../module_relax/relax_old/ions_move_sd.cpp | 15 +-- .../relax_old/test/CMakeLists.txt | 14 ++- source/module_relax/relax_old/test/for_test.h | 5 +- .../relax_old/test/ions_move_basic_test.cpp | 12 +-- .../relax_old/test/ions_move_bfgs_test.cpp | 16 ++-- .../relax_old/test/ions_move_cg_test.cpp | 43 +++++++-- .../relax_old/test/ions_move_sd_test.cpp | 29 ++++-- 24 files changed, 301 insertions(+), 137 deletions(-) create mode 100644 source/module_cell/bcast_cell.cpp create mode 100644 source/module_cell/bcast_cell.h diff --git a/source/Makefile.Objects b/source/Makefile.Objects index b04a96624b..f209a16513 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -188,6 +188,7 @@ OBJS_CELL=atom_pseudo.o\ cell_index.o\ check_atomic_stru.o\ update_cell.o\ + bcast_cell.o\ OBJS_DEEPKS=LCAO_deepks.o\ deepks_force.o\ diff --git a/source/module_cell/CMakeLists.txt b/source/module_cell/CMakeLists.txt index f4cb5e5991..230a6ae2dd 100644 --- a/source/module_cell/CMakeLists.txt +++ b/source/module_cell/CMakeLists.txt @@ -24,6 +24,7 @@ add_library( cell_index.cpp check_atomic_stru.cpp update_cell.cpp + bcast_cell.cpp ) if(ENABLE_COVERAGE) diff --git a/source/module_cell/bcast_cell.cpp b/source/module_cell/bcast_cell.cpp new file mode 100644 index 0000000000..f591f3c156 --- /dev/null +++ b/source/module_cell/bcast_cell.cpp @@ -0,0 +1,15 @@ +#include "unitcell.h" + +namespace unitcell +{ + void bcast_atoms_tau(Atom* atoms, + const int ntype) + { + #ifdef __MPI + MPI_Barrier(MPI_COMM_WORLD); + for (int i = 0; i < ntype; i++) { + atoms[i].bcast_atom(); // bcast tau array + } + #endif + } +} \ No newline at end of file diff --git a/source/module_cell/bcast_cell.h b/source/module_cell/bcast_cell.h new file mode 100644 index 0000000000..4cee843a3d --- /dev/null +++ b/source/module_cell/bcast_cell.h @@ -0,0 +1,10 @@ +#ifndef BCAST_CELL_H +#define BCAST_CELL_H + +namespace unitcell +{ + void bcast_atoms_tau(Atom* atoms, + const int ntype); +} + +#endif // BCAST_CELL_H \ No newline at end of file diff --git a/source/module_cell/test/CMakeLists.txt b/source/module_cell/test/CMakeLists.txt index 890b4b776b..0d2a90db42 100644 --- a/source/module_cell/test/CMakeLists.txt +++ b/source/module_cell/test/CMakeLists.txt @@ -14,6 +14,8 @@ install(FILES unitcell_test_parallel.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) list(APPEND cell_simple_srcs ../unitcell.cpp + ../update_cell.cpp + ../bcast_cell.cpp ../read_atoms.cpp ../atom_spec.cpp ../atom_pseudo.cpp @@ -103,14 +105,14 @@ add_test(NAME cell_parallel_kpoints_test AddTest( TARGET cell_unitcell_test LIBS parameter ${math_libs} base device cell_info symmetry - SOURCES unitcell_test.cpp ../../module_io/output.cpp ../../module_elecstate/cal_ux.cpp ../update_cell.cpp + SOURCES unitcell_test.cpp ../../module_io/output.cpp ../../module_elecstate/cal_ux.cpp ) AddTest( TARGET cell_unitcell_test_readpp LIBS parameter ${math_libs} base device cell_info - SOURCES unitcell_test_readpp.cpp ../../module_io/output.cpp + SOURCES unitcell_test_readpp.cpp ../../module_io/output.cpp ) AddTest( @@ -123,7 +125,6 @@ AddTest( TARGET cell_unitcell_test_setupcell LIBS parameter ${math_libs} base device cell_info SOURCES unitcell_test_setupcell.cpp ../../module_io/output.cpp - ../../module_cell/update_cell.cpp ) add_test(NAME cell_unitcell_test_parallel diff --git a/source/module_cell/test/support/mock_unitcell.cpp b/source/module_cell/test/support/mock_unitcell.cpp index dfb8e4cedd..c335a181a9 100644 --- a/source/module_cell/test/support/mock_unitcell.cpp +++ b/source/module_cell/test/support/mock_unitcell.cpp @@ -33,11 +33,9 @@ bool UnitCell::read_atom_positions(std::ifstream& ifpos, std::ofstream& ofs_warning) { return true; } -void UnitCell::update_pos_tau(const double* pos) {} void UnitCell::update_pos_taud(double* posd_in) {} void UnitCell::update_pos_taud(const ModuleBase::Vector3* posd_in) {} void UnitCell::update_vel(const ModuleBase::Vector3* vel_in) {} -void UnitCell::periodic_boundary_adjustment() {} void UnitCell::bcast_atoms_tau() {} bool UnitCell::judge_big_cell() const { return true; } void UnitCell::update_stress(ModuleBase::matrix& scs) {} diff --git a/source/module_cell/test/unitcell_test.cpp b/source/module_cell/test/unitcell_test.cpp index 036bbf40ed..90925df62d 100644 --- a/source/module_cell/test/unitcell_test.cpp +++ b/source/module_cell/test/unitcell_test.cpp @@ -783,7 +783,9 @@ TEST_F(UcellDeathTest, PeriodicBoundaryAdjustment1) PARAM.input.relax_new = utp.relax_new; ucell = utp.SetUcellInfo(); testing::internal::CaptureStdout(); - EXPECT_EXIT(ucell->periodic_boundary_adjustment(), ::testing::ExitedWithCode(1), ""); + EXPECT_EXIT(unitcell::periodic_boundary_adjustment( + ucell->atoms,ucell->latvec,ucell->ntype), + ::testing::ExitedWithCode(1), ""); std::string output = testing::internal::GetCapturedStdout(); EXPECT_THAT(output, testing::HasSubstr("the movement of atom is larger than the length of cell")); } @@ -793,7 +795,8 @@ TEST_F(UcellTest, PeriodicBoundaryAdjustment2) UcellTestPrepare utp = UcellTestLib["C1H2-Index"]; PARAM.input.relax_new = utp.relax_new; ucell = utp.SetUcellInfo(); - EXPECT_NO_THROW(ucell->periodic_boundary_adjustment()); + EXPECT_NO_THROW(unitcell::periodic_boundary_adjustment( + ucell->atoms,ucell->latvec,ucell->ntype)); } TEST_F(UcellTest, PrintCell) diff --git a/source/module_cell/test/unitcell_test_para.cpp b/source/module_cell/test/unitcell_test_para.cpp index dbe302a486..11f629d707 100644 --- a/source/module_cell/test/unitcell_test_para.cpp +++ b/source/module_cell/test/unitcell_test_para.cpp @@ -14,7 +14,8 @@ #include "mpi.h" #endif #include "prepare_unitcell.h" - +#include "../update_cell.h" +#include "../bcast_cell.h" #ifdef __LCAO InfoNonlocal::InfoNonlocal() { @@ -44,6 +45,7 @@ Magnetism::~Magnetism() /** * - Tested Functions: * - UpdatePosTaud + * - update_pos_tau(double* pos) * - update_pos_taud(const double* pos) * - bcast_atoms_tau() is also called in the above function, which calls Atom::bcast_atom with many * atomic info in addition to tau @@ -123,7 +125,34 @@ TEST_F(UcellTest, BcastUnitcell) EXPECT_EQ(atom_labels[1], atom_type2_expected); } } - +TEST_F(UcellTest, UpdatePosTau) +{ + double* pos_in = new double[ucell->nat * 3]; + ucell->set_iat2itia(); + std::fill(pos_in, pos_in + ucell->nat * 3, 0); + for (int iat = 0; iat < ucell->nat; ++iat) + { + int it, ia; + ucell->iat2iait(iat, &ia, &it); + for (int ik = 0; ik < 3; ++ik) + { + ucell->atoms[it].mbl[ia][ik] = true; + pos_in[iat * 3 + ik] = (iat * 3 + ik) / (ucell->nat * 3.0) * (ucell->lat.lat0); + } + } + unitcell::update_pos_tau(ucell->lat,pos_in,ucell->ntype,ucell->nat,ucell->atoms); + for (int iat = 0; iat < ucell->nat; ++iat) + { + int it, ia; + ucell->iat2iait(iat, &ia, &it); + for (int ik = 0; ik < 3; ++ik) + { + EXPECT_DOUBLE_EQ(ucell->atoms[it].tau[ia][ik], + (iat*3+ik)/(ucell->nat*3.0)); + } + } + delete[] pos_in; +} TEST_F(UcellTest, UpdatePosTaud) { double* pos_in = new double[ucell->nat * 3]; @@ -147,6 +176,7 @@ TEST_F(UcellTest, UpdatePosTaud) EXPECT_DOUBLE_EQ(ucell->atoms[it].taud[ia].y, tmp[iat].y + 0.01); EXPECT_DOUBLE_EQ(ucell->atoms[it].taud[ia].z, tmp[iat].z + 0.01); } + delete[] tmp; delete[] pos_in; } diff --git a/source/module_cell/test_pw/CMakeLists.txt b/source/module_cell/test_pw/CMakeLists.txt index d171e02aec..4a087c29c7 100644 --- a/source/module_cell/test_pw/CMakeLists.txt +++ b/source/module_cell/test_pw/CMakeLists.txt @@ -11,7 +11,7 @@ install(FILES unitcell_test_pw_para.sh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( TARGET cell_unitcell_test_pw LIBS parameter ${math_libs} base device - SOURCES unitcell_test_pw.cpp ../unitcell.cpp ../read_atoms.cpp ../atom_spec.cpp + SOURCES unitcell_test_pw.cpp ../unitcell.cpp ../read_atoms.cpp ../atom_spec.cpp ../update_cell.cpp ../bcast_cell.cpp ../atom_pseudo.cpp ../pseudo.cpp ../read_pp.cpp ../read_pp_complete.cpp ../read_pp_upf201.cpp ../read_pp_upf100.cpp ../read_pp_vwr.cpp ../read_pp_blps.cpp ../../module_io/output.cpp ../../module_elecstate/read_pseudo.cpp ../../module_elecstate/cal_nelec_nband.cpp ) diff --git a/source/module_cell/unitcell.cpp b/source/module_cell/unitcell.cpp index 635b3624c1..c7bbbe9cd6 100755 --- a/source/module_cell/unitcell.cpp +++ b/source/module_cell/unitcell.cpp @@ -27,6 +27,8 @@ #include "module_ri/serialization_cereal.h" #endif + +#include "update_cell.h" UnitCell::UnitCell() { if (test_unitcell) { ModuleBase::TITLE("unitcell", "Constructor"); @@ -312,29 +314,7 @@ std::vector> UnitCell::get_constrain() const return constrain; } -void UnitCell::update_pos_tau(const double* pos) { - int iat = 0; - for (int it = 0; it < this->ntype; it++) { - Atom* atom = &this->atoms[it]; - for (int ia = 0; ia < atom->na; ia++) { - for (int ik = 0; ik < 3; ++ik) { - if (atom->mbl[ia][ik]) { - atom->dis[ia][ik] - = pos[3 * iat + ik] / this->lat0 - atom->tau[ia][ik]; - atom->tau[ia][ik] = pos[3 * iat + ik] / this->lat0; - } - } - // the direct coordinates also need to be updated. - atom->dis[ia] = atom->dis[ia] * this->GT; - atom->taud[ia] = atom->tau[ia] * this->GT; - iat++; - } - } - assert(iat == this->nat); - this->periodic_boundary_adjustment(); - this->bcast_atoms_tau(); -} void UnitCell::update_pos_taud(double* posd_in) { int iat = 0; @@ -349,7 +329,7 @@ void UnitCell::update_pos_taud(double* posd_in) { } } assert(iat == this->nat); - this->periodic_boundary_adjustment(); + unitcell::periodic_boundary_adjustment(this->atoms,this->latvec, this->ntype); this->bcast_atoms_tau(); } @@ -367,7 +347,7 @@ void UnitCell::update_pos_taud(const ModuleBase::Vector3* posd_in) { } } assert(iat == this->nat); - this->periodic_boundary_adjustment(); + unitcell::periodic_boundary_adjustment(this->atoms,this->latvec, this->ntype); this->bcast_atoms_tau(); } @@ -383,54 +363,6 @@ void UnitCell::update_vel(const ModuleBase::Vector3* vel_in) { assert(iat == this->nat); } -void UnitCell::periodic_boundary_adjustment() { - //---------------------------------------------- - // because of the periodic boundary condition - // we need to adjust the atom positions, - // first adjust direct coordinates, - // then update them into cartesian coordinates, - //---------------------------------------------- - for (int it = 0; it < this->ntype; it++) { - Atom* atom = &this->atoms[it]; - for (int ia = 0; ia < atom->na; ia++) { - // mohan update 2011-03-21 - if (atom->taud[ia].x < 0) { - atom->taud[ia].x += 1.0; -} - if (atom->taud[ia].y < 0) { - atom->taud[ia].y += 1.0; -} - if (atom->taud[ia].z < 0) { - atom->taud[ia].z += 1.0; -} - if (atom->taud[ia].x >= 1.0) { - atom->taud[ia].x -= 1.0; -} - if (atom->taud[ia].y >= 1.0) { - atom->taud[ia].y -= 1.0; -} - if (atom->taud[ia].z >= 1.0) { - atom->taud[ia].z -= 1.0; -} - - if (atom->taud[ia].x < 0 || atom->taud[ia].y < 0 - || atom->taud[ia].z < 0 || atom->taud[ia].x >= 1.0 - || atom->taud[ia].y >= 1.0 || atom->taud[ia].z >= 1.0) { - GlobalV::ofs_warning << " it=" << it + 1 << " ia=" << ia + 1 - << std::endl; - GlobalV::ofs_warning << "d=" << atom->taud[ia].x << " " - << atom->taud[ia].y << " " - << atom->taud[ia].z << std::endl; - ModuleBase::WARNING_QUIT( - "Ions_Move_Basic::move_ions", - "the movement of atom is larger than the length of cell."); - } - - atom->tau[ia] = atom->taud[ia] * this->latvec; - } - } - return; -} void UnitCell::bcast_atoms_tau() { #ifdef __MPI diff --git a/source/module_cell/unitcell.h b/source/module_cell/unitcell.h index 16c5ea2ec7..e6f2fa96f0 100644 --- a/source/module_cell/unitcell.h +++ b/source/module_cell/unitcell.h @@ -200,11 +200,9 @@ class UnitCell { void print_cell(std::ofstream& ofs) const; void print_cell_xyz(const std::string& fn) const; - void update_pos_tau(const double* pos); void update_pos_taud(const ModuleBase::Vector3* posd_in); void update_pos_taud(double* posd_in); void update_vel(const ModuleBase::Vector3* vel_in); - void periodic_boundary_adjustment(); void bcast_atoms_tau(); bool judge_big_cell() const; diff --git a/source/module_cell/update_cell.cpp b/source/module_cell/update_cell.cpp index 6e989dd82e..1ea761afba 100644 --- a/source/module_cell/update_cell.cpp +++ b/source/module_cell/update_cell.cpp @@ -1,4 +1,5 @@ #include "update_cell.h" +#include "bcast_cell.h" #include "module_base/global_function.h" namespace unitcell { @@ -344,4 +345,99 @@ void setup_cell_after_vc(UnitCell& ucell, std::ofstream& log) { return; } + +void update_pos_tau(const Lattice& lat, + const double* pos, + const int ntype, + const int nat, + Atom* atoms) +{ + int iat = 0; + for (int it = 0; it < ntype; it++) { + Atom* atom = &atoms[it]; + for (int ia = 0; ia < atom->na; ia++) { + for (int ik = 0; ik < 3; ++ik) { + if (atom->mbl[ia][ik]) + { + atom->dis[ia][ik] = pos[3 * iat + ik] / lat.lat0 - atom->tau[ia][ik]; + atom->tau[ia][ik] = pos[3 * iat + ik] / lat.lat0; + } + } + // the direct coordinates also need to be updated. + atom->dis[ia] = atom->dis[ia] * lat.GT; + atom->taud[ia] = atom->tau[ia] * lat.GT; + iat++; + } + } + assert(iat == nat); + periodic_boundary_adjustment(atoms,lat.latvec,ntype); + bcast_atoms_tau(atoms, ntype); } + +void periodic_boundary_adjustment(Atom* atoms, + const ModuleBase::Matrix3& latvec, + const int ntype) +{ + //---------------------------------------------- + // because of the periodic boundary condition + // we need to adjust the atom positions, + // first adjust direct coordinates, + // then update them into cartesian coordinates, + //---------------------------------------------- + for (int i=0;ina;j++) { + printf("the taud is %f %f %f\n",atom->taud[j].x,atom->taud[j].y,atom->taud[j].z); + } + } + for (int it = 0; it < ntype; it++) { + Atom* atom = &atoms[it]; + for (int ia = 0; ia < atom->na; ia++) { + // mohan update 2011-03-21 + if (atom->taud[ia].x < 0) + { + atom->taud[ia].x += 1.0; + } + if (atom->taud[ia].y < 0) + { + atom->taud[ia].y += 1.0; + } + if (atom->taud[ia].z < 0) + { + atom->taud[ia].z += 1.0; + } + if (atom->taud[ia].x >= 1.0) + { + atom->taud[ia].x -= 1.0; + } + if (atom->taud[ia].y >= 1.0) + { + atom->taud[ia].y -= 1.0; + } + if (atom->taud[ia].z >= 1.0) + { + atom->taud[ia].z -= 1.0; + } + + if (atom->taud[ia].x < 0 + || atom->taud[ia].y < 0 + || atom->taud[ia].z < 0 + || atom->taud[ia].x >= 1.0 + || atom->taud[ia].y >= 1.0 + || atom->taud[ia].z >= 1.0) + { + GlobalV::ofs_warning << " it=" << it + 1 << " ia=" << ia + 1 << std::endl; + GlobalV::ofs_warning << "d=" << atom->taud[ia].x << " " + << atom->taud[ia].y << " " + << atom->taud[ia].z << std::endl; + ModuleBase::WARNING_QUIT("Ions_Move_Basic::move_ions", + "the movement of atom is larger than the length of cell."); + } + + atom->tau[ia] = atom->taud[ia] * latvec; + } + } + return; +} + +} // namespace unitcell \ No newline at end of file diff --git a/source/module_cell/update_cell.h b/source/module_cell/update_cell.h index 3f5a02c941..d7105535dc 100644 --- a/source/module_cell/update_cell.h +++ b/source/module_cell/update_cell.h @@ -12,6 +12,8 @@ is fixed, adjust the lattice vectors the functions are defined in the namespace UnitCell, Accually, the functions are focused on the cell-relax part functions of the UnitCell class. +3. periodic_boundary_adjustment: adjust the boundary of the cell +4. update_pos_tau: update the Cartesian coordinate postion of the atoms */ namespace unitcell { @@ -20,6 +22,32 @@ namespace unitcell void remake_cell(Lattice& lat); void setup_cell_after_vc(UnitCell& ucell, std::ofstream& log); + + /** + * @brief check the boundary of the cell, for each atom,the taud + * in three directions should be in the range of [-1,1) + * @param atoms: the atoms to be adjusted [in] + * @param latvec: the lattice of the atoms [in] + * @param ntype: the number of types of the atoms [in] + */ + void periodic_boundary_adjustment(Atom* atoms, + const ModuleBase::Matrix3& latvec, + const int ntype); + + /** + * @brief update the position and tau of the atoms + * + * @param lat: the lattice of the atoms [in] + * @param pos: the position of the atoms [in] + * @param ntype: the number of types of the atoms [in] + * @param nat: the number of atoms [in] + * @param atoms: the atoms to be updated [out] + */ + void update_pos_tau(const Lattice& lat, + const double* pos, + const int ntype, + const int nat, + Atom* atoms); } // #endif // UPDATE_CELL_H \ No newline at end of file diff --git a/source/module_md/test/CMakeLists.txt b/source/module_md/test/CMakeLists.txt index 6510f0033d..ec8bb0bf8c 100644 --- a/source/module_md/test/CMakeLists.txt +++ b/source/module_md/test/CMakeLists.txt @@ -5,6 +5,8 @@ remove_definitions(-DUSE_PAW) list(APPEND depend_files ../md_func.cpp ../../module_cell/unitcell.cpp + ../../module_cell/update_cell.cpp + ../../module_cell/bcast_cell.cpp ../../module_cell/atom_spec.cpp ../../module_cell/atom_pseudo.cpp ../../module_cell/read_atoms.cpp @@ -87,7 +89,6 @@ AddTest( SOURCES nhchain_test.cpp ../md_base.cpp ../nhchain.cpp - ../../module_cell/update_cell.cpp ../../module_io/output.cpp ${depend_files} ) diff --git a/source/module_relax/relax_new/test/CMakeLists.txt b/source/module_relax/relax_new/test/CMakeLists.txt index 8a2f5f7ff5..9f568b9b52 100644 --- a/source/module_relax/relax_new/test/CMakeLists.txt +++ b/source/module_relax/relax_new/test/CMakeLists.txt @@ -18,7 +18,7 @@ AddTest( ../../../module_base/matrix3.cpp ../../../module_base/intarray.cpp ../../../module_base/tool_title.cpp ../../../module_base/global_function.cpp ../../../module_base/complexmatrix.cpp ../../../module_base/matrix.cpp ../../../module_base/complexarray.cpp ../../../module_base/tool_quit.cpp ../../../module_base/realarray.cpp ../../../module_base/blas_connector.cpp - ../../../module_cell/update_cell.cpp ../../../module_io/output.cpp + ../../../module_cell/update_cell.cpp ../../../module_cell/bcast_cell.cpp ../../../module_io/output.cpp LIBS parameter ${math_libs} ) diff --git a/source/module_relax/relax_old/bfgs.cpp b/source/module_relax/relax_old/bfgs.cpp index 39bb3c991b..d335bbcd05 100644 --- a/source/module_relax/relax_old/bfgs.cpp +++ b/source/module_relax/relax_old/bfgs.cpp @@ -3,6 +3,7 @@ #include "module_base/matrix3.h" #include "module_parameter/parameter.h" #include "ions_move_basic.h" +#include "module_cell/update_cell.h" //! initialize H0、H、pos0、force0、force void BFGS::allocate(const int _size) @@ -333,7 +334,7 @@ void BFGS::UpdatePos(UnitCell& ucell) } std::cout< 0); - assert(pos != NULL); - assert(grad != NULL); + assert(pos != nullptr); + assert(grad != nullptr); assert(dim == 3 * ucell.nat); ModuleBase::GlobalFunc::ZEROS(pos, dim); @@ -65,8 +65,8 @@ void Ions_Move_Basic::move_atoms(UnitCell &ucell, double *move, double *pos) { ModuleBase::TITLE("Ions_Move_Basic", "move_atoms"); - assert(move != NULL); - assert(pos != NULL); + assert(move != nullptr); + assert(pos != nullptr); //------------------------ // for test only @@ -95,8 +95,9 @@ void Ions_Move_Basic::move_atoms(UnitCell &ucell, double *move, double *pos) const double move_threshold = 1.0e-10; const int total_freedom = ucell.nat * 3; - if (ModuleSymmetry::Symmetry::symm_flag && ucell.symm.all_mbl && ucell.symm.nrotk > 0) + if (ModuleSymmetry::Symmetry::symm_flag && ucell.symm.all_mbl && ucell.symm.nrotk > 0) { ucell.symm.symmetrize_vec3_nat(move); +} for (int i = 0; i < total_freedom; i++) { @@ -105,7 +106,7 @@ void Ions_Move_Basic::move_atoms(UnitCell &ucell, double *move, double *pos) pos[i] += move[i]; } } - ucell.update_pos_tau(pos); + unitcell::update_pos_tau(ucell.lat,pos,ucell.ntype,ucell.nat,ucell.atoms); //-------------------------------------------- // Print out the structure file. diff --git a/source/module_relax/relax_old/ions_move_sd.cpp b/source/module_relax/relax_old/ions_move_sd.cpp index 24e9591aae..89e5f9e3cb 100644 --- a/source/module_relax/relax_old/ions_move_sd.cpp +++ b/source/module_relax/relax_old/ions_move_sd.cpp @@ -20,7 +20,7 @@ Ions_Move_SD::~Ions_Move_SD() delete[] pos_saved; } -void Ions_Move_SD::allocate(void) +void Ions_Move_SD::allocate() { ModuleBase::TITLE("Ions_Move_SD", "allocate"); assert(dim > 0); @@ -37,8 +37,8 @@ void Ions_Move_SD::start(UnitCell& ucell, const ModuleBase::matrix& force, const ModuleBase::TITLE("Ions_Move_SD", "start"); assert(dim > 0); - assert(grad_saved != 0); - assert(pos_saved != 0); + assert(grad_saved != nullptr); + assert(pos_saved != nullptr); std::vector pos(dim); std::vector grad(dim); @@ -49,15 +49,18 @@ void Ions_Move_SD::start(UnitCell& ucell, const ModuleBase::matrix& force, const // 1: ediff = 0 // 0: ediff < 0 - bool judgement = 0; + bool judgement = false; setup_etot(etot_in, judgement); setup_gradient(ucell, force, pos.data(), grad.data()); if (istep == 1 || etot_in <= energy_saved) { + printf("in cheak_converged"); + printf("pos[0]: %f\n", pos[0]); energy_saved = etot_in; - for (int i = 0; i < dim; i++) + for (int i = 0; i < dim; i++) { pos_saved[i] = pos[i]; +} for (int i = 0; i < dim; i++) { grad_saved[i] = grad[i]; @@ -91,7 +94,7 @@ void Ions_Move_SD::start(UnitCell& ucell, const ModuleBase::matrix& force, const return; } -void Ions_Move_SD::cal_tradius_sd(void) const +void Ions_Move_SD::cal_tradius_sd() const { static int accepted_number = 0; diff --git a/source/module_relax/relax_old/test/CMakeLists.txt b/source/module_relax/relax_old/test/CMakeLists.txt index 9a5ccdf95f..47901513db 100644 --- a/source/module_relax/relax_old/test/CMakeLists.txt +++ b/source/module_relax/relax_old/test/CMakeLists.txt @@ -1,7 +1,11 @@ remove_definitions(-D__MPI) remove_definitions(-D__LCAO) - +list(APPEND cell_source_files + ../../../module_cell/update_cell.cpp + ../../../module_cell/bcast_cell.cpp + ../../../module_io/output.cpp +) AddTest( TARGET lattice_change_methods_test LIBS parameter ${math_libs} base device @@ -33,13 +37,13 @@ AddTest( AddTest( TARGET bfgs_test LIBS parameter ${math_libs} base device - SOURCES bfgs_test.cpp ../bfgs.cpp ../ions_move_basic.cpp + SOURCES bfgs_test.cpp ../bfgs.cpp ../ions_move_basic.cpp ${cell_source_files} ) AddTest( TARGET ions_move_basic_test LIBS parameter ${math_libs} base device - SOURCES ions_move_basic_test.cpp ../ions_move_basic.cpp + SOURCES ions_move_basic_test.cpp ../ions_move_basic.cpp ${cell_source_files} ) AddTest( @@ -50,6 +54,7 @@ AddTest( ../ions_move_basic.cpp ../bfgs_basic.cpp ../../../module_io/orb_io.cpp + ${cell_source_files} ) AddTest( @@ -59,10 +64,11 @@ AddTest( ../ions_move_cg.cpp ../ions_move_basic.cpp ../../../module_io/orb_io.cpp + ${cell_source_files} ) AddTest( TARGET ions_move_sd_test LIBS parameter ${math_libs} base device - SOURCES ions_move_sd_test.cpp ../ions_move_sd.cpp ../ions_move_basic.cpp + SOURCES ions_move_sd_test.cpp ../ions_move_sd.cpp ../ions_move_basic.cpp ${cell_source_files} ) \ No newline at end of file diff --git a/source/module_relax/relax_old/test/for_test.h b/source/module_relax/relax_old/test/for_test.h index 48ab9f8a60..10ee140b79 100644 --- a/source/module_relax/relax_old/test/for_test.h +++ b/source/module_relax/relax_old/test/for_test.h @@ -68,9 +68,6 @@ UnitCell::UnitCell() UnitCell::~UnitCell() { } -void UnitCell::update_pos_tau(const double* pos) -{ -} void UnitCell::print_tau(void) const { } @@ -84,7 +81,9 @@ Atom::Atom() { na = 2; tau.resize(na); + dis.resize(na); mbl.resize(na); + taud.resize(na); } Atom::~Atom() { diff --git a/source/module_relax/relax_old/test/ions_move_basic_test.cpp b/source/module_relax/relax_old/test/ions_move_basic_test.cpp index fb38d17dfc..9d8edfa16e 100644 --- a/source/module_relax/relax_old/test/ions_move_basic_test.cpp +++ b/source/module_relax/relax_old/test/ions_move_basic_test.cpp @@ -95,7 +95,7 @@ TEST_F(IonsMoveBasicTest, MoveAtoms) ifs.close(); std::remove("log"); - EXPECT_EQ(output, expected_output); + EXPECT_THAT(output , ::testing::HasSubstr(expected_output)); EXPECT_DOUBLE_EQ(pos[0], 0.0); EXPECT_DOUBLE_EQ(pos[1], 1.0); EXPECT_DOUBLE_EQ(pos[2], 2.0); @@ -137,7 +137,7 @@ TEST_F(IonsMoveBasicTest, CheckConvergedCase1) "movement is possible.\n it may converged, otherwise no movement of atom is allowed.\n"; std::string expected_std = " ETOT DIFF (eV) : 0\n LARGEST GRAD (eV/A) : 0\n"; - EXPECT_EQ(expected_ofs, ofs_output); + EXPECT_THAT(ofs_output , ::testing::HasSubstr(expected_ofs)); EXPECT_EQ(expected_std, std_outout); EXPECT_EQ(Ions_Move_Basic::update_iter, 1); EXPECT_EQ(Ions_Move_Basic::converged, true); @@ -176,7 +176,7 @@ TEST_F(IonsMoveBasicTest, CheckConvergedCase2) "converged!\n\n Energy difference (Ry) = 0\n"; std::string expected_std = " ETOT DIFF (eV) : 0\n LARGEST GRAD (eV/A) : 2.57111\n"; - EXPECT_EQ(expected_ofs, ofs_output); + EXPECT_THAT(ofs_output , ::testing::HasSubstr(expected_ofs)); EXPECT_EQ(expected_std, std_outout); EXPECT_EQ(Ions_Move_Basic::update_iter, 2); EXPECT_EQ(Ions_Move_Basic::converged, true); @@ -215,7 +215,7 @@ TEST_F(IonsMoveBasicTest, CheckConvergedCase3) "converged yet (threshold is 25.7111)\n"; std::string expected_std = " ETOT DIFF (eV) : 13.6057\n LARGEST GRAD (eV/A) : 2.57111\n"; - EXPECT_EQ(expected_ofs, ofs_output); + EXPECT_THAT(ofs_output , ::testing::HasSubstr(expected_ofs)); EXPECT_EQ(expected_std, std_outout); EXPECT_EQ(Ions_Move_Basic::update_iter, 1); EXPECT_EQ(Ions_Move_Basic::converged, false); @@ -244,7 +244,7 @@ TEST_F(IonsMoveBasicTest, TerminateConverged) std::string expected_ofs = " end of geometry optimization\n istep = 2\n " " update iteration = 5\n"; - EXPECT_EQ(expected_ofs, ofs_output); + EXPECT_THAT(ofs_output , ::testing::HasSubstr(expected_ofs)); } // Test the terminate() function when not converged @@ -266,7 +266,7 @@ TEST_F(IonsMoveBasicTest, TerminateNotConverged) std::string expected_ofs = " the maximum number of steps has been reached.\n end of geometry optimization.\n"; - EXPECT_EQ(expected_ofs, ofs_output); + EXPECT_THAT(ofs_output , ::testing::HasSubstr(expected_ofs)); } // Test the setup_etot() function case 1 diff --git a/source/module_relax/relax_old/test/ions_move_bfgs_test.cpp b/source/module_relax/relax_old/test/ions_move_bfgs_test.cpp index 2700979d68..0ebe54cf9e 100644 --- a/source/module_relax/relax_old/test/ions_move_bfgs_test.cpp +++ b/source/module_relax/relax_old/test/ions_move_bfgs_test.cpp @@ -1,11 +1,9 @@ #include "for_test.h" -#include "gmock/gmock.h" -#define private public -#include "module_parameter/parameter.h" -#undef private #include "gtest/gtest.h" +#include "gmock/gmock.h" #define private public #define protected public +#include "module_parameter/parameter.h" #include "module_relax/relax_old/ions_move_basic.h" #include "module_relax/relax_old/ions_move_bfgs.h" #undef private @@ -109,7 +107,7 @@ TEST_F(IonsMoveBFGSTest, StartCase2) // Call the function being tested bfgs.allocate(); GlobalV::ofs_running.open("log"); - bfgs.start(ucell, force, energy_in); + EXPECT_EXIT(bfgs.start(ucell, force, energy_in) , ::testing::ExitedWithCode(1), ""); GlobalV::ofs_running.close(); // Check the results @@ -150,7 +148,7 @@ TEST_F(IonsMoveBFGSTest, RestartBfgsCase1) std::string expected_output = " trust_radius_old (bohr) = 2.44949\n"; - EXPECT_EQ(output, expected_output); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_NEAR(Ions_Move_Basic::trust_radius_old, 2.4494897427831779, 1e-12); EXPECT_DOUBLE_EQ(bfgs.move_p[0], 0.0); EXPECT_DOUBLE_EQ(bfgs.move_p[1], 0.0); @@ -236,7 +234,7 @@ TEST_F(IonsMoveBFGSTest, BfgsRoutineCase1) " update iteration = 0\n"; std::string expected_std = " BFGS TRUST (Bohr) : 1\n"; - EXPECT_EQ(expected_ofs, ofs_output); + EXPECT_THAT(ofs_output, ::testing::HasSubstr(expected_ofs)); EXPECT_EQ(expected_std, std_outout); EXPECT_DOUBLE_EQ(Ions_Move_Basic::trust_radius, 1.0); @@ -299,7 +297,7 @@ TEST_F(IonsMoveBFGSTest, BfgsRoutineCase2) "0\n update iteration = 0\n"; std::string expected_std = ""; - EXPECT_EQ(expected_ofs, ofs_output); + EXPECT_THAT(ofs_output, ::testing::HasSubstr(expected_ofs)); EXPECT_EQ(expected_std, std_outout); EXPECT_DOUBLE_EQ(Ions_Move_Basic::trust_radius, -0.5); @@ -357,7 +355,7 @@ TEST_F(IonsMoveBFGSTest, BfgsRoutineCase3) std::string expected_ofs = " check the norm of new move 410 (Bohr)\n Uphill move : resetting bfgs history\n " " istep = 0\n update iteration = 1\n"; - EXPECT_EQ(expected_ofs, ofs_output); + EXPECT_THAT(ofs_output, ::testing::HasSubstr(expected_ofs)); EXPECT_DOUBLE_EQ(Ions_Move_Basic::trust_radius, 0.2); EXPECT_DOUBLE_EQ(Ions_Move_Basic::etot, 0.9); EXPECT_DOUBLE_EQ(bfgs.tr_min_hit, false); diff --git a/source/module_relax/relax_old/test/ions_move_cg_test.cpp b/source/module_relax/relax_old/test/ions_move_cg_test.cpp index 40cb704849..39201d1d3a 100644 --- a/source/module_relax/relax_old/test/ions_move_cg_test.cpp +++ b/source/module_relax/relax_old/test/ions_move_cg_test.cpp @@ -1,5 +1,7 @@ +#include #include "for_test.h" #include "gtest/gtest.h" +#include "gmock/gmock.h" #define private public #include "module_parameter/parameter.h" #include "module_relax/relax_old/ions_move_basic.h" @@ -36,7 +38,22 @@ class IonsMoveCGTest : public ::testing::Test { // Clean up after each test } - + void setupucell(UnitCell& ucell) + { + for (int it = 0; it < ucell.ntype; it++) + { + Atom* atom = &ucell.atoms[it]; + for (int ia = 0; ia < atom->na; ia++) + { + for (int ik = 0; ik < 3; ++ik) + { + atom->tau[ia][ik] = 1; + atom->mbl[ia][ik] = 1; + } + } + } + ucell.lat.GT.Zero(); + } Ions_Move_CG im_cg; }; @@ -80,6 +97,7 @@ TEST_F(IonsMoveCGTest, TestStartConverged) Ions_Move_Basic::istep = 1; Ions_Move_Basic::converged = true; UnitCell ucell; + setupucell(ucell); ModuleBase::matrix force(2, 3); double etot = 0.0; @@ -98,7 +116,10 @@ TEST_F(IonsMoveCGTest, TestStartConverged) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + + std::regex pattern(R"(==> .*::.*\t[\d\.]+ GB\t\d+ s\n )"); + output = std::regex_replace(output, pattern, ""); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, true); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 0.0); @@ -113,6 +134,7 @@ TEST_F(IonsMoveCGTest, TestStartSd) Ions_Move_Basic::relax_method = "cg_bfgs"; Ions_Move_CG::RELAX_CG_THR = 100.0; UnitCell ucell; + setupucell(ucell); ModuleBase::matrix force(2, 3); force(0, 0) = 0.01; double etot = 0.0; @@ -130,7 +152,7 @@ TEST_F(IonsMoveCGTest, TestStartSd) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); @@ -146,6 +168,7 @@ TEST_F(IonsMoveCGTest, TestStartTrialGoto) Ions_Move_Basic::istep = 1; Ions_Move_Basic::converged = false; UnitCell ucell; + setupucell(ucell); ModuleBase::matrix force(2, 3); force(0, 0) = 0.1; double etot = 0.0; @@ -168,7 +191,7 @@ TEST_F(IonsMoveCGTest, TestStartTrialGoto) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); @@ -184,6 +207,7 @@ TEST_F(IonsMoveCGTest, TestStartTrial) Ions_Move_Basic::istep = 1; Ions_Move_Basic::converged = false; UnitCell ucell; + setupucell(ucell); ModuleBase::matrix force(2, 3); force(0, 0) = 0.01; double etot = 0.0; @@ -205,7 +229,7 @@ TEST_F(IonsMoveCGTest, TestStartTrial) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); @@ -221,6 +245,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrialGotoCase1) Ions_Move_Basic::istep = 1; Ions_Move_Basic::converged = false; UnitCell ucell; + setupucell(ucell); ModuleBase::matrix force(2, 3); force(0, 0) = 0.1; double etot = 0.0; @@ -244,7 +269,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrialGotoCase1) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); @@ -260,6 +285,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrialGotoCase2) Ions_Move_Basic::istep = 1; Ions_Move_Basic::converged = false; UnitCell ucell; + setupucell(ucell); ModuleBase::matrix force(2, 3); force(0, 0) = 0.01; double etot = 0.0; @@ -282,7 +308,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrialGotoCase2) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); @@ -298,6 +324,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrial) Ions_Move_Basic::istep = 1; Ions_Move_Basic::converged = false; UnitCell ucell; + setupucell(ucell); ModuleBase::matrix force(2, 3); force(0, 0) = 0.01; double etot = 0.0; @@ -321,7 +348,7 @@ TEST_F(IonsMoveCGTest, TestStartNoTrial) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); EXPECT_EQ(Ions_Move_Basic::relax_method, "bfgs"); diff --git a/source/module_relax/relax_old/test/ions_move_sd_test.cpp b/source/module_relax/relax_old/test/ions_move_sd_test.cpp index e473e08267..992c767921 100644 --- a/source/module_relax/relax_old/test/ions_move_sd_test.cpp +++ b/source/module_relax/relax_old/test/ions_move_sd_test.cpp @@ -1,3 +1,4 @@ +#include #include "for_test.h" #include "gmock/gmock.h" #include "gtest/gtest.h" @@ -93,7 +94,9 @@ TEST_F(IonsMoveSDTest, TestStartConverged) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + std::regex pattern(R"(==> .*::.*\t[\d\.]+ GB\t\d+ s\n )"); + output = std::regex_replace(output, pattern, ""); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, true); EXPECT_EQ(Ions_Move_Basic::update_iter, 5); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 0.0); @@ -116,6 +119,18 @@ TEST_F(IonsMoveSDTest, TestStartNotConverged) ModuleBase::matrix force(2, 3); force(0, 0) = 1.0; double etot = 0.0; + for (int it = 0; it < ucell.ntype; it++) + { + Atom* atom = &ucell.atoms[it]; + for (int ia = 0; ia < atom->na; ia++) + { + for (int ik = 0; ik < 3; ++ik) + { + atom->tau[ia][ik] = (ik + 1)/3; + atom->mbl[ia][ik] = 1; + } + } + } // call function GlobalV::ofs_running.open("log"); @@ -130,17 +145,17 @@ TEST_F(IonsMoveSDTest, TestStartNotConverged) ifs.close(); std::remove("log"); - EXPECT_EQ(expected_output, output); + EXPECT_THAT(output, testing::HasSubstr(expected_output)); EXPECT_EQ(Ions_Move_Basic::converged, false); EXPECT_EQ(Ions_Move_Basic::update_iter, 6); EXPECT_DOUBLE_EQ(Ions_Move_Basic::largest_grad, 1.0); EXPECT_DOUBLE_EQ(im_sd.energy_saved, 0.0); EXPECT_DOUBLE_EQ(im_sd.pos_saved[0], -1.0); - EXPECT_DOUBLE_EQ(im_sd.pos_saved[1], 10.0); - EXPECT_DOUBLE_EQ(im_sd.pos_saved[2], 20.0); - EXPECT_DOUBLE_EQ(im_sd.pos_saved[3], 30.0); - EXPECT_DOUBLE_EQ(im_sd.pos_saved[4], 40.0); - EXPECT_DOUBLE_EQ(im_sd.pos_saved[5], 50.0); + EXPECT_DOUBLE_EQ(im_sd.pos_saved[1], 0.0); + EXPECT_DOUBLE_EQ(im_sd.pos_saved[2], 10.0); + EXPECT_DOUBLE_EQ(im_sd.pos_saved[3], 0.0); + EXPECT_DOUBLE_EQ(im_sd.pos_saved[4], 0.0); + EXPECT_DOUBLE_EQ(im_sd.pos_saved[5], 10.0); EXPECT_DOUBLE_EQ(im_sd.grad_saved[0], -1.0); EXPECT_DOUBLE_EQ(im_sd.grad_saved[1], 0.0); EXPECT_DOUBLE_EQ(im_sd.grad_saved[2], 0.0); From f1b20615d74f3a7a5738ec9b97bc78becd3fbf2c Mon Sep 17 00:00:00 2001 From: Liu Renxi <75369672+Liu-RX@users.noreply.github.com> Date: Fri, 3 Jan 2025 08:48:41 +0800 Subject: [PATCH 33/44] Enable the support of singular number of electrions in DeepKS orbital label (#5793) --- .../module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp index 7207a64a27..8f2c4d8779 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -69,7 +69,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, if (PARAM.inp.deepks_bandgap) { - const int nocc = PARAM.inp.nelec / 2; + const int nocc = (PARAM.inp.nelec+1) / 2; std::vector o_tot(nks); for (int iks = 0; iks < nks; ++iks) { From cecf36aeb24cd2a19dade9b80f550a6daa014759 Mon Sep 17 00:00:00 2001 From: liiutao <74701833+A-006@users.noreply.github.com> Date: Fri, 3 Jan 2025 08:55:04 +0800 Subject: [PATCH 34/44] delete test print (#5795) * delete test print * change the boundry condition --- source/module_cell/update_cell.cpp | 38 +++++++----------------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/source/module_cell/update_cell.cpp b/source/module_cell/update_cell.cpp index 1ea761afba..c4c324ce45 100644 --- a/source/module_cell/update_cell.cpp +++ b/source/module_cell/update_cell.cpp @@ -384,41 +384,21 @@ void periodic_boundary_adjustment(Atom* atoms, // first adjust direct coordinates, // then update them into cartesian coordinates, //---------------------------------------------- - for (int i=0;ina;j++) { - printf("the taud is %f %f %f\n",atom->taud[j].x,atom->taud[j].y,atom->taud[j].z); - } - } for (int it = 0; it < ntype; it++) { Atom* atom = &atoms[it]; for (int ia = 0; ia < atom->na; ia++) { // mohan update 2011-03-21 - if (atom->taud[ia].x < 0) + for (int ik = 0; ik < 3; ik++) { - atom->taud[ia].x += 1.0; - } - if (atom->taud[ia].y < 0) - { - atom->taud[ia].y += 1.0; - } - if (atom->taud[ia].z < 0) - { - atom->taud[ia].z += 1.0; - } - if (atom->taud[ia].x >= 1.0) - { - atom->taud[ia].x -= 1.0; - } - if (atom->taud[ia].y >= 1.0) - { - atom->taud[ia].y -= 1.0; - } - if (atom->taud[ia].z >= 1.0) - { - atom->taud[ia].z -= 1.0; + if (atom->taud[ia][ik] < 0) + { + atom->taud[ia][ik] += 1.0; + } + if (atom->taud[ia][ik] >= 1.0) + { + atom->taud[ia][ik] -= 1.0; + } } - if (atom->taud[ia].x < 0 || atom->taud[ia].y < 0 || atom->taud[ia].z < 0 From 7d148031f7d75a579a04fe0c187a6e9c6a0dc9aa Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Fri, 3 Jan 2025 08:56:22 +0800 Subject: [PATCH 35/44] Fix: instable nonlocal pp in uspp (#5798) --- source/module_esolver/esolver_ks_pw.cpp | 2 +- .../hamilt_pwdft/VNL_in_pw.cpp | 23 +++++++++++++++++++ .../module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h | 4 ++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/source/module_esolver/esolver_ks_pw.cpp b/source/module_esolver/esolver_ks_pw.cpp index 0b303f33e1..6dd0ac3513 100644 --- a/source/module_esolver/esolver_ks_pw.cpp +++ b/source/module_esolver/esolver_ks_pw.cpp @@ -255,7 +255,7 @@ void ESolver_KS_PW::before_scf(UnitCell& ucell, const int istep) if (ucell.cell_parameter_updated) { - this->ppcell.init_vnl(ucell, this->pw_rhod); + this->ppcell.rescale_vnl(ucell.omega); ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "NON-LOCAL POTENTIAL"); this->pw_wfc->initgrids(ucell.lat0, ucell.latvec, this->pw_wfc->nx, this->pw_wfc->ny, this->pw_wfc->nz); diff --git a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.cpp index 66e255d4b8..c33d68470b 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.cpp @@ -550,6 +550,8 @@ void pseudopot_cell_vnl::init_vnl(UnitCell& cell, const ModulePW::PW_Basis* rho_ ModuleBase::TITLE("pseudopot_cell_vnl", "init_vnl"); ModuleBase::timer::tick("ppcell_vnl", "init_vnl"); + this->omega_old = cell.omega; + // from init_us_1 // a) For each non vanderbilt pseudopotential it computes the D and // the betar in the same form of the Vanderbilt pseudopotential. @@ -1733,6 +1735,27 @@ void pseudopot_cell_vnl::newd_nc(const int& iat, UnitCell& cell) } } +// scale the non-local pseudopotential tables +void pseudopot_cell_vnl::rescale_vnl(const double& omega_in) +{ + const double ratio = this->omega_old / omega_in; + const double sqrt_ratio = std::sqrt(ratio); + this->omega_old = omega_in; + + for (int i = 0; i < this->tab.getSize(); i++) + { + this->tab.ptr[i] *= sqrt_ratio; + } + for (int i = 0; i < this->tab_at.getSize(); i++) + { + this->tab_at.ptr[i] *= sqrt_ratio; + } + for (int i = 0; i < this->qrad.getSize(); i++) + { + this->qrad.ptr[i] *= ratio; + } +} + template <> float* pseudopot_cell_vnl::get_nhtol_data() const { diff --git a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h index 6b6b0bf016..e5b80ed792 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h +++ b/source/module_hamilt_pw/hamilt_pwdft/VNL_in_pw.h @@ -36,6 +36,8 @@ class pseudopot_cell_vnl void init_vnl(UnitCell& cell, const ModulePW::PW_Basis* rho_basis); + void rescale_vnl(const double& omega_in); + template void getvnl(Device* ctx, const UnitCell& ucell, const int& ik, std::complex* vkb_in) const; @@ -200,6 +202,8 @@ class pseudopot_cell_vnl Soc soc; + double omega_old = 0; + /** * @brief Compute interpolation table qrad * From d0617193c923812078c6425a302ac9e864b4ee8d Mon Sep 17 00:00:00 2001 From: Xinyuan Liang <64718735+xuan112358@users.noreply.github.com> Date: Sat, 4 Jan 2025 12:41:04 +0800 Subject: [PATCH 36/44] Restore deepks unit test in gamma-only case and make H_V_delta have full size of Hamiltonian in multi-k case (#5785) * renew deepks unit test * renew deepks unit test * reduce deepks-unitest's dependence on other modules * fix the bug of "Couldn't find orbital files for descriptor" * fix bugs of read orbitals and init orb&ParaO * fix the bug of DMR ; change the names of files being compared * fix: calculate H_V_delta * fix : cal_H_V_delta for check_e_deltabands * fix : Add pointer for GridD in deepks operator. use Test_Deepks::GridD in deepks unit test instead of GlobalC::GridD * fix : modify deepks operator to support insert_pair in initilize_HR in multi-k * fix : undefined reference of test_hsolver_sdft when using mpiicpx and icpx * update intergrate test result. Note modification in deepks operator for complete atom_pairs will cause time increase in multi-k cases. * remove some useless code * remove nnr in deepks unittest * fix: cutoff for overlap_orb_alpha_ in deepks test * fix : psialpha ref of gamma only case , just change the order of neighour atoms * fix uninitilized nmax_total in unitcell; simplize cal_descriptor * restore deepks unit test in gamma-only case * modify STRU of SiO2 in deepks test to reduce the number of neighbor atoms, thus reducing much time * fix a bug when merge * fix : setup nonlocal for ucell * rename phialpha_ref.dat for multi-k * modify STRU of H2O_multik in deepks test to reduce the number of neighbor atoms, thus reducing much time * fix : add module paw dependence in deepks unittest * fix : rename descriptor file * fix : modify result.ref for SiO2. The privious modification don't change totaldes wrongly. * update CMakeLists.txt --- source/module_basis/module_ao/ORB_read.cpp | 3 +- .../module_nao/two_center_bundle.cpp | 2 +- source/module_cell/unitcell.cpp | 1 + .../operator_lcao/deepks_lcao.cpp | 39 +- .../operator_lcao/deepks_lcao.h | 1 + .../module_deepks/CMakeLists.txt | 6 +- .../module_deepks/LCAO_deepks_pdm.cpp | 2 +- .../module_deepks/test/CMakeLists.txt | 66 +- .../module_deepks/test/LCAO_deepks_test.cpp | 167 ++++- .../module_deepks/test/LCAO_deepks_test.h | 26 +- .../test/LCAO_deepks_test_prep.cpp | 99 +-- .../module_deepks/test/klist_1.cpp | 4 +- .../module_deepks/test/main_deepks.cpp | 2 +- .../module_deepks/test/nnr.cpp | 237 ------- .../module_hsolver/test/test_hsolver_sdft.cpp | 3 +- tests/deepks/603_NO_deepks_H2O_multik/INPUT | 4 +- tests/deepks/603_NO_deepks_H2O_multik/STRU | 6 +- .../603_NO_deepks_H2O_multik/result.ref | 8 +- .../603_NO_deepks_SiO2_bandgap_multik/INPUT | 4 +- .../603_NO_deepks_SiO2_bandgap_multik/KPT | 2 +- .../603_NO_deepks_SiO2_bandgap_multik/STRU | 6 +- .../result.ref | 22 +- ...psialpha_x_ref.dat => dphialpha_x_ref.dat} | 606 ++++++++--------- ...psialpha_y_ref.dat => dphialpha_y_ref.dat} | 616 +++++++++--------- ...psialpha_z_ref.dat => dphialpha_z_ref.dat} | 532 +++++++-------- .../604_NO_deepks_ut_CH4_gamma/pdm_ref.dat | 260 ++++---- .../{psialpha_ref.dat => phialpha_ref.dat} | 438 ++++++------- ...psialpha_x_ref.dat => dphialpha_x_ref.dat} | 0 ...psialpha_y_ref.dat => dphialpha_y_ref.dat} | 0 ...psialpha_z_ref.dat => dphialpha_z_ref.dat} | 0 .../{psialpha_ref.dat => phialpha_ref.dat} | 0 tests/deepks/CASES1 | 2 +- tests/deepks/CMakeLists.txt | 10 +- 33 files changed, 1535 insertions(+), 1639 deletions(-) delete mode 100644 source/module_hamilt_lcao/module_deepks/test/nnr.cpp rename tests/deepks/604_NO_deepks_ut_CH4_gamma/{dpsialpha_x_ref.dat => dphialpha_x_ref.dat} (97%) rename tests/deepks/604_NO_deepks_ut_CH4_gamma/{dpsialpha_y_ref.dat => dphialpha_y_ref.dat} (97%) rename tests/deepks/604_NO_deepks_ut_CH4_gamma/{dpsialpha_z_ref.dat => dphialpha_z_ref.dat} (98%) rename tests/deepks/604_NO_deepks_ut_CH4_gamma/{psialpha_ref.dat => phialpha_ref.dat} (99%) rename tests/deepks/604_NO_deepks_ut_H2O_multik/{dpsialpha_x_ref.dat => dphialpha_x_ref.dat} (100%) rename tests/deepks/604_NO_deepks_ut_H2O_multik/{dpsialpha_y_ref.dat => dphialpha_y_ref.dat} (100%) rename tests/deepks/604_NO_deepks_ut_H2O_multik/{dpsialpha_z_ref.dat => dphialpha_z_ref.dat} (100%) rename tests/deepks/604_NO_deepks_ut_H2O_multik/{psialpha_ref.dat => phialpha_ref.dat} (100%) diff --git a/source/module_basis/module_ao/ORB_read.cpp b/source/module_basis/module_ao/ORB_read.cpp index faac0fb42e..c1c77461ee 100644 --- a/source/module_basis/module_ao/ORB_read.cpp +++ b/source/module_basis/module_ao/ORB_read.cpp @@ -82,7 +82,7 @@ void LCAO_Orbitals::init( this->orbital_file.push_back(orbital_dir + orbital_file[it]); } } - + this->descriptor_file = descriptor_file; #ifdef __MPI bcast_files(ntype, my_rank); #endif @@ -263,7 +263,6 @@ void LCAO_Orbitals::Read_Orbitals(std::ofstream& ofs_in, delete[] this->Alpha; this->Alpha = new Numerical_Orbital[1]; // not related to atom type -- remain to be discussed - this->Read_Descriptor(ofs_in, force_flag, my_rank); } diff --git a/source/module_basis/module_nao/two_center_bundle.cpp b/source/module_basis/module_nao/two_center_bundle.cpp index 70c15ff518..e01ad1bfa2 100644 --- a/source/module_basis/module_nao/two_center_bundle.cpp +++ b/source/module_basis/module_nao/two_center_bundle.cpp @@ -107,7 +107,7 @@ void TwoCenterBundle::tabulate() { overlap_orb_alpha = std::unique_ptr(new TwoCenterIntegrator); overlap_orb_alpha->tabulate(*orb_, *alpha_, 'S', nr, cutoff); - ModuleBase::Memory::record("TwoCenterTable: Descriptor", overlap_orb_beta->table_memory()); + ModuleBase::Memory::record("TwoCenterTable: Descriptor", overlap_orb_alpha->table_memory()); } if (orb_onsite_) diff --git a/source/module_cell/unitcell.cpp b/source/module_cell/unitcell.cpp index c7bbbe9cd6..69ca76df23 100755 --- a/source/module_cell/unitcell.cpp +++ b/source/module_cell/unitcell.cpp @@ -651,6 +651,7 @@ void UnitCell::cal_nwfc(std::ofstream& log) { //======================== this->lmax = 0; this->nmax = 0; + this->nmax_total = 0; for (int it = 0; it < ntype; it++) { lmax = std::max(lmax, atoms[it].nwl); for (int l = 0; l < atoms[it].nwl + 1; l++) { diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp index 131f6e25c4..95559724ba 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp @@ -55,10 +55,10 @@ void hamilt::DeePKS>::initialize_HR(const Grid_Driv auto* paraV = this->hR->get_paraV(); // get parallel orbitals from HR // TODO: if paraV is nullptr, AtomPair can not use paraV for constructor, I will repair it in the future. - // this->H_V_delta = new HContainer(paraV); + this->H_V_delta = new HContainer(paraV); if (std::is_same::value) { - this->H_V_delta = new HContainer(paraV); + //this->H_V_delta = new HContainer(paraV); this->H_V_delta->fix_gamma(); } @@ -123,10 +123,10 @@ void hamilt::DeePKS>::initialize_HR(const Grid_Driv R_index2.y - R_index1.y, R_index2.z - R_index1.z, paraV); - if (std::is_same::value) - { - this->H_V_delta->insert_pair(tmp); - } + // if (std::is_same::value) + // { + this->H_V_delta->insert_pair(tmp); + // } } } if (pre_cal_nlm) @@ -135,15 +135,14 @@ void hamilt::DeePKS>::initialize_HR(const Grid_Driv } } // allocate the memory of BaseMatrix in HR, and set the new values to zero - if (std::is_same::value) - { - // only gamma-only has full size of Hamiltonian of DeePKS now, - // multi-k keep same size of nonlocal operator, H_V_delta will be allocated by hR - this->H_V_delta->allocate(nullptr, true); - // expand hR with H_V_delta, only gamma-only case now - this->hR->add(*this->H_V_delta); - this->hR->allocate(nullptr, false); - } + // if (std::is_same::value) + // { + this->H_V_delta->allocate(nullptr, true); + // expand hR with H_V_delta + // update : for computational rigor, gamma-only and multi-k cases both have full size of Hamiltonian of DeePKS now + this->hR->add(*this->H_V_delta); + this->hR->allocate(nullptr, false); + // } ModuleBase::timer::tick("DeePKS", "initialize_HR"); } @@ -165,11 +164,11 @@ void hamilt::DeePKS>::contributeHR() GlobalC::ld.cal_descriptor(this->ucell->nat); GlobalC::ld.cal_gedm(this->ucell->nat); - // recalculate the H_V_delta - if (this->H_V_delta == nullptr) - { - this->H_V_delta = new hamilt::HContainer(*this->hR); - } + // // recalculate the H_V_delta + // if (this->H_V_delta == nullptr) + // { + // this->H_V_delta = new hamilt::HContainer>(*this->hR); + // } this->H_V_delta->set_zero(); this->calculate_HR(); diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h index ae51e47bbc..a2ad622ec5 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h @@ -61,6 +61,7 @@ class DeePKS> : public OperatorLCAO // LCAO_Deepks* ld = nullptr; const UnitCell* ucell = nullptr; + Grid_Driver* gridD = nullptr; const Grid_Driver* gd = nullptr; diff --git a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt index 180b52a955..bc6c2356e3 100644 --- a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt +++ b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt @@ -30,8 +30,8 @@ if(ENABLE_DEEPKS) endif() # I will rewrite the test later, the current test rely on too many modules -# if(BUILD_TESTING) -# add_subdirectory(test) -# endif() + if(BUILD_TESTING) + add_subdirectory(test) + endif() endif() diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp index 58e6b315c9..689a908f19 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_pdm.cpp @@ -379,7 +379,7 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* d void LCAO_Deepks::check_projected_dm() { - const std::string file_projdm = PARAM.globalv.global_out_dir + "deepks_projdm.dat"; + const std::string file_projdm = PARAM.globalv.global_out_dir + "pdm.dat"; std::ofstream ofs(file_projdm.c_str()); ofs << std::setprecision(10); diff --git a/source/module_hamilt_lcao/module_deepks/test/CMakeLists.txt b/source/module_hamilt_lcao/module_deepks/test/CMakeLists.txt index 4ee3772d5c..fd4de98d76 100644 --- a/source/module_hamilt_lcao/module_deepks/test/CMakeLists.txt +++ b/source/module_hamilt_lcao/module_deepks/test/CMakeLists.txt @@ -1,44 +1,48 @@ add_executable( test_deepks - main_deepks.cpp klist_1.cpp LCAO_deepks_test_prep.cpp LCAO_deepks_test.cpp nnr.cpp + main_deepks.cpp klist_1.cpp LCAO_deepks_test_prep.cpp LCAO_deepks_test.cpp + ../../../module_cell/unitcell.cpp + ../../../module_cell/update_cell.cpp + ../../../module_cell/bcast_cell.cpp + ../../../module_cell/atom_spec.cpp + ../../../module_cell/atom_pseudo.cpp + ../../../module_cell/read_atoms.cpp + ../../../module_cell/setup_nonlocal.cpp + ../../../module_cell/pseudo.cpp + ../../../module_cell/read_pp.cpp + ../../../module_cell/read_pp_complete.cpp + ../../../module_cell/read_pp_upf100.cpp + ../../../module_cell/read_pp_upf201.cpp + ../../../module_cell/read_pp_vwr.cpp + ../../../module_cell/read_pp_blps.cpp + ../../../module_hamilt_pw/hamilt_pwdft/soc.cpp + ../../../module_io/output.cpp + ../../../module_elecstate/read_pseudo.cpp + ../../../module_elecstate/cal_nelec_nband.cpp + ../../../module_elecstate/module_dm/density_matrix.cpp + ../../../module_elecstate/module_dm/density_matrix_io.cpp + ../../../module_hamilt_lcao/module_hcontainer/base_matrix.cpp + ../../../module_hamilt_lcao/module_hcontainer/hcontainer.cpp + ../../../module_hamilt_lcao/module_hcontainer/atom_pair.cpp + ../../../module_hamilt_lcao/module_hcontainer/func_transfer.cpp + ../../../module_hamilt_lcao/module_hcontainer/func_folding.cpp + ../../../module_hamilt_lcao/module_hcontainer/transfer.cpp + ../../../module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp + ../../../module_hamilt_lcao/hamilt_lcaodft/operator_lcao/operator_lcao.cpp + ../../../module_hamilt_general/operator.cpp ) -if(ENABLE_COVERAGE) - add_coverage(test_deepks) -endif() - -get_target_property(ABACUS_LINK_LIBRARIES ${ABACUS_BIN_NAME} LINK_LIBRARIES) target_link_libraries( test_deepks - base cell symmetry md surchem xc_ - neighbor orb io_basic io_advanced relax gint driver esolver hsolver psi elecstate - hamilt_general hamilt_pwdft hamilt_lcao tddft hamilt_ofdft hamilt_stodft planewave - pthread vdw dftu deltaspin hcontainer - deepks device numerical_atomic_orbitals container psi_initializer psi_overall_init - ${ABACUS_LINK_LIBRARIES} + base device parameter deepks psi planewave neighbor container + orb gint numerical_atomic_orbitals paw + ${math_libs} ) -if(ENABLE_PAW) - target_link_libraries( - test_deepks - paw - ) -endif() - -if(USE_ELPA) - target_link_libraries( - test_deepks - genelpa - ) -endif() -if(USE_CUDA) - target_link_libraries(diag_cusolver) +if(ENABLE_COVERAGE) + add_coverage(test_deepks) endif() -if (ENABLE_LIBRI) - target_link_libraries(test_deepks - ri) -endif() install( TARGETS test_deepks diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp index d1914d5ca4..76a8eb2d71 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp @@ -5,9 +5,11 @@ #include #include #undef private +#include "module_hamilt_lcao/hamilt_lcaodft/hs_matrix_k.hpp" +#include "module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.h" namespace Test_Deepks { -const Grid_Driver GridD(PARAM.input.test_deconstructor, PARAM.input.test_grid); +Grid_Driver GridD(PARAM.input.test_deconstructor, PARAM.input.test_grid); } test_deepks::test_deepks() @@ -32,13 +34,13 @@ void test_deepks::check_phialpha() { na[it] = ucell.atoms[it].na; } - ld.init(ORB, ucell.nat, ucell.ntype, ParaO, na); + GlobalC::ld.init(ORB, ucell.nat, ucell.ntype, kv.nkstot, ParaO, na); - ld.allocate_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD); + GlobalC::ld.allocate_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD); - ld.build_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD, overlap_orb_alpha_); + GlobalC::ld.build_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD, overlap_orb_alpha_); - ld.check_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD); + GlobalC::ld.check_phialpha(PARAM.input.cal_force, ucell, ORB, Test_Deepks::GridD); this->compare_with_ref("phialpha.dat", "phialpha_ref.dat"); this->compare_with_ref("dphialpha_x.dat", "dphialpha_x_ref.dat"); @@ -108,36 +110,63 @@ void test_deepks::set_dm_k_new() } } +void test_deepks::set_p_elec_DM() +{ + // gamma + int nspin=PARAM.inp.nspin; + this->p_elec_DM=new elecstate::DensityMatrix(&ParaO,nspin); + p_elec_DM->init_DMR(&Test_Deepks::GridD, &ucell); + for (int ik = 0; ik < nspin; ik++) + { + p_elec_DM->set_DMK_pointer(ik, dm_new[ik].data()); + } + p_elec_DM->cal_DMR(); +} + +void test_deepks::set_p_elec_DM_k() +{ + // multi k + this->p_elec_DM_k=new elecstate::DensityMatrix, double>(&ParaO, PARAM.inp.nspin, kv.kvec_d, kv.nkstot / PARAM.inp.nspin); + p_elec_DM_k->init_DMR(&Test_Deepks::GridD, &ucell); + for (int ik = 0; ik < kv.nkstot; ++ik) + { + p_elec_DM_k->set_DMK_pointer(ik, dm_k_new[ik].data()); + } + p_elec_DM_k->cal_DMR(); +} + void test_deepks::check_pdm() { if (PARAM.sys.gamma_only_local) { this->read_dm(); this->set_dm_new(); - this->ld.cal_projected_DM(dm_new, ucell, ORB, Test_Deepks::GridD); + this->set_p_elec_DM(); + GlobalC::ld.cal_projected_DM(p_elec_DM, ucell, ORB, Test_Deepks::GridD); } else { - this->read_dm_k(kv.get_nkstot()); + this->read_dm_k(kv.nkstot); this->set_dm_k_new(); - this->ld.cal_projected_DM(dm_k_new, ucell, ORB, Test_Deepks::GridD); + this->set_p_elec_DM_k(); + GlobalC::ld.cal_projected_DM(p_elec_DM_k, ucell, ORB, Test_Deepks::GridD); } - this->ld.check_projected_dm(); + GlobalC::ld.check_projected_dm(); this->compare_with_ref("pdm.dat", "pdm_ref.dat"); } void test_deepks::check_gdmx() { - this->ld.init_gdmx(ucell.nat); + GlobalC::ld.init_gdmx(ucell.nat); if (PARAM.sys.gamma_only_local) { - this->ld.cal_gdmx(dm_new, ucell, ORB, Test_Deepks::GridD, kv.get_nkstot(), kv.kvec_d, this->ld.phialpha, 0); + GlobalC::ld.cal_gdmx(dm_new, ucell, ORB, Test_Deepks::GridD, kv.nkstot, kv.kvec_d, GlobalC::ld.phialpha, 0); } else { - this->ld.cal_gdmx(dm_k_new, ucell, ORB, Test_Deepks::GridD, kv.get_nkstot(), kv.kvec_d, this->ld.phialpha, 0); + GlobalC::ld.cal_gdmx(dm_k_new, ucell, ORB, Test_Deepks::GridD, kv.nkstot, kv.kvec_d, GlobalC::ld.phialpha, 0); } - this->ld.check_gdmx(ucell.nat); + GlobalC::ld.check_gdmx(ucell.nat); for (int ia = 0; ia < ucell.nat; ia++) { @@ -166,17 +195,17 @@ void test_deepks::check_gdmx() void test_deepks::check_descriptor() { - this->ld.cal_descriptor(ucell.nat); - this->ld.check_descriptor(ucell); - this->compare_with_ref("descriptor.dat", "descriptor_ref.dat"); + GlobalC::ld.cal_descriptor(ucell.nat); + GlobalC::ld.check_descriptor(ucell,"./"); + this->compare_with_ref("deepks_desc.dat", "descriptor_ref.dat"); } void test_deepks::check_gvx() { std::vector gevdm; - this->ld.cal_gevdm(ucell.nat, gevdm); - this->ld.cal_gvx(ucell.nat, gevdm); - this->ld.check_gvx(ucell.nat); + GlobalC::ld.cal_gevdm(ucell.nat, gevdm); + GlobalC::ld.cal_gvx(ucell.nat, gevdm); + GlobalC::ld.check_gvx(ucell.nat); for (int ia = 0; ia < ucell.nat; ia++) { @@ -204,62 +233,132 @@ void test_deepks::check_gvx() void test_deepks::check_edelta() { - this->ld.load_model("model.ptg"); + GlobalC::ld.load_model("model.ptg"); if (PARAM.sys.gamma_only_local) { - this->ld.allocate_V_delta(ucell.nat, 1); // 1 for gamma-only + GlobalC::ld.allocate_V_delta(ucell.nat, 1); // 1 for gamma-only } else { - this->ld.allocate_V_delta(ucell.nat, kv.get_nkstot()); + GlobalC::ld.allocate_V_delta(ucell.nat, kv.nkstot); } - this->ld.cal_gedm(ucell.nat); + GlobalC::ld.cal_gedm(ucell.nat); std::ofstream ofs("E_delta.dat"); - ofs << std::setprecision(10) << this->ld.E_delta << std::endl; + ofs << std::setprecision(10) << GlobalC::ld.E_delta << std::endl; ofs.close(); this->compare_with_ref("E_delta.dat", "E_delta_ref.dat"); - this->ld.check_gedm(); + GlobalC::ld.check_gedm(); this->compare_with_ref("gedm.dat", "gedm_ref.dat"); } +void test_deepks::cal_H_V_delta() +{ + hamilt::HS_Matrix_K* hsk = new hamilt::HS_Matrix_K(&ParaO); + hamilt::HContainer* hR = new hamilt::HContainer(ucell,&ParaO); + hamilt::Operator* op_deepks = new hamilt::DeePKS>(hsk, + kv.kvec_d, + hR, // no explicit call yet + &ucell, + &Test_Deepks::GridD, + &overlap_orb_alpha_, + &ORB, + kv.nkstot, + p_elec_DM); + for (int ik = 0; ik < kv.nkstot; ++ik) + { + op_deepks->init(ik); + } +} + +void test_deepks::cal_H_V_delta_k() +{ + hamilt::HS_Matrix_K>* hsk = new hamilt::HS_Matrix_K>(&ParaO); + hamilt::HContainer* hR = new hamilt::HContainer(&ParaO); + + hamilt::Operator>* op_deepks = new hamilt::DeePKS, double>>(hsk, + kv.kvec_d, + hR, // no explicit call yet + &ucell, + &Test_Deepks::GridD, + &overlap_orb_alpha_, + &ORB, + kv.nkstot, + p_elec_DM_k); + for (int ik = 0; ik < kv.nkstot; ++ik) + { + op_deepks->init(ik); + } +} + void test_deepks::check_e_deltabands() { if (PARAM.sys.gamma_only_local) { - this->ld.cal_e_delta_band(dm_new, 1); // 1 for gamma-only + this->cal_H_V_delta(); + GlobalC::ld.cal_e_delta_band(dm_new,1); } else { - this->folding_nnr(kv); - this->ld.cal_e_delta_band(dm_k_new, kv.get_nkstot()); + this->cal_H_V_delta_k(); + GlobalC::ld.cal_e_delta_band(dm_k_new, kv.nkstot); } std::ofstream ofs("E_delta_bands.dat"); - ofs << std::setprecision(10) << this->ld.e_delta_band << std::endl; + ofs << std::setprecision(10) << GlobalC::ld.e_delta_band << std::endl; ofs.close(); this->compare_with_ref("E_delta_bands.dat", "E_delta_bands_ref.dat"); } -void test_deepks::check_f_delta() +void test_deepks::check_f_delta_and_stress_delta() { + ModuleBase::matrix fvnl_dalpha; + fvnl_dalpha.create(ucell.nat, 3); + ModuleBase::matrix svnl_dalpha; svnl_dalpha.create(3, 3); const int cal_stress = 1; if (PARAM.sys.gamma_only_local) { const int nks = 1; - ld.cal_f_delta(dm_new, ucell, ORB, Test_Deepks::GridD, nks, kv.kvec_d, cal_stress, svnl_dalpha); + DeePKS_domain::cal_f_delta(dm_new, + ucell, + ORB, + Test_Deepks::GridD, + ParaO, + GlobalC::ld.lmaxd, + nks, + kv.kvec_d, + GlobalC::ld.phialpha, + GlobalC::ld.gedm, + GlobalC::ld.inl_index, + fvnl_dalpha, + cal_stress, + svnl_dalpha); } else { - const int nks = kv.get_nkstot(); - ld.cal_f_delta(dm_k_new, ucell, ORB, Test_Deepks::GridD, nks, kv.kvec_d, cal_stress, svnl_dalpha); + const int nks = kv.nkstot; + DeePKS_domain::cal_f_delta>(dm_k_new, + ucell, + ORB, + Test_Deepks::GridD, + ParaO, + GlobalC::ld.lmaxd, + nks, + kv.kvec_d, + GlobalC::ld.phialpha, + GlobalC::ld.gedm, + GlobalC::ld.inl_index, + fvnl_dalpha, + cal_stress, + svnl_dalpha); } - ld.check_f_delta(ucell.nat, svnl_dalpha); + DeePKS_domain::check_f_delta(ucell.nat, fvnl_dalpha, svnl_dalpha); this->compare_with_ref("F_delta.dat", "F_delta_ref.dat"); + this->compare_with_ref("stress_delta.dat", "stress_delta_ref.dat"); } void test_deepks::compare_with_ref(const std::string f1, const std::string f2) diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h index 76fbac4e51..5dca7f1261 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h @@ -19,6 +19,11 @@ namespace Test_Deepks extern Grid_Driver GridD; } +namespace GlobalC +{ + extern LCAO_Deepks ld; +} + class test_deepks { @@ -36,7 +41,7 @@ class test_deepks Parallel_Orbitals ParaO; Test_Deepks::K_Vectors kv; - LCAO_Deepks ld; + // LCAO_Deepks ld; int failed_check = 0; int total_check = 0; @@ -52,7 +57,6 @@ class test_deepks int lmax = 2; int ntype = 0; - int nnr; std::vector dm; std::vector dm_k; @@ -60,6 +64,9 @@ class test_deepks std::vector> dm_new; std::vector>> dm_k_new; + elecstate::DensityMatrix* p_elec_DM; + elecstate::DensityMatrix, double>* p_elec_DM_k; + // preparation void preparation(); void set_parameters(); // set some global variables @@ -70,15 +77,16 @@ class test_deepks void prep_neighbour(); void setup_kpt(); - void set_orbs(const double& lat0_in); - - void cal_nnr(); - void folding_nnr(const Test_Deepks::K_Vectors& kv); + void set_orbs(); // tranfer Matrix into vector void set_dm_new(); void set_dm_k_new(); + // tranfer vector into DensityMatrix + void set_p_elec_DM(); + void set_p_elec_DM_k(); + // checking void check_dstable(); void check_phialpha(); @@ -94,8 +102,12 @@ class test_deepks void check_edelta(); + // calculate H_V_delta + void cal_H_V_delta(); + void cal_H_V_delta_k(); + void check_e_deltabands(); - void check_f_delta(); + void check_f_delta_and_stress_delta(); // compares numbers stored in two files void compare_with_ref(const std::string f1, const std::string f2); diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test_prep.cpp b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test_prep.cpp index 15b1d11ab0..51c5148746 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test_prep.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test_prep.cpp @@ -1,9 +1,22 @@ #include "LCAO_deepks_test.h" #include "module_base/global_variable.h" -#include "module_elecstate/read_pseudo.h" #define private public #include "module_parameter/parameter.h" #undef private +#include "module_elecstate/read_pseudo.h" +#include "module_hamilt_general/module_xc/exx_info.h" + +Magnetism::Magnetism() { + this->tot_magnetization = 0.0; + this->abs_magnetization = 0.0; + this->start_magnetization = nullptr; +} +Magnetism::~Magnetism() { delete[] this->start_magnetization; } +namespace GlobalC +{ + Exx_Info exx_info; +} + void test_deepks::preparation() { this->count_ntype(); @@ -14,10 +27,15 @@ void test_deepks::preparation() this->setup_kpt(); this->set_ekcut(); - this->set_orbs(ucell.lat0); + this->set_orbs(); this->prep_neighbour(); - this->ParaO.set_serial(PARAM.sys.nlocal, PARAM.sys.nlocal); + this->ParaO.set_serial(PARAM.globalv.nlocal, PARAM.globalv.nlocal); + this->ParaO.nrow_bands = PARAM.globalv.nlocal; + this->ParaO.ncol_bands = PARAM.inp.nbands; + // Zhang Xiaoyang enable the serial version of LCAO and recovered this function usage. 2024-07-06 + + this->ParaO.set_atomic_trace(ucell.get_iat2iwt(), ucell.nat, PARAM.globalv.nlocal); } void test_deepks::set_parameters() @@ -145,47 +163,46 @@ void test_deepks::prep_neighbour() Test_Deepks::GridD, ucell, search_radius, - GlobalV::test_atom_input); + PARAM.inp.test_atom_input); } -void test_deepks::set_orbs(const double& lat0_in) +void test_deepks::set_orbs() { - for (int it = 0; it < ntype; it++) - { - ORB.init(GlobalV::ofs_running, - ucell.ntype, - PARAM.inp.orbital_dir, - ucell.orbital_fn, - ucell.descriptor_file, - ucell.lmax, - lcao_ecut, - lcao_dk, - lcao_dr, - lcao_rmax, - PARAM.sys.deepks_setorb, - out_mat_r, - PARAM.input.cal_force, - my_rank); - - ucell.infoNL.setupNonlocal(ucell.ntype, ucell.atoms, GlobalV::ofs_running, ORB); - - std::vector file_orb(ntype); - std::transform(ucell.orbital_fn, ucell.orbital_fn + ntype, file_orb.begin(), [](const std::string& file) { - return PARAM.inp.orbital_dir + file; - }); - orb_.build(ntype, file_orb.data()); - - std::string file_alpha = PARAM.inp.orbital_dir + ucell.descriptor_file; - alpha_.build(1, &file_alpha); - - double cutoff = orb_.rcut_max() + alpha_.rcut_max(); - int nr = static_cast(cutoff / lcao_dr) + 1; - overlap_orb_alpha_.tabulate(orb_, alpha_, 'S', nr, cutoff); - - GlobalV::ofs_running << "read and set from orbital_file : " << ORB.orbital_file[it] << std::endl; - GlobalV::ofs_running << "ucell.ntype, ucell.lmax : " << ucell.ntype << " " << ucell.lmax << std::endl; -#endif - } + ORB.init(GlobalV::ofs_running, + ucell.ntype, + PARAM.inp.orbital_dir, + ucell.orbital_fn, + ucell.descriptor_file, + ucell.lmax, + lcao_ecut, + lcao_dk, + lcao_dr, + lcao_rmax, + PARAM.sys.deepks_setorb, + out_mat_r, + PARAM.input.cal_force, + my_rank); + + ucell.infoNL.setupNonlocal(ucell.ntype, ucell.atoms, GlobalV::ofs_running, ORB); + + std::vector file_orb(ntype); + std::transform(ucell.orbital_fn, ucell.orbital_fn + ntype, file_orb.begin(), [](const std::string& file) { + return PARAM.inp.orbital_dir + file; + }); + orb_.build(ntype, file_orb.data()); + + std::string file_alpha = PARAM.inp.orbital_dir + ucell.descriptor_file; + alpha_.build(1, &file_alpha); + + double rmax = std::max(orb_.rcut_max(), alpha_.rcut_max()); + double cutoff = 2.0 * rmax; + int nr = static_cast(rmax / lcao_dr) + 1; + + orb_.set_uniform_grid(true,nr,cutoff,'i',true); + alpha_.set_uniform_grid(true,nr,cutoff,'i',true); + + overlap_orb_alpha_.tabulate(orb_, alpha_, 'S', nr, cutoff); + return; } diff --git a/source/module_hamilt_lcao/module_deepks/test/klist_1.cpp b/source/module_hamilt_lcao/module_deepks/test/klist_1.cpp index d1085bd3dd..3300ea92d0 100644 --- a/source/module_hamilt_lcao/module_deepks/test/klist_1.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/klist_1.cpp @@ -68,11 +68,11 @@ namespace Test_Deepks this->set_both_kvec(reciprocal_vec, latvec, ofs_running); int deg = 0; - if(PARAM.input.nspin == 1) + if(PARAM.inp.nspin == 1) { deg = 2; } - else if(PARAM.input.nspin == 2||PARAM.input.nspin==4) + else if(PARAM.inp.nspin == 2||PARAM.inp.nspin==4) { deg = 1; } diff --git a/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp b/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp index 9dbe86cbf2..da8b64e4e6 100644 --- a/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp @@ -42,7 +42,7 @@ int calculate() test.check_edelta(); test.check_e_deltabands(); - test.check_f_delta(); + test.check_f_delta_and_stress_delta(); std::cout << " [ ------ ] Total checks : " << test.total_check <0) diff --git a/source/module_hamilt_lcao/module_deepks/test/nnr.cpp b/source/module_hamilt_lcao/module_deepks/test/nnr.cpp deleted file mode 100644 index a7616f7a59..0000000000 --- a/source/module_hamilt_lcao/module_deepks/test/nnr.cpp +++ /dev/null @@ -1,237 +0,0 @@ -#include "LCAO_deepks_test.h" -#define private public -#include "module_parameter/parameter.h" -#undef private -void test_deepks::cal_nnr(void) -{ - ModuleBase::TITLE("test_deepks","cal_nnr"); - - this->nnr = 0; - int start = 0; - //int ind1 = 0; - int iat = 0; - - // (1) find the adjacent atoms of atom[T1,I1]; - ModuleBase::Vector3 tau1; - ModuleBase::Vector3 tau2; - ModuleBase::Vector3 dtau; - ModuleBase::Vector3 tau0; - ModuleBase::Vector3 dtau1; - ModuleBase::Vector3 dtau2; - - for (int T1 = 0; T1 < ucell.ntype; T1++) - { - for (int I1 = 0; I1 < ucell.atoms[T1].na; I1++) - { - tau1 = ucell.atoms[T1].tau[I1]; - Test_Deepks::GridD.Find_atom(ucell, tau1 ,T1, I1); - const int start1 = ucell.itiaiw2iwt(T1, I1, 0); - int nw1 = ucell.atoms[T1].nw; - - // (2) search among all adjacent atoms. - for (int ad = 0; ad < Test_Deepks::GridD.getAdjacentNum()+1; ad++) - { - const int T2 = Test_Deepks::GridD.getType(ad); - const int I2 = Test_Deepks::GridD.getNatom(ad); - const int start2 = ucell.itiaiw2iwt(T2, I2, 0); - int nw2 = ucell.atoms[T2].nw; - - tau2 = Test_Deepks::GridD.getAdjacentTau(ad); - - dtau = tau2 - tau1; - double distance = dtau.norm() * ucell.lat0; - double rcut = ORB.Phi[T1].getRcut() + ORB.Phi[T2].getRcut(); - - if(distance < rcut) - { - //-------------------------------------------------- - // calculate how many matrix elements are in - // this processor. - for(int ii=0; ii are adjacents while are also - // adjacents, these considerations are only considered in k-point - // algorithm, - // mohan fix bug 2012-07-03 - else if(distance >= rcut) - { - for (int ad0 = 0; ad0 < Test_Deepks::GridD.getAdjacentNum()+1; ++ad0) - { - const int T0 = Test_Deepks::GridD.getType(ad0); - const int I0 = Test_Deepks::GridD.getNatom(ad0); - - tau0 = Test_Deepks::GridD.getAdjacentTau(ad0); - dtau1 = tau0 - tau1; - double distance1 = dtau1.norm() * ucell.lat0; - double rcut1 = ORB.Phi[T1].getRcut() + ucell.infoNL.Beta[T0].get_rcut_max(); - - dtau2 = tau0 - tau2; - double distance2 = dtau2.norm() * ucell.lat0; - double rcut2 = ORB.Phi[T2].getRcut() + ucell.infoNL.Beta[T0].get_rcut_max(); - - if( distance1 < rcut1 && distance2 < rcut2 ) - { - for(int ii=0; ii dtau; - ModuleBase::Vector3 tau1; - ModuleBase::Vector3 tau2; - - ModuleBase::Vector3 dtau1; - ModuleBase::Vector3 dtau2; - ModuleBase::Vector3 tau0; - - for(int ik=0;ikna; ++I1) - { - tau1 = atom1->tau[I1]; - Test_Deepks::GridD.Find_atom(ucell, tau1, T1, I1); - Atom* atom1 = &ucell.atoms[T1]; - const int start = ucell.itiaiw2iwt(T1,I1,0); - - // (2) search among all adjacent atoms. - for (int ad = 0; ad < Test_Deepks::GridD.getAdjacentNum()+1; ++ad) - { - const int T2 = Test_Deepks::GridD.getType(ad); - const int I2 = Test_Deepks::GridD.getNatom(ad); - Atom* atom2 = &ucell.atoms[T2]; - - tau2 = Test_Deepks::GridD.getAdjacentTau(ad); - dtau = tau2 - tau1; - double distance = dtau.norm() * ucell.lat0; - double rcut = ORB.Phi[T1].getRcut() + ORB.Phi[T2].getRcut(); - - bool adj = false; - - if(distance < rcut) - { - adj = true; - } - else if(distance >= rcut) - { - for (int ad0 = 0; ad0 < Test_Deepks::GridD.getAdjacentNum()+1; ++ad0) - { - const int T0 = Test_Deepks::GridD.getType(ad0); - const int I0 = Test_Deepks::GridD.getNatom(ad0); - - tau0 = Test_Deepks::GridD.getAdjacentTau(ad0); - dtau1 = tau0 - tau1; - dtau2 = tau0 - tau2; - - double distance1 = dtau1.norm() * ucell.lat0; - double distance2 = dtau2.norm() * ucell.lat0; - - double rcut1 = ORB.Phi[T1].getRcut() + ucell.infoNL.Beta[T0].get_rcut_max(); - double rcut2 = ORB.Phi[T2].getRcut() + ucell.infoNL.Beta[T0].get_rcut_max(); - - if( distance1 < rcut1 && distance2 < rcut2 ) - { - adj = true; - break; - } - } - } - - if(adj) // mohan fix bug 2011-06-26, should not be '<=' - { - // (3) calculate the nu of atom (T2, I2) - const int start2 = ucell.itiaiw2iwt(T2,I2,0); - //------------------------------------------------ - // exp(k dot dR) - // dR is the index of box in Crystal coordinates - //------------------------------------------------ - ModuleBase::Vector3 dR(Test_Deepks::GridD.getBox(ad).x, Test_Deepks::GridD.getBox(ad).y, Test_Deepks::GridD.getBox(ad).z); - const double arg = ( kv.kvec_d[ik] * dR ) * ModuleBase::TWO_PI; - const std::complex kphase = std::complex ( cos(arg), sin(arg) ); - - //-------------------------------------------------- - // calculate how many matrix elements are in - // this processor. - //-------------------------------------------------- - for(int ii=0; iinw*PARAM.sys.npol; ii++) - { - // the index of orbitals in this processor - const int iw1_all = start + ii; - const int mu = ParaO.global2local_row(iw1_all); - if(mu<0)continue; - - for(int jj=0; jjnw*PARAM.sys.npol; jj++) - { - int iw2_all = start2 + jj; - const int nu = ParaO.global2local_col(iw2_all); - - if(nu<0)continue; - int iic; - if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.input.ks_solver) ) - { - iic=mu+nu*ParaO.nrow; - } - else - { - iic=mu*ParaO.ncol+nu; - } - ld.H_V_delta_k[ik][iic] += ld.H_V_deltaR[index] * kphase; - - ++index; - }//end jj - }//end ii - } - }// end ad - ++iat; - }// end I1 - } // end T1 - assert(index==this->nnr); - } -} diff --git a/source/module_hsolver/test/test_hsolver_sdft.cpp b/source/module_hsolver/test/test_hsolver_sdft.cpp index 642ee9daae..ae1e8d76fd 100644 --- a/source/module_hsolver/test/test_hsolver_sdft.cpp +++ b/source/module_hsolver/test/test_hsolver_sdft.cpp @@ -50,7 +50,6 @@ Stochastic_Iter::Stochastic_Iter() template Stochastic_Iter::~Stochastic_Iter(){}; -template class Stochastic_Iter, base_device::DEVICE_CPU>; template void Stochastic_Iter::init(K_Vectors* pkv_in, @@ -130,6 +129,8 @@ void Stochastic_Iter::cal_storho(const UnitCell& ucell, { } +template class Stochastic_Iter, base_device::DEVICE_CPU>; + Charge::Charge(){}; Charge::~Charge(){}; diff --git a/tests/deepks/603_NO_deepks_H2O_multik/INPUT b/tests/deepks/603_NO_deepks_H2O_multik/INPUT index 18d203c96b..2aeb7f23f5 100644 --- a/tests/deepks/603_NO_deepks_H2O_multik/INPUT +++ b/tests/deepks/603_NO_deepks_H2O_multik/INPUT @@ -2,8 +2,8 @@ INPUT_PARAMETERS calculation scf suffix autotest -ecutwfc 100.000000 -scf_thr 5.000000e-07 +ecutwfc 50.000000 +scf_thr 1.000000e-06 scf_nmax 35 pseudo_dir ../../PP_ORB orbital_dir ../../PP_ORB diff --git a/tests/deepks/603_NO_deepks_H2O_multik/STRU b/tests/deepks/603_NO_deepks_H2O_multik/STRU index 073843fd01..6cb1f1426d 100644 --- a/tests/deepks/603_NO_deepks_H2O_multik/STRU +++ b/tests/deepks/603_NO_deepks_H2O_multik/STRU @@ -6,9 +6,9 @@ LATTICE_CONSTANT 1 LATTICE_VECTORS -5.8792613172 0.0 0.0 -0.0 5.8792613172 0.0 -0.0 0.0 5.8792613172 +7 0.0 0.0 +0.0 7 0.0 +0.0 0.0 7 ATOMIC_POSITIONS Cartesian # Cartesian(Unit is LATTICE_CONSTANT) diff --git a/tests/deepks/603_NO_deepks_H2O_multik/result.ref b/tests/deepks/603_NO_deepks_H2O_multik/result.ref index 43fbe1f389..24a55fdf3f 100644 --- a/tests/deepks/603_NO_deepks_H2O_multik/result.ref +++ b/tests/deepks/603_NO_deepks_H2O_multik/result.ref @@ -1,4 +1,4 @@ -etotref -466.8863937897737 -etotperatomref -155.6287979299 -totalforceref 9.640495 -totaltimeref 5.86 +etotref -466.8999964506085 +etotperatomref -155.6333321502 +totalforceref 10.047085 +totaltimeref 21.21 diff --git a/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/INPUT b/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/INPUT index cef0bd1354..308036fb13 100644 --- a/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/INPUT +++ b/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/INPUT @@ -4,8 +4,8 @@ suffix autotest pseudo_dir ../../PP_ORB orbital_dir ../../PP_ORB -ecutwfc 60.000000 -scf_thr 5.000000e-07 +ecutwfc 50.000000 +scf_thr 1.000000e-06 scf_nmax 35 basis_type lcao dft_functional lda diff --git a/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/KPT b/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/KPT index b89c9880d6..19c2448c40 100644 --- a/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/KPT +++ b/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/KPT @@ -1,4 +1,4 @@ K_POINTS 0 Gamma -4 4 4 0 0 0 \ No newline at end of file +2 2 2 0 0 0 \ No newline at end of file diff --git a/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/STRU b/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/STRU index 2daced88a5..ac554b904f 100644 --- a/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/STRU +++ b/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/STRU @@ -7,9 +7,9 @@ LATTICE_CONSTANT 1.88972613 LATTICE_VECTORS -5.1358423233 0.0 0.0 -0.1578526541 5.1334159104 0.0 --2.646847675 -2.5667081359 3.5753437737 +6.5 0.0 0.0 +0 10 0.0 +-3.5 -3.5 5.5 ATOMIC_POSITIONS Cartesian # Cartesian(Unit is LATTICE_CONSTANT) diff --git a/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/result.ref b/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/result.ref index 1b722c3c46..75da69ac05 100644 --- a/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/result.ref +++ b/tests/deepks/603_NO_deepks_SiO2_bandgap_multik/result.ref @@ -1,11 +1,11 @@ -etotref -1958.3608711386157211 -etotperatomref -326.3934785231 -totalforceref 33.057695 -totalstressref 279.260111 -totaldes 13.256027 -deepks_e_dm -224.21161067867445 -deepks_f_label 71.31484483346455 -deepks_s_label 164.31396229224615 -odelta 0.026994440153412902 -oprec 26.18203117034944 -totaltimeref 22.75 +etotref -1946.6192712234942519 +etotperatomref -324.4365452039 +totalforceref 32.200542 +totalstressref 111.359237 +totaldes 12.208233 +deepks_e_dm -233.1079723669145 +deepks_f_label 57.62761995350644 +deepks_s_label 106.76696458677478 +odelta -0.001860574012843015 +oprec -0.7420199384115197 +totaltimeref 23.80 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_x_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_x_ref.dat similarity index 97% rename from tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_x_ref.dat rename to tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_x_ref.dat index fefa216827..ff45be1e5b 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_x_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_x_ref.dat @@ -5,7 +5,7 @@ iw : 23 0.00511216377 -0.00553103091 -0.004616766907 -0.002057782686 0.001997853613 0.001198669861 0.0008867973828 0.01753222857 0.2227584431 -0.04236557659 0.04368836586 0.09912329758 -0.1055703103 0.04045453794 -0.0006020380254 -0.09775595947 0.01923322417 -0.03578073066 --0.04647593022 -5.018201679e-05 -0.01050661861 0.0001212618274 -0.006870671556 0.0001110835391 +-0.04647593022 -5.018201679e-05 -0.01050661861 0.0001212618275 -0.006870671556 0.0001110835391 0.01660256486 -0.005434995126 0.01041903853 0.01313333906 -0.0005732442614 0.001080319071 0.001385210304 0.001814878212 0.0008919194791 -0.004385544119 0.001883240867 -0.004426900368 -0.004550738367 0.0001960236631 0.0007707482845 -0.0004736794 -0.0004440498369 -0.001209998226 @@ -126,7 +126,7 @@ iw : 28 -0.005020462813 0.001274298217 0.001051485839 -0.00198000349 0.001702271566 0.002515612121 0.000847919081 0.0005225518276 -0.001900109688 0.002283035459 0.001250171579 0.0008554671847 0.0009480587874 -0.0005325783979 -0.0004301624218 0.002268169564 -0.0005154371299 -0.0005344836898 -0.0004417558016 2.053790074e-05 -0.00127871779 +0.0004417558016 2.053790075e-05 -0.00127871779 iw : 29 0.0354176837 -0.03969464542 -0.112632177 -0.03497927807 0.03717496353 0.04779153783 0.0139331967 -0.006345927469 -0.0121120173 -0.003790052048 0.0007272642459 0.003896392261 @@ -306,17 +306,17 @@ iw : 17 0.0001999673119 -2.631426802e-06 1.202015268e-05 8.371725275e-05 -1.126517241e-06 -5.231708122e-06 -3.613599911e-05 -1.039672511e-07 -4.942098713e-07 -3.413850519e-06 3.975209011e-07 -4.985663172e-06 -3.463166652e-05 3.929738294e-07 1.986967792e-06 1.372894581e-05 4.670050113e-06 -0.0001783804713 --0.001237338441 2.073355307e-10 0.1526509473 2.16305156e-05 -0.0006836848102 -0.004743247117 -2.006131177e-09 0.2264368896 4.461186898e-05 -0.001099176468 -0.00762809526 6.418262136e-09 +-0.001237338441 2.0733553e-10 0.1526509473 2.16305156e-05 -0.0006836848102 -0.004743247117 +2.00613118e-09 0.2264368896 4.461186898e-05 -0.001099176468 -0.00762809526 6.418262135e-09 0.1690753839 5.379491666e-05 -0.0009860258622 -0.006846018927 1.022893081e-08 0.07617752908 4.327511145e-05 -0.0005416482269 -0.003763843888 1.007358311e-08 0.01184069963 2.292069214e-05 -0.0001566029714 -0.001090608848 6.291481941e-09 -0.004570162606 7.009625729e-06 1.564919796e-05 0.0001068434256 2.391309739e-09 -0.006226665875 -2.080597034e-07 4.120379624e-05 0.000285609652 -2.366788818e-10 -0.001114966442 -2.179051375e-06 2.555447012e-05 0.0001776056601 -5.179532464e-10 --0.0008947224842 -1.406085397e-06 5.638874786e-06 3.940323614e-05 -4.138243929e-10 0.0009295061466 --6.477844483e-07 -1.575245065e-06 -1.07683348e-05 -2.213862379e-10 -0.0003787711608 4.659398778e-08 --4.844537316e-06 -3.358568103e-05 -2.056596355e-11 0.0006503710751 3.902600049e-07 -2.524006831e-06 --1.758211978e-05 1.073928428e-10 -0.0005298739787 +2.366788823e-10 -0.001114966442 -2.179051375e-06 2.555447012e-05 0.0001776056601 -5.179532469e-10 +-0.0008947224842 -1.406085397e-06 5.638874786e-06 3.940323614e-05 -4.138243924e-10 0.0009295061466 +-6.477844483e-07 -1.575245065e-06 -1.07683348e-05 -2.213862384e-10 -0.0003787711608 4.659398778e-08 +-4.844537316e-06 -3.358568103e-05 -2.05659633e-11 0.0006503710751 3.902600049e-07 -2.524006831e-06 +-1.758211978e-05 1.073928423e-10 -0.0005298739787 ad : 3 2.100474535 iw : 18 0.1068293825 0.2501395016 0.1458439973 0.01197676999 -0.0492697578 -0.02915661171 @@ -420,7 +420,7 @@ iw : 22 0.007635246547 1.430966269e-05 0.02157106626 -3.860462065e-06 7.818368809e-06 0.001980294267 1.28508273e-05 0.00770924269 -3.802699117e-06 4.23574866e-06 -0.001055733294 6.03956165e-06 -0.003463994077 5.76456922e-07 -1.499709733e-06 -0.0005839204918 -2.553475993e-06 -0.001064664648 -5.231611232e-08 -5.908609187e-07 -0.0004474885511 -1.100272801e-06 -0.002077885296 1.609797518e-06 +5.231611233e-08 -5.908609187e-07 -0.0004474885511 -1.100272801e-06 -0.002077885296 1.609797518e-06 -1.843931185e-06 0.0004028470243 -2.653770534e-06 0.001726209774 -8.442026817e-07 1.19137661e-06 -1.660478734e-05 1.820236869e-06 -0.0005798769718 ad : 4 0 @@ -824,7 +824,7 @@ iw : 28 -0.001821460641 0.002661359728 0.001153783424 -0.00408975626 0.002801933545 0.0002613946811 -0.002760540394 -0.0001228156957 0.001981309736 -0.0007485868366 -0.0003910247592 0.001337362232 -0.0009794251894 -0.001515460168 -0.0009257743946 0.000949761682 -0.001022918908 0.0004334537699 -0.00212238676 -1.316295104e-05 -0.0007613800919 0.001432587668 5.664819078e-07 -0.002058714061 +0.00212238676 -1.316295104e-05 -0.0007613800919 0.001432587668 5.664819077e-07 -0.002058714061 0.000600481686 0.0004833173315 -0.001389609298 iw : 29 0.02821015116 -0.01604238049 0.006106861024 0.0415802118 -0.00462919365 -0.01734468104 @@ -923,7 +923,7 @@ iw : 0 1.379475715e-07 1.549896245e-05 0.001002373421 4.373805372e-08 0.003667511107 -0.2333849762 5.034592563e-06 -0.004568277808 -0.0006586121271 0.004677962848 -0.1963686141 1.20167614e-05 -0.003844258579 -0.0005541519969 0.002671003874 -0.07437432959 8.94581468e-06 -0.00145631187 --0.0002098842702 -2.076732254e-05 0.002442141515 3.3374524e-08 4.779651852e-05 6.891720469e-06 +-0.0002098842702 -2.076732255e-05 0.002442141515 3.337452399e-08 4.779651852e-05 6.891720469e-06 -0.001108291047 0.004338389286 -5.176559489e-06 8.527181293e-05 1.224292944e-05 -0.0006661123421 -0.00494113617 -3.528109063e-06 -9.646597375e-05 -1.394388043e-05 0.0002566971368 -0.01286769022 5.438651629e-07 -0.0002518906335 -3.631260659e-05 0.0006297028207 -0.005090763729 2.796184383e-06 @@ -950,7 +950,7 @@ iw : 1 1.041641641e-06 -0.0002423568018 -3.493302914e-05 0.00100428583 -0.01644545092 3.999702321e-06 -0.0003221558175 -4.640904306e-05 0.0003656660678 0.005648306823 2.098901779e-06 0.0001104060992 1.593951518e-05 0.0001452623968 -0.00489103581 4.397881726e-07 -9.576030151e-05 -1.380249728e-05 --8.550273078e-05 0.005409247425 -1.191296227e-07 0.0001058807848 1.526488984e-05 4.594854333e-05 +-8.550273079e-05 0.005409247425 -1.191296227e-07 0.0001058807848 1.526488984e-05 4.594854333e-05 -0.00456717647 -2.766699249e-08 -8.938917463e-05 -1.28885666e-05 -3.821156821e-05 0.004297745719 5.059820143e-08 8.411415067e-05 1.212823334e-05 iw : 2 @@ -1005,17 +1005,17 @@ iw : 4 -0.0002924923785 4.671198765e-06 -1.736686813e-05 -0.0001210710933 2.698154886e-06 6.762488516e-06 4.654443512e-05 2.639114976e-07 8.101063528e-06 5.615132738e-05 -9.346440915e-07 7.287569643e-06 5.066811417e-05 -8.716418671e-07 -5.500505715e-07 -3.699533573e-06 6.478341931e-06 -0.0002476351413 --0.001717723247 2.862722092e-10 0.2300137364 2.023956699e-05 -0.000639870617 -0.004439273282 -1.876023105e-09 0.20171166 3.194796105e-05 -0.0007867677678 -0.005460036337 4.599160093e-09 -0.1280958751 3.572328009e-05 -0.0006552289911 -0.004549276793 6.789405673e-09 0.04510352062 -3.060547323e-05 -0.0003827073456 -0.002659390807 7.127005052e-09 0.0129823995 2.005285876e-05 --0.0001370761334 -0.0009546184704 5.503799728e-09 -0.008130026149 8.231821347e-06 1.764578324e-05 -0.000120399471 2.80287423e-09 -0.003392490156 -4.299253042e-07 6.476190649e-05 0.0004489295493 -3.38559047e-10 -0.00544766828 -4.331862543e-06 5.152621547e-05 0.0003580971701 -1.024230521e-09 -0.001842677603 -3.884935164e-06 1.57025859e-05 0.0001097192946 -1.142624598e-09 -0.001238862313 --1.751557028e-06 -4.581863375e-06 -3.135203565e-05 -6.008309581e-10 0.002405616572 1.187700582e-07 --1.0848818e-05 -7.521477352e-05 -4.151504621e-11 -0.001421236882 6.996193739e-07 -4.781671829e-06 --3.329983295e-05 1.907220123e-10 0.001473226677 +-0.001717723247 2.862722084e-10 0.2300137364 2.023956699e-05 -0.000639870617 -0.004439273282 +1.876023102e-09 0.20171166 3.194796105e-05 -0.0007867677678 -0.005460036337 4.599160095e-09 +0.1280958751 3.572328009e-05 -0.0006552289911 -0.004549276793 6.789405672e-09 0.04510352062 +3.060547323e-05 -0.0003827073456 -0.002659390807 7.127005054e-09 0.0129823995 2.005285876e-05 +-0.0001370761334 -0.0009546184704 5.503799726e-09 -0.008130026149 8.231821347e-06 1.764578324e-05 +0.000120399471 2.802874232e-09 -0.003392490156 -4.299253042e-07 6.476190649e-05 0.0004489295493 +3.385590462e-10 -0.00544766828 -4.331862543e-06 5.152621547e-05 0.0003580971701 -1.02423052e-09 +0.001842677603 -3.884935164e-06 1.57025859e-05 0.0001097192946 -1.142624599e-09 -0.001238862313 +-1.751557028e-06 -4.581863375e-06 -3.135203565e-05 -6.00830957e-10 0.002405616572 1.187700582e-07 +-1.0848818e-05 -7.521477352e-05 -4.151504603e-11 -0.001421236882 6.996193739e-07 -4.781671829e-06 +-3.329983295e-05 1.907220129e-10 0.001473226677 iw : 5 -0.0006879443148 -0.001283712866 0.003570949568 0.008094339405 0.006981956784 0.002008361358 -0.001746947091 -0.002533664856 -0.001546918959 -0.0001819584602 0.0005946391563 0.0005713689243 @@ -1035,7 +1035,7 @@ iw : 5 0.0007384821114 0.000106505215 -0.00150885287 0.02170388897 -7.37679063e-06 0.0005715201958 8.23129782e-05 -0.00196909584 0.01735684708 -9.62661999e-06 0.0001943575502 2.792115223e-05 -0.001096587748 -0.007848511018 -5.360963324e-06 -6.141007336e-05 -8.906046496e-06 -0.000121293016 -0.0003766290708 -5.929226835e-07 -0.0001006715382 -1.451808714e-05 0.0002389852587 -0.007395758058 +0.0003766290708 -5.929226834e-07 -0.0001006715382 -1.451808714e-05 0.0002389852587 -0.007395758058 1.168377579e-06 -5.0243318e-05 -7.231080392e-06 iw : 6 0.1813118418 0.1090165584 -0.1077893037 -0.07546794253 -0.007994708863 0.04526818767 @@ -1068,17 +1068,17 @@ iw : 7 -0.0005160049921 7.542655311e-06 -2.261605586e-05 -0.0001578588941 4.477640627e-06 6.184208191e-06 4.229751047e-05 4.322317153e-07 1.796280501e-05 0.00012452688 -1.434877945e-06 7.232501311e-06 5.035244794e-05 -1.19380205e-06 2.65159169e-06 1.854871693e-05 -3.411536319e-06 0.0001308247922 -0.0009074647522 -1.476727721e-10 -0.1541466872 8.407665249e-06 -0.0002654320795 -0.001841508657 -7.820471146e-10 0.1115388189 3.355115796e-05 -0.0008273946084 -0.005741969102 4.821574505e-09 -0.1106127687 5.28821637e-05 -0.0009682478322 -0.006722598458 1.006302283e-08 0.08761590865 +0.0009074647522 -1.476727704e-10 -0.1541466872 8.407665249e-06 -0.0002654320795 -0.001841508657 +7.820471146e-10 0.1115388189 3.355115796e-05 -0.0008273946084 -0.005741969102 4.821574506e-09 +0.1106127687 5.28821637e-05 -0.0009682478322 -0.006722598458 1.006302284e-08 0.08761590865 5.213365642e-05 -0.0006538784486 -0.004543692412 1.212579732e-08 0.004023374054 3.410720462e-05 -0.0002312241068 -0.001610343618 9.375274701e-09 0.001597942974 1.335139578e-05 2.684789958e-05 -0.0001829964154 4.533118965e-09 -0.01871868298 -6.982237956e-07 0.000106505215 0.0007382922004 -5.594857736e-10 0.002859035453 -7.054392436e-06 8.23129782e-05 0.0005720899925 -1.679569589e-09 --0.007464203571 -6.510071927e-06 2.792115223e-05 0.0001950031867 -1.903031983e-09 0.007462821015 --2.796087686e-06 -8.906046496e-06 -6.108074076e-05 -9.706968249e-10 -0.004692600564 1.496764515e-07 --1.451808714e-05 -0.0001006516014 -5.872143668e-11 0.005521199448 9.204205861e-07 -7.231080392e-06 --5.032614099e-05 2.441620333e-10 -0.004833381788 +0.0001829964154 4.533118963e-09 -0.01871868298 -6.982237956e-07 0.000106505215 0.0007382922004 +5.59485776e-10 0.002859035453 -7.054392436e-06 8.23129782e-05 0.0005720899925 -1.67956959e-09 +-0.007464203571 -6.510071927e-06 2.792115223e-05 0.0001950031867 -1.903031982e-09 0.007462821015 +-2.796087686e-06 -8.906046496e-06 -6.108074076e-05 -9.706968242e-10 -0.004692600564 1.496764515e-07 +-1.451808714e-05 -0.0001006516014 -5.872143477e-11 0.005521199448 9.204205861e-07 -7.231080392e-06 +-5.032614099e-05 2.441620343e-10 -0.004833381788 iw : 8 0.0003402109967 0.003520330596 0.008623593557 0.01111025725 0.009824517138 0.006344272713 0.001901782327 -0.0005255582914 -0.0008486284455 -0.0004814427291 -0.0001523025908 0.0001065026233 @@ -1089,7 +1089,7 @@ iw : 8 -2.364767546e-06 0.0001845930124 -0.008119165194 1.651436685e-06 0.0005348398117 -0.002030763138 1.996329807e-06 0.000458347938 -0.0008739414529 1.355395231e-06 0.0001993941922 0.002051635659 3.539605205e-07 -5.219403679e-05 0.0003830043416 -3.060896626e-07 0.003020407365 0.04134784569 -2.444153088e-07 -0.00271736928 -0.0003917617047 0.005650013873 0.02559098466 3.639869542e-06 +2.444153089e-07 -0.00271736928 -0.0003917617047 0.005650013873 0.02559098466 3.639869542e-06 -0.006996365549 -0.001008542977 0.005305336074 -0.07332984476 1.344808799e-05 -0.008737289474 -0.00125929611 0.005020293289 -0.1529856297 2.753079936e-05 -0.007936686565 -0.001143657584 0.005780157737 -0.1737519396 4.040694804e-05 -0.005914414586 -0.0008519881673 0.005852448834 @@ -1130,39 +1130,39 @@ iw : 10 0.00214933003 -2.231503227e-05 4.286446094e-05 0.0003003734481 -6.347599256e-06 -3.843900265e-05 -0.0002658564337 9.025642208e-07 -3.331763095e-05 -0.0002312867722 2.614778678e-06 -1.430931833e-05 -9.96292869e-05 2.240777756e-06 -1.782548656e-06 -1.266539468e-05 9.747747875e-07 6.173821579e-06 -4.270622807e-05 -2.551835567e-07 4.677475521e-06 3.248739621e-05 2.444153088e-07 0.0002020489277 -0.001401530358 7.942318093e-11 0.104022116 3.639869542e-06 0.000124795898 0.0008660063403 -1.182675565e-09 0.2211104785 1.344808799e-05 -0.0003589843744 -0.002490385256 4.369388089e-09 -0.215298556 2.753079936e-05 -0.0007484413336 -0.005194277542 8.944424185e-09 0.1456503379 -4.040694804e-05 -0.0008498856969 -0.005901089887 1.312706698e-08 0.07398879698 3.97717435e-05 --0.0005809993832 -0.004037120769 1.292041674e-08 0.02085136898 2.469737219e-05 -0.0002228524304 --0.001550753592 8.02396466e-09 -0.00190056504 9.738038405e-06 -2.478876572e-05 -0.0001741314286 -3.165157219e-09 -0.0037446958 2.02989804e-06 2.594924412e-05 0.0001794235938 6.618666715e-10 --0.002352310009 -1.371654251e-06 3.14774596e-05 0.000218548106 -4.428658646e-10 -0.0004010551764 --2.549054371e-06 1.680584786e-05 0.0001171023954 -8.253965134e-10 2.404626926e-05 -2.070476859e-06 -3.965202415e-06 2.797143996e-05 -6.709932184e-10 0.0006178181605 -3.808363508e-07 -5.645808367e-06 --3.905524889e-05 -1.237872951e-10 1.682707156e-05 +4.270622807e-05 -2.551835567e-07 4.677475521e-06 3.248739621e-05 2.444153089e-07 0.0002020489277 +0.001401530358 7.942321112e-11 0.104022116 3.639869542e-06 0.000124795898 0.0008660063403 +1.182675571e-09 0.2211104785 1.344808799e-05 -0.0003589843744 -0.002490385256 4.369388106e-09 +0.215298556 2.753079936e-05 -0.0007484413336 -0.005194277542 8.94442419e-09 0.1456503379 +4.040694804e-05 -0.0008498856969 -0.005901089887 1.312706699e-08 0.07398879698 3.97717435e-05 +-0.0005809993832 -0.004037120769 1.292041673e-08 0.02085136898 2.469737219e-05 -0.0002228524304 +-0.001550753592 8.023964676e-09 -0.00190056504 9.738038405e-06 -2.478876572e-05 -0.0001741314286 +3.165157219e-09 -0.0037446958 2.02989804e-06 2.594924412e-05 0.0001794235938 6.618666677e-10 +-0.002352310009 -1.371654251e-06 3.14774596e-05 0.000218548106 -4.428658656e-10 -0.0004010551764 +-2.549054371e-06 1.680584786e-05 0.0001171023954 -8.253965089e-10 2.404626926e-05 -2.070476859e-06 +3.965202415e-06 2.797143996e-05 -6.709932206e-10 0.0006178181605 -3.808363508e-07 -5.645808367e-06 +-3.905524889e-05 -1.237872957e-10 1.682707156e-05 iw : 11 -0.0005226538231 -0.004120207222 -0.006856717099 -0.005667958828 -0.002864745964 -0.0006519086311 0.0004474974647 0.0004284134517 0.0001659017376 8.329395971e-06 -3.21845013e-05 -4.196114856e-05 --1.483801762e-05 0.0006024178475 -0.117574231 -6.116643285e-11 0.003468696863 -0.2414220011 --1.036605959e-09 0.006264035554 -0.1879514348 -3.97647222e-09 0.006257547239 -0.0988932058 --7.240841107e-09 0.004541933275 -0.02764265021 -9.224612163e-09 0.002146545879 -0.001436383186 --8.205346945e-09 0.0002988994257 0.008906947837 -4.344151257e-09 -0.0002662131557 0.001692768732 --1.051245061e-09 -0.0002311884889 0.002256506287 2.897411615e-10 -9.944563136e-05 -0.001553206976 -5.413381663e-10 -1.252093422e-05 0.0008820542995 4.257968667e-10 4.276051926e-05 -0.001365806868 -1.600127863e-10 3.246554896e-05 0.0009941082433 -6.441526013e-11 -0.00271736928 0.1040038703 -7.942318093e-11 0.006108178964 -5.221817258e-08 -0.006996365549 0.2210109298 1.182675565e-09 -0.01298446823 -2.849015987e-07 -0.008737289474 0.2151057707 4.369388089e-09 0.01264452661 --5.517375501e-07 -0.007936686565 0.1454190231 8.944424185e-09 0.008555501749 -6.620038996e-07 --0.005914414586 0.07377751846 1.312706698e-08 0.004347430786 -6.046588013e-07 -0.003036220343 -0.02072360667 1.292041674e-08 0.001226151119 -3.656406244e-07 -0.0008296822325 -0.001944044254 -8.02396466e-09 -0.0001109792122 -1.244303174e-07 2.700835693e-05 -0.003747576222 3.165157219e-09 --0.0002198372902 -8.241800428e-09 0.000183517251 -0.002345821679 6.618666715e-10 -0.0001382129964 -1.856957687e-08 0.0001397411181 -0.0003945468477 -4.428658646e-10 -2.364083685e-05 1.862618735e-08 -6.665966133e-05 2.739542038e-05 -8.253965134e-10 1.36445282e-06 9.584597534e-09 -4.922649919e-06 -0.0006182706835 -6.709932184e-10 3.627007144e-05 1.294712505e-09 -2.315241135e-05 1.569362816e-05 --1.237872951e-10 1.00390096e-06 -3.243915841e-09 +-1.483801762e-05 0.0006024178475 -0.117574231 -6.116643174e-11 0.003468696863 -0.2414220011 +-1.036605958e-09 0.006264035554 -0.1879514348 -3.976472222e-09 0.006257547239 -0.0988932058 +-7.240841106e-09 0.004541933275 -0.02764265021 -9.224612164e-09 0.002146545879 -0.001436383186 +-8.205346945e-09 0.0002988994257 0.008906947837 -4.344151258e-09 -0.0002662131557 0.001692768732 +-1.051245061e-09 -0.0002311884889 0.002256506287 2.897411614e-10 -9.944563136e-05 -0.001553206976 +5.413381665e-10 -1.252093422e-05 0.0008820542995 4.257968659e-10 4.276051926e-05 -0.001365806868 +1.600127864e-10 3.246554896e-05 0.0009941082433 -6.441526039e-11 -0.00271736928 0.1040038703 +7.942321112e-11 0.006108178964 -5.221817258e-08 -0.006996365549 0.2210109298 1.182675571e-09 +0.01298446823 -2.849015987e-07 -0.008737289474 0.2151057707 4.369388106e-09 0.01264452661 +-5.517375501e-07 -0.007936686565 0.1454190231 8.94442419e-09 0.008555501749 -6.620038996e-07 +-0.005914414586 0.07377751846 1.312706699e-08 0.004347430786 -6.046588013e-07 -0.003036220343 +0.02072360667 1.292041673e-08 0.001226151119 -3.656406244e-07 -0.0008296822325 -0.001944044254 +8.023964676e-09 -0.0001109792122 -1.244303174e-07 2.700835693e-05 -0.003747576222 3.165157219e-09 +-0.0002198372902 -8.241800428e-09 0.000183517251 -0.002345821679 6.618666677e-10 -0.0001382129964 +1.856957687e-08 0.0001397411181 -0.0003945468477 -4.428658656e-10 -2.364083685e-05 1.862618735e-08 +6.665966133e-05 2.739542038e-05 -8.253965089e-10 1.36445282e-06 9.584597534e-09 -4.922649919e-06 +0.0006182706835 -6.709932206e-10 3.627007144e-05 1.294712505e-09 -2.315241135e-05 1.569362816e-05 +-1.237872957e-10 1.00390096e-06 -3.243915841e-09 iw : 12 -7.535528021e-05 -0.0005940030679 -0.0009883858908 -0.0008168336761 -0.0004126452137 -9.370194307e-05 6.462645711e-05 6.175582885e-05 2.388324739e-05 1.177673834e-06 -4.648762672e-06 -6.046015618e-06 @@ -1434,7 +1434,7 @@ iw : 24 -0.05994421898 -0.09210270815 -0.002486480223 -0.001414780806 0.08150451451 0.1371689984 -0.002992766004 -3.811761865e-05 2.462910793e-05 0.006541864007 0.00210279395 0.02934601957 0.0008452041303 0.0005383837544 -0.02113811478 -0.04662647339 0.002917071235 5.385548467e-06 --7.655936819e-05 -0.009274596669 -0.0002970987994 -0.01771506245 -0.0004342421866 -0.0001993174495 +-7.655936819e-05 -0.009274596669 -0.0002970987993 -0.01771506245 -0.0004342421866 -0.0001993174495 0.01969146845 0.02395537484 0.007260158562 0.0001698821206 6.831428255e-05 -0.008807580791 -0.009371705478 0.002370405791 9.148239631e-05 8.188609689e-05 0.0004101752104 -0.005046711634 -0.0003089502108 -3.857842461e-05 -5.476752306e-05 -0.002485191201 0.00212821474 -0.003975674775 @@ -1609,113 +1609,7 @@ iw : 32 0.001049223911 1.099625627e-05 -9.850325338e-06 -0.0004482777723 0.0009297325663 -0.001098037702 -1.742114573e-05 9.993472536e-06 0.0009617189655 -0.0007954283679 0.0005662834385 8.438343612e-06 -5.182977145e-06 -0.0004504851677 0.0001055193138 -ad : 2 3.113220902 -iw : 13 --0.09114504234 -0.1197294104 0.03274937836 0.03694799641 -0.00749328551 -0.01717445757 -0.007463253816 0.003855084848 -0.0007436151861 -0.004446437202 0.003050226305 -0.0002661582423 -0.0005147724569 -0.1037468694 0.08686517586 -0.0001872037771 -0.1450719079 -0.1034334526 --0.0002617718421 -0.004581978204 -0.02224421789 -8.267850695e-06 0.04266894875 0.02625171556 -7.69930545e-05 0.006167285671 0.01554220935 1.11284242e-05 -0.01870167653 -0.01892240264 --3.374583257e-05 -1.581516665e-05 0.001568104652 -2.853733273e-08 0.006702221881 0.002523496685 -1.209367818e-05 0.001194119985 0.004363828661 2.154703778e-06 -0.004620916448 -0.006304512646 --8.33811196e-06 0.001021780666 0.002774363599 1.84372985e-06 0.0007422846317 -0.001342878587 -1.339399324e-06 0.0007055852463 0.002523775537 1.273177918e-06 -0.1406592798 0.07512689448 --0.0002357198563 0.1129953433 0.0001355610872 -0.1020379856 -0.1160121228 -0.000364207739 --0.02510544849 -0.0002093355462 -0.01297426178 -0.05761706511 -9.488194343e-05 -0.0301105793 --0.0001039658572 0.02672420154 0.02467658382 8.892031246e-05 0.002991106539 4.452712379e-05 -0.005046544495 0.03009010533 4.560713269e-05 0.01653416254 5.429543467e-05 -0.007304951793 --0.01730234166 -3.626850543e-05 -0.007447109008 -3.122083326e-05 -0.004093885787 -0.006211228172 --1.63763643e-05 -0.001984805305 -1.120771529e-05 0.004660625488 0.002372604651 1.331947816e-05 --0.0006909135308 4.281194745e-06 0.0004980439149 0.008046957275 1.025425222e-05 0.004820170527 -1.452015665e-05 -0.0008898252355 -0.006172869459 -9.024343216e-06 -0.003459981642 -1.113849974e-05 --0.001383344368 0.000684340596 -2.380006324e-06 0.00107704613 1.234843472e-06 0.001512044786 --0.0008609132435 2.473497061e-06 -0.001248150126 -1.553456137e-06 -0.0005163262235 0.002795713087 -1.990134037e-06 0.001997216382 5.04466354e-06 -iw : 14 -0.06481338386 -0.03234014829 0.02952316186 0.08552201173 -0.02889737809 -0.03339840053 -0.009097191385 0.01632718651 -0.008256963874 -0.002978752592 0.0009384394575 0.003561522538 --0.00245406506 0.02165089638 -0.0613345578 3.906748803e-05 -0.1124456044 -0.04657449448 --0.0002029000198 -0.01528578629 -0.07335932015 -2.758210389e-05 0.103029964 0.09251138418 -0.0001859101727 0.009260993902 0.009641927322 1.671079858e-05 -0.04239623901 -0.02322879844 --7.650096936e-05 -0.002935732289 -0.01580122273 -5.297318137e-06 0.01621232806 0.0213022454 -2.925398198e-05 0.0006437155806 -0.005057621042 1.161538548e-06 -0.007240679203 0.0001246139271 --1.306528576e-05 -1.740988408e-05 -0.006169747507 -3.141488583e-08 0.003476611334 0.008151874682 -6.273295542e-06 -0.0008279596045 -0.005309979195 -1.493993661e-06 -0.01517941144 -0.0149945997 --5.161542086e-05 -0.002313257652 -2.705667859e-05 -0.1353933807 -0.1103963335 -0.0004339289868 --0.005971053934 -0.0001992022577 -0.01398816594 -0.1394959848 -0.0001899736478 -0.0810533532 --0.0002517104891 0.05461947843 0.08431069991 0.0002201230968 0.02738639003 0.0001521326047 -0.02025335183 0.05298006323 0.0001062314633 0.02379262021 9.559872028e-05 -0.02377755824 --0.02170922824 -7.883655137e-05 -0.002506519093 -3.91727437e-05 -0.004109367771 -0.03116553569 --4.468800097e-05 -0.01764802629 -5.623597155e-05 0.005187612371 0.01964496477 3.409327442e-05 -0.009908956375 3.544792848e-05 0.005055063428 0.003271552743 1.52378222e-05 -0.0003109722786 -5.903282036e-06 -0.00560164972 -0.001145757071 -1.407581169e-05 0.00190166255 -2.067436372e-06 -0.001173445069 -0.007686963564 -6.033619445e-06 -0.005376240307 -1.387057385e-05 -0.0007929859928 -0.00609212625 5.094309485e-06 0.004196709318 1.099280442e-05 0.002265386192 -0.001994321513 -2.907598883e-06 -0.002312400666 -3.598609984e-06 -iw : 15 -0.00542000657 0.1324735986 0.1050258264 -0.0842105657 -0.08284968454 0.04033927733 -0.02882078863 -0.0144508199 -0.004989174406 0.00213323722 0.002344154506 -0.0008235332692 --0.002034215228 -0.01397221846 -0.02487030581 5.160266346e-05 0.07181591469 0.03247216033 -0.0003048721796 0.1957324136 0.1685475592 0.0003523674649 -0.0124152553 -0.0008785176359 --8.101465068e-05 -0.1020124487 -0.08541366187 -0.0001981791695 -0.001612065621 -0.00571043549 -2.293889869e-05 0.03213972422 0.02842708648 5.336888089e-05 0.002001629987 0.001659181113 -3.988665989e-06 -0.01096763387 -0.00882434225 -2.345146034e-05 0.0005262875116 -0.000208011086 -4.900512745e-06 0.003846107322 0.003770724826 4.181128704e-06 -0.002367647619 -0.002418759564 --1.990902391e-06 0.0007975994695 0.001107531148 -1.079324306e-06 -0.02553386873 -0.01734070122 --4.950721417e-05 -0.0560048193 -8.224107776e-05 0.019312583 0.003758974366 0.0002428253994 --0.03749279051 0.0001334399628 0.1032613616 0.1962204874 0.0005613194577 0.08608976565 -0.0004578417555 0.03289650863 0.09792179711 0.0001175412363 0.05125207705 0.0001246012376 --0.04179422402 -0.08770309535 -0.0002240312684 -0.03607232502 -0.0001842126171 -0.01891629479 --0.04712057871 -8.401440298e-05 -0.02308508256 -7.734600934e-05 0.01587805246 0.03304045176 -8.254473342e-05 0.01470237626 6.909396048e-05 0.001858848471 0.006573198933 7.571306855e-06 -0.002534643586 7.363117036e-06 -0.001914738934 -0.004699395093 -1.106581586e-05 -0.001340768424 --8.717721832e-06 -0.001891666323 -0.004088446849 -8.181738214e-06 -0.002394027838 -7.658478205e-06 -0.001195428006 0.002041573424 5.608079671e-06 0.0013427371 4.991559157e-06 0.0009725849791 -0.003091192024 4.922268445e-06 0.0009526415308 4.18582968e-06 -0.001038919038 -0.003101651544 --5.380038297e-06 -0.0009701721777 -4.51366778e-06 -iw : 16 -0.002948084669 0.02608463772 0.1202049603 -0.03700300561 -0.07903067634 0.02139259371 -0.02920627365 -0.01141309423 -0.003561084317 -0.0001811543928 0.003634797373 -0.001857876685 --0.000735836086 -0.02487030581 -0.1065387658 -4.487668121e-05 0.03247216033 -0.1663442364 -5.859368189e-05 0.1685475592 0.1459268249 0.0003041319693 -0.0008785176359 0.06420891394 --1.585221999e-06 -0.08541366187 -0.05785732421 -0.0001541228204 -0.00571043549 -0.03356254361 --1.030407085e-05 0.02842708648 0.02958529899 5.129463657e-05 0.001659181113 0.001009857118 -2.993873194e-06 -0.00882434225 -0.003534642013 -1.592289203e-05 -0.000208011086 -0.004558045686 --3.753410701e-07 0.003770724826 0.006302311521 6.80400222e-06 -0.002418759564 -0.004609754483 --4.364477973e-06 0.001107531148 0.003744441261 1.998460439e-06 0.003285008205 -0.1848036095 --8.224107776e-05 -0.05126701492 -0.000333464845 0.1362748853 -0.2135981551 0.0001334399628 --0.162083882 -0.0003854225352 0.1483891839 0.1260466937 0.0004578417555 -0.003286111253 -0.000227442209 -0.01296237305 0.1455943651 0.0001246012376 0.09150429541 0.0002627145785 --0.05322557132 -0.0564512281 -0.0001842126171 -0.009899465725 -0.0001018621881 -0.008515616528 --0.05545934888 -7.734600934e-05 -0.02811493351 -0.0001000724132 0.01871511006 0.02586339751 -6.909396048e-05 0.005875686437 4.666864388e-05 -0.0007293559263 0.006627608874 7.363117036e-06 -0.00534385012 1.195904437e-05 -0.00256589605 -0.001206191314 -8.717721832e-06 -0.0003870152138 --2.176485624e-06 -0.001068910224 -0.005924312485 -7.658478205e-06 -0.002392848099 -1.068999653e-05 -0.00127266332 0.002990817694 4.991559157e-06 0.0005619565149 5.396715796e-06 0.0004431991028 -0.001814626863 4.18582968e-06 0.00155210316 3.27436389e-06 -0.0006683624666 -0.001728422734 --4.51366778e-06 -0.001343793494 -3.118814727e-06 -iw : 17 -9.780012713e-06 0.0002390390974 0.0001895115632 -0.0001519519197 -0.0001494963074 7.278932968e-05 -5.200504382e-05 -2.607546698e-05 -9.002607006e-06 3.849273402e-06 4.229858502e-06 -1.486006657e-06 --3.670595327e-06 5.160266346e-05 -4.487668121e-05 -0.04256991793 0.0003048721796 5.859368189e-05 --0.09714131316 0.0003523674649 0.0003041319693 0.0004537557328 -8.101465068e-05 -1.585221999e-06 -0.03248228442 -0.0001981791695 -0.0001541228204 0.007816539707 2.293889869e-05 -1.030407085e-05 --0.01432458251 5.336888089e-05 5.129463657e-05 0.00256320406 3.988665989e-06 2.993873194e-06 --0.0002088503169 -2.345146034e-05 -1.592289203e-05 0.002028939754 4.900512745e-06 -3.753410701e-07 --0.002189529489 4.181128704e-06 6.80400222e-06 0.001528966033 -1.990902391e-06 -4.364477973e-06 --0.001264308674 -1.079324306e-06 1.998460439e-06 0.001395750612 0.0001814338902 -8.224107776e-05 --0.07279397092 3.029508517e-05 0.02823651258 0.0004680653278 0.0001334399628 -0.1386125741 -0.0001824649944 -0.07019216881 0.0003305131346 0.0004578417555 -0.04613283757 0.000238588293 --0.05751100721 -7.531286656e-05 0.0001246012376 0.04309021097 1.472763089e-05 0.02886899042 --0.0001244637137 -0.0001842126171 0.01569342194 -9.340839539e-05 0.01438576416 -5.10141941e-06 --7.734600934e-05 -0.00928918376 -2.489392785e-05 -0.00425616471 3.971932116e-05 6.909396048e-05 --0.003541355 3.291979277e-05 -0.005250756178 -1.516132936e-06 7.363117036e-06 0.001558321703 -1.761718238e-06 0.002492630335 -8.066074227e-06 -8.717721832e-06 0.001475345534 -5.081520146e-06 -0.0001318824465 1.378024426e-07 -7.658478205e-06 -0.001136256808 -2.269577483e-06 0.000155808067 -1.202783783e-06 4.991559157e-06 0.0003053434931 1.871918748e-06 -0.0007247006223 2.038321824e-06 -4.18582968e-06 -9.065619836e-05 1.882572406e-06 0.0007714454998 -2.537018951e-06 -4.51366778e-06 -0.0002119216218 -2.133022152e-06 -0.0006002203002 -ad : 3 2.100474535 +ad : 2 2.100474535 iw : 0 -0.114106211 -0.2662472869 -0.120739825 -0.007064026188 0.001313341311 -0.01771783593 0.001522075293 0.01240165908 0.01148565895 -0.00209120645 -0.002802712662 -0.002771906088 @@ -1757,7 +1651,7 @@ iw : 1 -2.438802335e-06 -0.00443926054 0.003407526113 -4.200215789e-07 0.008173545804 -2.953914108e-06 0.002050982385 -0.0002434860849 -4.26243684e-07 -0.00306070711 2.110730651e-07 -0.002025417125 0.0003394401062 3.747917809e-07 0.003075779748 -2.942536271e-07 0.001591594009 3.65066539e-05 --4.358566121e-07 -0.002253933992 -3.164686532e-08 +-4.358566121e-07 -0.002253933992 -3.164686533e-08 iw : 2 0.009165946355 0.07118074161 0.1201570225 0.08520812423 0.01472733708 -0.02878889488 -0.02723131426 -0.005744322555 0.009911842029 0.009113874884 0.001619270351 -0.003480323272 @@ -1894,7 +1788,7 @@ iw : 8 3.053392973e-06 -0.004566367688 -0.01453359129 3.976538988e-06 0.0001357589611 -0.005302495718 1.540038023e-06 0.001974775124 0.001503825255 -7.583655272e-07 0.00153748146 0.005289498942 -1.336875122e-06 0.0001108353381 0.00170093967 -5.898107143e-07 -0.1518890517 -0.02355457582 --3.302226859e-07 0.07809842627 -1.065808545e-05 -0.1847507844 -0.04113226768 -4.540762246e-06 +-3.302226858e-07 0.07809842627 -1.065808545e-05 -0.1847507844 -0.04113226768 -4.540762246e-06 0.005723722865 4.989134549e-05 -0.0184476499 -0.007961245387 -1.477542812e-05 -0.162765001 0.0001201781706 0.0847721262 0.04734879723 -2.522385421e-05 -0.1814861699 0.0001035838974 0.07515662072 0.08101036396 -2.836717556e-05 -0.078957658 3.441906169e-05 0.00778673602 @@ -1915,7 +1809,7 @@ iw : 9 -9.389365053e-06 0.007382725383 0.02015370547 -5.688162038e-06 0.002877155721 0.005518994425 -9.355720933e-07 0.001125903883 -0.005168848417 1.81949903e-06 -0.003180078993 -0.006778262376 1.913845526e-06 -0.0004807830321 -0.002309176027 4.666788847e-07 -0.02355457582 -0.2740346025 -1.695369555e-05 0.0005429333841 -1.200415143e-05 -0.04113226768 -0.3375097325 -8.881670766e-06 +1.695369555e-05 0.0005429333843 -1.200415143e-05 -0.04113226768 -0.3375097325 -8.881670766e-06 0.09096914947 -4.605354007e-05 -0.007961245387 -0.04600364136 -5.609636126e-05 0.1539434056 -4.436442934e-05 0.04734879723 0.1333969239 -5.849708372e-05 0.08179431719 8.211911061e-06 0.08101036396 0.1153653891 -2.656503963e-05 -0.03997479712 6.198001591e-05 0.06246429592 @@ -1935,8 +1829,8 @@ iw : 10 -0.002965412902 9.044856404e-06 1.899635323e-06 -0.01087503925 3.072968081e-07 -9.389365053e-06 -0.004347029803 -1.863479842e-06 -5.688162038e-06 1.20224331e-05 -1.160358868e-06 -9.355720933e-07 0.00110406126 1.01078666e-07 1.81949903e-06 0.0006350574156 6.25952188e-07 1.913845526e-06 --2.707308018e-06 4.068890463e-07 4.666788847e-07 -0.000328829084 -3.302226859e-07 1.695369555e-05 --0.1070188358 7.263124798e-07 -0.02069763055 -4.540762246e-06 -8.881670766e-06 -0.1844703838 +-2.707308018e-06 4.068890463e-07 4.666788847e-07 -0.000328829084 -3.302226858e-07 1.695369555e-05 +-0.1070188358 7.263124797e-07 -0.02069763055 -4.540762246e-06 -8.881670766e-06 -0.1844703838 9.987237267e-06 0.009480406111 -1.477542812e-05 -5.609636126e-05 -0.1222606474 3.249800342e-05 0.07544341938 -2.522385421e-05 -5.849708372e-05 -0.03680829772 5.547892734e-05 0.09632472309 -2.836717556e-05 -2.656503963e-05 0.01067757781 6.239254528e-05 0.06969476285 -1.825670725e-05 @@ -1945,7 +1839,7 @@ iw : 10 -3.922744665e-06 -0.00730766833 2.321410235e-06 -1.233743145e-06 -0.0008960964917 -5.105855866e-06 -0.002190920637 1.062055212e-06 -1.794235099e-06 -0.0007103583377 -2.335950608e-06 0.000255144414 -1.975841719e-07 -1.230062189e-06 0.0006139591558 4.345796782e-07 0.001581547033 -8.477865788e-07 -6.698442697e-07 6.177457824e-05 1.864675567e-06 0.000564864175 -3.026785768e-07 3.90216107e-07 +6.698442697e-07 6.177457824e-05 1.864675567e-06 0.0005648641749 -3.026785768e-07 3.90216107e-07 0.0003291507177 6.657301515e-07 5.655667215e-05 iw : 11 0.02771394135 0.1436322642 0.03710390918 -0.1837045853 -0.2251377463 -0.1009910127 @@ -1956,8 +1850,8 @@ iw : 11 5.457862856e-05 -0.008798810475 -0.07155688904 -1.799840192e-06 0.01444034646 0.02219725374 -1.62863916e-05 0.01007084152 0.03173456704 -8.719784195e-06 0.002207466583 0.01026343256 -9.565194694e-07 -0.002901952916 -0.004703606988 3.066161796e-06 -0.003387777534 -0.0113694207 -2.934448031e-06 -0.0009901734714 -0.003484457033 5.733059009e-07 0.07809842627 0.0005429333841 -7.263124798e-07 -0.2431271245 -1.841300753e-05 0.005723722865 0.09096914947 9.987237267e-06 +2.934448031e-06 -0.0009901734714 -0.003484457033 5.733059009e-07 0.07809842627 0.0005429333843 +7.263124797e-07 -0.2431271245 -1.841300753e-05 0.005723722865 0.09096914947 9.987237267e-06 -0.2059050598 -7.064091143e-05 -0.162765001 0.1539434056 3.249800342e-05 0.1221681428 -6.805001198e-05 -0.1814861699 0.08179431719 5.547892734e-05 0.2135365881 1.259612798e-05 -0.078957658 -0.03997479712 6.239254528e-05 0.075462585 9.507030506e-05 0.03247523481 @@ -1987,8 +1881,114 @@ iw : 12 -2.15766301e-06 -0.02065300568 3.446463204e-06 -8.410656334e-06 -0.002190920637 -1.290098897e-05 -0.007128365459 3.893406433e-06 -5.133544981e-06 0.000255144414 -7.87427693e-06 -0.000993026867 2.055148149e-06 -4.411327658e-07 0.001581547033 -6.766514773e-07 0.005072073202 -1.610239285e-06 -3.212671129e-06 0.000564864175 4.927869576e-06 0.001459082805 -9.1153684e-07 1.379585603e-06 +3.212671129e-06 0.0005648641749 4.927869576e-06 0.001459082805 -9.1153684e-07 1.379585603e-06 5.655667215e-05 2.116128325e-06 0.0008688195106 +ad : 3 3.113220902 +iw : 13 +-0.09114504234 -0.1197294104 0.03274937836 0.03694799641 -0.00749328551 -0.01717445757 +0.007463253816 0.003855084848 -0.0007436151861 -0.004446437202 0.003050226305 -0.0002661582423 +0.0005147724569 -0.1037468694 0.08686517586 -0.0001872037771 -0.1450719079 -0.1034334526 +-0.0002617718421 -0.004581978204 -0.02224421789 -8.267850695e-06 0.04266894875 0.02625171556 +7.69930545e-05 0.006167285671 0.01554220935 1.11284242e-05 -0.01870167653 -0.01892240264 +-3.374583257e-05 -1.581516665e-05 0.001568104652 -2.853733273e-08 0.006702221881 0.002523496685 +1.209367818e-05 0.001194119985 0.004363828661 2.154703778e-06 -0.004620916448 -0.006304512646 +-8.33811196e-06 0.001021780666 0.002774363599 1.84372985e-06 0.0007422846317 -0.001342878587 +1.339399324e-06 0.0007055852463 0.002523775537 1.273177918e-06 -0.1406592798 0.07512689448 +-0.0002357198563 0.1129953433 0.0001355610872 -0.1020379856 -0.1160121228 -0.000364207739 +-0.02510544849 -0.0002093355462 -0.01297426178 -0.05761706511 -9.488194343e-05 -0.0301105793 +-0.0001039658572 0.02672420154 0.02467658382 8.892031246e-05 0.002991106539 4.452712379e-05 +0.005046544495 0.03009010533 4.560713269e-05 0.01653416254 5.429543467e-05 -0.007304951793 +-0.01730234166 -3.626850543e-05 -0.007447109008 -3.122083326e-05 -0.004093885787 -0.006211228172 +-1.63763643e-05 -0.001984805305 -1.120771529e-05 0.004660625488 0.002372604651 1.331947816e-05 +-0.0006909135308 4.281194745e-06 0.0004980439149 0.008046957275 1.025425222e-05 0.004820170527 +1.452015665e-05 -0.0008898252355 -0.006172869459 -9.024343216e-06 -0.003459981642 -1.113849974e-05 +-0.001383344368 0.000684340596 -2.380006324e-06 0.00107704613 1.234843472e-06 0.001512044786 +-0.0008609132435 2.473497061e-06 -0.001248150126 -1.553456137e-06 -0.0005163262235 0.002795713087 +1.990134037e-06 0.001997216382 5.04466354e-06 +iw : 14 +0.06481338386 -0.03234014829 0.02952316186 0.08552201173 -0.02889737809 -0.03339840053 +0.009097191385 0.01632718651 -0.008256963874 -0.002978752592 0.0009384394575 0.003561522538 +-0.00245406506 0.02165089638 -0.0613345578 3.906748803e-05 -0.1124456044 -0.04657449448 +-0.0002029000198 -0.01528578629 -0.07335932015 -2.758210389e-05 0.103029964 0.09251138418 +0.0001859101727 0.009260993902 0.009641927322 1.671079858e-05 -0.04239623901 -0.02322879844 +-7.650096936e-05 -0.002935732289 -0.01580122273 -5.297318137e-06 0.01621232806 0.0213022454 +2.925398198e-05 0.0006437155806 -0.005057621042 1.161538548e-06 -0.007240679203 0.0001246139271 +-1.306528576e-05 -1.740988408e-05 -0.006169747507 -3.141488583e-08 0.003476611334 0.008151874682 +6.273295542e-06 -0.0008279596045 -0.005309979195 -1.493993661e-06 -0.01517941144 -0.0149945997 +-5.161542086e-05 -0.002313257652 -2.705667859e-05 -0.1353933807 -0.1103963335 -0.0004339289868 +-0.005971053934 -0.0001992022577 -0.01398816594 -0.1394959848 -0.0001899736478 -0.0810533532 +-0.0002517104891 0.05461947843 0.08431069991 0.0002201230968 0.02738639003 0.0001521326047 +0.02025335183 0.05298006323 0.0001062314633 0.02379262021 9.559872028e-05 -0.02377755824 +-0.02170922824 -7.883655137e-05 -0.002506519093 -3.91727437e-05 -0.004109367771 -0.03116553569 +-4.468800097e-05 -0.01764802629 -5.623597155e-05 0.005187612371 0.01964496477 3.409327442e-05 +0.009908956375 3.544792848e-05 0.005055063428 0.003271552743 1.52378222e-05 -0.0003109722786 +5.903282036e-06 -0.00560164972 -0.001145757071 -1.407581169e-05 0.00190166255 -2.067436372e-06 +0.001173445069 -0.007686963564 -6.033619445e-06 -0.005376240307 -1.387057385e-05 -0.0007929859928 +0.00609212625 5.094309485e-06 0.004196709318 1.099280442e-05 0.002265386192 -0.001994321513 +2.907598883e-06 -0.002312400666 -3.598609984e-06 +iw : 15 +0.00542000657 0.1324735986 0.1050258264 -0.0842105657 -0.08284968454 0.04033927733 +0.02882078863 -0.0144508199 -0.004989174406 0.00213323722 0.002344154506 -0.0008235332692 +-0.002034215228 -0.01397221846 -0.02487030581 5.160266346e-05 0.07181591469 0.03247216033 +0.0003048721796 0.1957324136 0.1685475592 0.0003523674649 -0.0124152553 -0.0008785176359 +-8.101465068e-05 -0.1020124487 -0.08541366187 -0.0001981791695 -0.001612065621 -0.00571043549 +2.293889869e-05 0.03213972422 0.02842708648 5.336888089e-05 0.002001629987 0.001659181113 +3.988665989e-06 -0.01096763387 -0.00882434225 -2.345146034e-05 0.0005262875116 -0.000208011086 +4.900512745e-06 0.003846107322 0.003770724826 4.181128704e-06 -0.002367647619 -0.002418759564 +-1.990902391e-06 0.0007975994695 0.001107531148 -1.079324306e-06 -0.02553386873 -0.01734070122 +-4.950721417e-05 -0.0560048193 -8.224107776e-05 0.019312583 0.003758974366 0.0002428253994 +-0.03749279051 0.0001334399628 0.1032613616 0.1962204874 0.0005613194577 0.08608976565 +0.0004578417555 0.03289650863 0.09792179711 0.0001175412363 0.05125207705 0.0001246012376 +-0.04179422402 -0.08770309535 -0.0002240312684 -0.03607232502 -0.0001842126171 -0.01891629479 +-0.04712057871 -8.401440298e-05 -0.02308508256 -7.734600934e-05 0.01587805246 0.03304045176 +8.254473342e-05 0.01470237626 6.909396048e-05 0.001858848471 0.006573198933 7.571306855e-06 +0.002534643586 7.363117036e-06 -0.001914738934 -0.004699395093 -1.106581586e-05 -0.001340768424 +-8.717721832e-06 -0.001891666323 -0.004088446849 -8.181738214e-06 -0.002394027838 -7.658478205e-06 +0.001195428006 0.002041573424 5.608079671e-06 0.0013427371 4.991559157e-06 0.0009725849791 +0.003091192024 4.922268445e-06 0.0009526415308 4.18582968e-06 -0.001038919038 -0.003101651544 +-5.380038297e-06 -0.0009701721777 -4.51366778e-06 +iw : 16 +0.002948084669 0.02608463772 0.1202049603 -0.03700300561 -0.07903067634 0.02139259371 +0.02920627365 -0.01141309423 -0.003561084317 -0.0001811543928 0.003634797373 -0.001857876685 +-0.000735836086 -0.02487030581 -0.1065387658 -4.487668121e-05 0.03247216033 -0.1663442364 +5.859368189e-05 0.1685475592 0.1459268249 0.0003041319693 -0.0008785176359 0.06420891394 +-1.585221999e-06 -0.08541366187 -0.05785732421 -0.0001541228204 -0.00571043549 -0.03356254361 +-1.030407085e-05 0.02842708648 0.02958529899 5.129463657e-05 0.001659181113 0.001009857118 +2.993873194e-06 -0.00882434225 -0.003534642013 -1.592289203e-05 -0.000208011086 -0.004558045686 +-3.753410701e-07 0.003770724826 0.006302311521 6.80400222e-06 -0.002418759564 -0.004609754483 +-4.364477973e-06 0.001107531148 0.003744441261 1.998460439e-06 0.003285008205 -0.1848036095 +-8.224107776e-05 -0.05126701492 -0.000333464845 0.1362748853 -0.2135981551 0.0001334399628 +-0.162083882 -0.0003854225352 0.1483891839 0.1260466937 0.0004578417555 -0.003286111253 +0.000227442209 -0.01296237305 0.1455943651 0.0001246012376 0.09150429541 0.0002627145785 +-0.05322557132 -0.0564512281 -0.0001842126171 -0.009899465725 -0.0001018621881 -0.008515616528 +-0.05545934888 -7.734600934e-05 -0.02811493351 -0.0001000724132 0.01871511006 0.02586339751 +6.909396048e-05 0.005875686437 4.666864388e-05 -0.0007293559263 0.006627608874 7.363117036e-06 +0.00534385012 1.195904437e-05 -0.00256589605 -0.001206191314 -8.717721832e-06 -0.0003870152138 +-2.176485624e-06 -0.001068910224 -0.005924312485 -7.658478205e-06 -0.002392848099 -1.068999653e-05 +0.00127266332 0.002990817694 4.991559157e-06 0.0005619565149 5.396715796e-06 0.0004431991028 +0.001814626863 4.18582968e-06 0.00155210316 3.27436389e-06 -0.0006683624666 -0.001728422734 +-4.51366778e-06 -0.001343793494 -3.118814727e-06 +iw : 17 +9.780012713e-06 0.0002390390974 0.0001895115632 -0.0001519519197 -0.0001494963074 7.278932968e-05 +5.200504382e-05 -2.607546698e-05 -9.002607006e-06 3.849273402e-06 4.229858502e-06 -1.486006657e-06 +-3.670595327e-06 5.160266346e-05 -4.487668121e-05 -0.04256991793 0.0003048721796 5.859368189e-05 +-0.09714131316 0.0003523674649 0.0003041319693 0.0004537557328 -8.101465068e-05 -1.585221999e-06 +0.03248228442 -0.0001981791695 -0.0001541228204 0.007816539707 2.293889869e-05 -1.030407085e-05 +-0.01432458251 5.336888089e-05 5.129463657e-05 0.00256320406 3.988665989e-06 2.993873194e-06 +-0.0002088503169 -2.345146034e-05 -1.592289203e-05 0.002028939754 4.900512745e-06 -3.753410701e-07 +-0.002189529489 4.181128704e-06 6.80400222e-06 0.001528966033 -1.990902391e-06 -4.364477973e-06 +-0.001264308674 -1.079324306e-06 1.998460439e-06 0.001395750612 0.0001814338902 -8.224107776e-05 +-0.07279397092 3.029508517e-05 0.02823651258 0.0004680653278 0.0001334399628 -0.1386125741 +0.0001824649944 -0.07019216881 0.0003305131346 0.0004578417555 -0.04613283757 0.000238588293 +-0.05751100721 -7.531286656e-05 0.0001246012376 0.04309021097 1.472763089e-05 0.02886899042 +-0.0001244637137 -0.0001842126171 0.01569342194 -9.340839539e-05 0.01438576416 -5.10141941e-06 +-7.734600934e-05 -0.00928918376 -2.489392785e-05 -0.00425616471 3.971932116e-05 6.909396048e-05 +-0.003541355 3.291979277e-05 -0.005250756178 -1.516132936e-06 7.363117036e-06 0.001558321703 +1.761718238e-06 0.002492630335 -8.066074227e-06 -8.717721832e-06 0.001475345534 -5.081520146e-06 +0.0001318824465 1.378024426e-07 -7.658478205e-06 -0.001136256808 -2.269577483e-06 0.000155808067 +1.202783783e-06 4.991559157e-06 0.0003053434931 1.871918748e-06 -0.0007247006223 2.038321824e-06 +4.18582968e-06 -9.065619836e-05 1.882572406e-06 0.0007714454998 -2.537018951e-06 -4.51366778e-06 +0.0002119216218 -2.133022152e-06 -0.0006002203002 ad : 4 0 iw : 18 0 0 0 0 0 0 @@ -2222,7 +2222,7 @@ iw : 0 -0.003093111822 0.01032773115 -0.0002162521096 -0.0003528028887 0.0002423227069 0.0008598370229 0.0008525269758 0.0006956281023 0.0002539650561 0.00206308977 0.002926696781 -0.0006136912939 0.001182254339 0.001158501333 0.00116079864 0.000276900015 -0.002799448842 -0.0002434233547 --0.0003135552925 3.081828249e-06 0.0004277933119 0.0007576875185 0.0002771508332 0.0003690389612 +-0.0003135552925 3.081828248e-06 0.0004277933119 0.0007576875185 0.0002771508332 0.0003690389612 -4.235723098e-05 -0.0005648642525 -0.0008917604691 iw : 1 -0.03367055041 0.08984927909 0.1178364646 0.005088465073 0.009948402876 0.02241513182 @@ -2317,7 +2317,7 @@ iw : 5 0.007504858448 -0.003577054878 -0.002818249142 -0.02176580683 0.006930448466 -0.01055428636 -0.02154892074 0.00691158667 -0.006684645424 -0.006207792902 0.0007107013007 0.0008224869998 0.005369319938 -0.002173678383 0.003450964827 0.007318606977 -0.001956638455 0.001977246889 -0.002095057462 -8.376509972e-06 -0.0001777690611 -0.0007321045814 -0.006178900399 -0.1268096627 +0.002095057462 -8.376509971e-06 -0.0001777690611 -0.0007321045814 -0.006178900399 -0.1268096627 0.02148843313 -0.01031506163 -0.01523848803 0.01372178858 0.06220731721 -0.03625356322 0.02189202929 0.02352033528 0.04704471201 -0.01630272342 -0.08150387288 0.07126799364 0.04212612887 0.05985810965 -0.01867301537 -0.04724800312 0.08568119076 0.002788837092 @@ -2354,7 +2354,7 @@ iw : 7 -0.017778358 -0.03099029824 0.07529893794 0.131668417 0.05576970266 -0.0441102513 -0.06405911637 -0.02661535984 0.009659153389 0.02082078035 0.01001819933 -0.002225378039 -0.005365830104 -0.004805391232 -0.0812364023 -0.03734844654 0.002180076141 0.007333371306 -0.0004663646136 0.04878666428 0.06074639542 -0.04725636721 0.08197573683 -0.02532144402 +0.0004663646137 0.04878666428 0.06074639542 -0.04725636721 0.08197573683 -0.02532144402 -0.1505099015 0.05970195993 -0.07811539998 -0.1429221603 0.007504858448 -0.04733916061 -0.03890789316 -0.02176580683 0.006810129663 0.04001132315 -0.02154892074 0.02550379863 0.05008448868 -0.006207792902 0.01615304389 0.01934336215 0.005369319938 -0.0019874904 @@ -2412,7 +2412,7 @@ iw : 9 -0.001517730732 -0.001304666065 0.0006791045603 -0.0006102618407 -0.001963307341 0.001769710065 -0.0006606780541 -0.001252365943 -0.001605940777 -0.000188655233 0.002409566635 0.000129015909 -0.0002290156717 -0.0001516257991 0.0006726175305 0.0006028264305 0.0003706305601 -0.0003829427348 -2.723386553e-05 0.0006129334628 -0.000386633054 +2.723386554e-05 0.0006129334628 -0.000386633054 iw : 10 -0.0006649620047 -0.01947231588 -0.07206015227 -0.1036607883 -0.08215757484 -0.03225515799 0.01102428969 0.01726170112 0.007057545586 -0.0004634530582 -0.002510402253 -0.00214862659 @@ -2432,7 +2432,7 @@ iw : 10 -0.0003395384789 -0.006596155828 -0.00295208222 0.0006898780959 4.317767349e-05 -0.003632761892 0.00221773267 -0.002240197773 -0.0006102618407 -0.002220125522 -0.002756715871 0.003598028267 -0.0006269031385 -0.001605940777 -0.002483902845 -0.0007714292299 0.00254824876 0.0007652299041 --0.0001516257991 -0.0001121182032 0.000941693993 -0.0004824928006 0.0006463217277 2.723386553e-05 +-0.0001516257991 -0.0001121182032 0.000941693993 -0.0004824928006 0.0006463217277 2.723386554e-05 0.0004887349167 0.0007953519308 -0.0009151344112 iw : 11 -0.01456796275 -0.1195054439 -0.2100045511 -0.1822197149 -0.09188370436 -0.01257518679 @@ -2454,7 +2454,7 @@ iw : 11 0.004672982963 -0.002151793954 -0.001963307341 -0.002756715871 -0.0006996256256 0.003683913196 -0.00102480566 -0.000188655233 -0.0007714292299 -0.001326338369 0.001121211747 0.0001171989824 0.0006726175305 0.000941693993 0.0004386517673 -0.001201448866 0.0006294924543 0.0006129334628 -0.0007953519308 3.503992419e-05 -0.001057007198 +0.0007953519308 3.50399242e-05 -0.001057007198 iw : 12 -0.02421219641 -0.1588241042 -0.1716642687 -0.03216958128 0.06862861711 0.06904364952 0.01501957192 -0.01487086495 -0.01128614692 -0.002269021846 0.002316283725 0.003131033655 @@ -2619,7 +2619,7 @@ iw : 19 0.05994421898 0.09210270815 0.002486480223 0.001414780806 -0.08150451451 -0.1371689984 0.002992766004 3.811761865e-05 -2.462910793e-05 -0.006541864007 -0.00210279395 -0.02934601957 -0.0008452041303 -0.0005383837544 0.02113811478 0.04662647339 -0.002917071235 -5.385548467e-06 -7.655936819e-05 0.009274596669 0.0002970987994 0.01771506245 0.0004342421866 0.0001993174495 +7.655936819e-05 0.009274596669 0.0002970987993 0.01771506245 0.0004342421866 0.0001993174495 -0.01969146845 -0.02395537484 -0.007260158562 -0.0001698821206 -6.831428255e-05 0.008807580791 0.009371705478 -0.002370405791 -9.148239631e-05 -8.188609689e-05 -0.0004101752104 0.005046711634 0.0003089502108 3.857842461e-05 5.476752306e-05 0.002485191201 -0.00212821474 0.003975674775 @@ -2901,113 +2901,7 @@ iw : 27 -2.257408965e-05 -3.758323931e-06 -1.998981697e-07 -2.314861992e-05 6.75558195e-05 5.244318835e-06 2.363796231e-08 6.636575442e-08 8.984424084e-06 0.0008408179935 3.633904354e-06 -4.952207541e-07 5.798686375e-08 8.397602739e-06 -0.0006376318178 -ad : 1 2.994710688 -iw : 13 -0.03955436929 0.05692898493 -0.008889563023 -0.01838127875 0.0001057837193 0.008430819495 --0.00130162404 -0.002370905405 -0.0007132903577 0.002278346872 -0.0006882385997 -0.0001145375234 --0.0005208757947 0.04577479802 0.1675571143 0.03089748408 0.06966520345 0.007847882582 -0.0470232444 0.009715468275 -0.02080620056 0.006557833991 -0.01906583483 -0.006889098548 --0.01286922835 -0.006929313561 0.01190434265 -0.004677210271 0.007837146018 -0.004245468334 -0.005289987172 0.002386663459 0.0009271703127 0.001610971526 -0.002616345266 -0.002797126293 --0.001766004214 -0.001889854826 0.003808883774 -0.001275631175 0.001768759164 -0.002626486422 -0.001193892939 0.0003870357075 0.001750389624 0.0002612448362 -0.0002676873288 -0.001942823656 --0.0001806859962 -0.000645977325 0.002066126383 -0.0004360275737 0.06544295082 0.1779374399 -0.03952233277 -0.08147509448 0.1201058105 0.0555815047 0.0389797992 0.06623386362 --0.04285127309 0.02631093478 0.0132101794 -0.02036311691 0.02437226945 -0.003224059598 --0.01374487945 -0.01224213314 -0.01458179865 -0.0128416932 0.01084695659 -0.009842553351 --0.005641708684 0.01205189247 -0.01138612964 0.0005886223998 0.008134894569 0.002742119721 --0.0008595352509 0.004078211852 -0.00146034472 -0.0005801768195 0.003392352369 5.222000896e-05 -0.004720308803 -0.002068718788 3.524793042e-05 -0.001476670588 -0.003942819541 -0.0009128240547 -0.001821460641 -0.002661359728 -0.001153783424 0.00408975626 -0.002801933545 -0.0002613946811 -0.002760540394 0.0001228156957 -0.001981309736 0.0007485868366 0.0003910247592 -0.001337362232 -0.0009794251894 0.001515460168 0.0009257743946 -0.000949761682 0.001022918908 -0.0004334537699 --0.00212238676 1.316295104e-05 0.0007613800919 -0.001432587668 -5.664819078e-07 0.002058714061 --0.000600481686 -0.0004833173315 0.001389609298 -iw : 14 --0.02821015116 0.01604238049 -0.006106861024 -0.0415802118 0.00462919365 0.01734468104 -0.0003965136063 -0.008367245961 0.00131863879 0.00201966577 0.0008663017855 -0.002075556405 -0.0006100802353 -0.009590932949 -0.07816356047 -0.006473774018 0.0543387266 0.03958622799 -0.03667804147 0.01938140774 -0.06496172526 0.01308223658 -0.04603145757 0.01248997338 --0.03107072645 -0.01445276311 0.005294056254 -0.009755455786 0.01748707055 0.01012480603 -0.01180357986 0.006957805228 -0.01507349765 0.004696441832 -0.006469596767 0.008476584809 --0.004366906503 -0.003092042997 -0.004789840027 -0.002087094939 0.00283918864 0.005874317298 -0.001916421035 0.001356308927 -0.006525228134 0.0009154935752 -0.001206979136 0.005345512848 --0.0008146976118 -0.0003472372567 -0.004469335712 -0.0002343813206 0.007698374636 0.007292849022 -0.008622105998 -0.006380103542 0.004922592699 0.07217224506 0.07441201236 0.07907235213 --0.06123282296 0.05022728809 0.02096338899 -0.06482181983 0.04814583475 0.002520764858 --0.04375401384 -0.02533128891 -0.01275442021 -0.03164567282 0.01835231585 -0.008609093045 --0.01739143287 0.01125624154 -0.02755627067 0.007898252905 0.007597838962 0.00909993803 -0.01428914566 0.008540625573 -0.008873397873 0.009645015811 0.005598658972 -0.01375272932 -0.01182147827 -0.0001629421659 -0.00928294069 -0.001410376033 0.00390192707 -0.003105407915 --6.17203913e-05 0.002633757761 -0.003747848909 -0.002544932544 -0.004490448592 0.002869842957 --0.001717801414 0.001625942448 0.005685983284 0.0006134255884 -0.00232147695 0.003837976039 -0.0004481402457 -0.005624705879 0.002264019555 0.001049767902 -0.003796614466 0.0005834405282 -0.003674532998 -0.0002559212229 -0.001216953378 0.002480269269 -0.001302929288 -0.00310746865 --0.0009136242787 0.001519886488 -0.002097507085 -iw : 15 --0.00241407523 -0.06036541995 -0.05886394865 0.02749628531 0.04721388286 -0.01029462959 --0.01631601107 0.002516640137 0.003741296909 0.0004847163211 -0.001912575853 0.0003258214838 -0.0008741630731 0.006160227284 -0.04748537142 -0.008542457234 -0.03264342488 -0.09873239024 --0.05305108317 -0.09995822322 0.02202331788 -0.07142875844 -0.01154772839 0.03904065098 -0.001989793053 0.04851851829 -0.00166212347 0.03720405108 0.01278737967 -0.01915882598 -0.004551941463 -0.01498985498 0.005878258206 -0.009988793304 -0.005170706592 0.001174061789 --0.003685145955 0.005150673812 0.001148085748 0.00432124275 0.0005993663036 -0.00257004693 --0.0002558508428 -0.0009226595015 0.001777884783 -0.0002174592927 -0.0002700152591 -0.001207579649 --0.000548514419 -0.0001568844779 0.001531514159 0.0003079662366 0.01048608166 0.002635175391 -0.008298930214 0.03556487381 -0.05546119146 -0.01435885574 -0.1025244356 -0.04251664246 -0.08818492907 -0.09350160602 -0.06043139001 -0.04027262627 -0.1085477743 0.06184682315 --0.01065047745 -0.0280640175 0.05718923766 -0.04174334093 -0.009355395724 0.04218809286 -0.02010935706 0.00961823182 0.03626292529 -0.02120491658 0.004317146544 0.01516342186 --0.01534359316 0.02441268579 -0.003109548889 -0.01268840302 -0.006401401793 -0.003615337464 --0.01138623311 0.006058781134 -0.0005184272272 -0.00261025427 0.004529756524 -0.004192097716 -0.0004898310917 0.002240469573 -0.0002586809493 0.00095834859 -0.0002146974722 -0.0008334905375 -0.001313868281 0.002090388457 -0.001401231588 0.003376575774 -0.0004774631448 -0.00168880002 --0.0006937531631 -0.0002898334756 -0.001136876847 0.0002299350453 0.0004719973174 -0.0006386753629 -0.001061646256 -0.001095770741 0.0004276118693 0.0001672393974 0.000381318269 -0.0006693817746 -0.0006814984418 -0.0003751227486 4.846603372e-05 -iw : 16 --0.00126102183 -0.07642594668 0.04196549405 0.03119297602 -0.01748915634 -0.01208680178 -0.007748233208 0.0009106658943 -9.345944839e-05 -0.002236638716 0.002044694297 -0.001204203358 -0.0008617752146 -0.04748537142 0.05479453453 -0.03205210227 -0.09873239024 0.1275890479 --0.06664327507 0.02202331788 0.003767859212 0.01486549681 0.03904065098 -0.04310170626 -0.02635200906 -0.00166212347 -0.01259820302 -0.00112191502 -0.01915882598 0.01901188883 --0.01293199635 0.005878258206 -0.002507413346 0.003967759492 0.001174061789 0.0001533691654 -0.0007924787659 0.001148085748 -0.002917480322 0.0007749452241 -0.00257004693 0.002885715204 --0.001734753348 0.001777884783 -0.00184357202 0.00120005263 -0.001207579649 0.001521680649 --0.0008151029516 0.001531514159 -0.001779812899 0.001033755175 -0.07575068813 0.09432190948 --0.05546119146 0.08647366351 0.06366624917 -0.06332509314 0.1841753227 -0.09350160602 -0.03427167212 0.1243163126 0.0141132288 0.06715093459 -0.01065047745 -0.03303461726 -0.04532614063 0.02509218832 -0.05597402523 0.04218809286 -0.009435543666 -0.03778185002 --0.00148955639 -0.02377497677 0.004317146544 0.006061838126 -0.01604784725 -0.009169382547 -0.01155509727 -0.01268840302 0.005648427533 0.007799563286 0.001925984006 0.005985707988 --0.0005184272272 -0.003754022368 0.004040286911 0.000562551556 -0.002093153009 0.002240469573 -0.0008326082464 -0.001412855208 0.00120601911 -0.002226428043 0.001313868281 -0.001029229666 --0.001502814387 -0.001596402724 0.001481276982 -0.00168880002 0.001403005211 0.0009998456348 -0.000848587452 -0.000327993111 0.0004719973174 -0.001089122863 -0.0002213917344 -0.00033936867 -0.0001923159055 0.0001672393974 0.0007226851455 0.0001298111163 0.0004193397385 -0.0003890882559 -4.846603372e-05 -0.0006872290672 -0.0002626302837 -iw : 17 --0.00162947417 -0.04074599305 -0.03973251647 0.01855968949 0.03186885049 -0.006948761495 --0.01101312762 0.001698704351 0.002525334173 0.0003271781737 -0.001290967618 0.00021992591 -0.0005900504383 -0.008542457234 -0.03205210227 0.01304986169 -0.05305108317 -0.06664327507 -0.01014315957 -0.07142875844 0.01486549681 -0.04234973678 0.001989793053 0.02635200906 --0.01315252972 0.03720405108 -0.00112191502 0.01851282984 0.004551941463 -0.01293199635 -0.009116162868 -0.009988793304 0.003967759492 -0.006933726378 -0.003685145955 0.0007924787659 --0.002198574843 0.00432124275 0.0007749452241 0.001665519375 -0.0002558508428 -0.001734753348 -0.0008057142806 -0.0002174592927 0.00120005263 -0.0007472749507 -0.000548514419 -0.0008151029516 -0.0001723707792 0.0003079662366 0.001033755175 -0.0004052643904 -0.0306987822 -0.05546119146 -0.02319216187 0.002195468452 0.04736555243 -0.08808637199 -0.09350160602 0.007805464502 -0.01426288331 -0.02711382899 -0.07671042766 -0.01065047745 -0.05654271171 0.02100755674 --0.03168283835 0.0005719317813 0.04218809286 -0.03726323378 0.004952105812 0.02316383628 -0.02612016557 0.004317146544 0.01863485638 -0.007069318671 0.006136381042 0.007452104384 --0.01268840302 0.01777419505 -0.003705699091 -0.005110184247 -0.007657613842 -0.0005184272272 --0.00613185428 0.002163143784 -0.003197217249 -0.001239613698 0.002240469573 -0.003072815192 -0.0006321686019 0.002722780401 0.0007156221365 0.001313868281 -0.0005594469681 -4.862301515e-05 --0.0001013081186 0.001073709385 -0.00168880002 0.002436203272 -0.0005170109315 -3.918617156e-05 --0.0004242852166 0.0004719973174 -0.0007878632016 0.0001806015602 -0.0006705071938 -0.0005958718391 -0.0001672393974 -0.0006629078332 0.0001935015568 0.0009267648893 0.0004696657925 4.846603372e-05 -0.0003611572413 -0.0001306437103 -0.0007084704401 -ad : 2 1.950638213 +ad : 1 1.950638213 iw : 0 0.05200549356 0.1283623673 0.06859735187 0.009746705202 -0.0006889193902 0.00995919682 0.004532324493 -0.002797238223 -0.006784772713 -0.001813582803 0.0001533600954 0.001628351584 @@ -3031,7 +2925,7 @@ iw : 0 8.136735868e-06 -0.0005241383414 0.0009164765792 iw : 1 -0.03304245336 0.08994136932 0.1232181612 0.009289347343 0.00918512363 0.02341228481 -0.01573264744 -0.008750605924 -0.006738216071 -0.004028791439 0.001774468072 -0.0009679959649 +0.01573264744 -0.008750605925 -0.006738216071 -0.004028791439 0.001774468072 -0.0009679959649 0.001282027019 0.0006556784739 -0.04925868324 0.001568668503 0.05248293918 0.1747966736 0.1255620505 0.05028692622 -0.02258674427 0.1203082309 0.005666374541 0.009404967874 0.013556436 -0.00116778546 -0.0009347702739 -0.002793851471 0.01119520201 0.01143287557 @@ -3186,7 +3080,7 @@ iw : 8 -0.003677314062 0.003097219789 -0.00152005777 0.003635777068 0.001085096896 -0.001197387274 0.003524008172 -0.0002734645673 -0.001818026784 0.001191268662 -0.0009275585495 0.0007953397142 -0.0009880310705 -0.0005019791788 8.994859757e-05 -0.001277439277 0.07243220316 -0.02520540037 --0.0003480679542 -0.06413601879 0.08676121441 0.1008852684 -0.05676253066 -0.004902334408 +-0.0003480679544 -0.06413601879 0.08676121441 0.1008852684 -0.05676253066 -0.004902334408 -0.1374294316 0.1105778678 0.02896533243 -0.05562810415 -0.01683624001 -0.1289940794 0.01416079915 -0.03306351179 -0.03185684302 -0.03101589265 -0.07360658442 -0.05697469849 -0.04669497094 -0.0056837898 -0.03920699734 -0.01765647215 -0.06134422207 -0.02029437401 @@ -3227,8 +3121,8 @@ iw : 10 0.06409905098 0.01719757561 -0.01711394781 0.02144902222 0.004394347733 -0.001409285636 -0.004508055166 -0.001691603552 0.003534682531 -0.008349362912 -0.002363747127 0.002841565523 -0.004597257527 -0.001040925457 0.0007653561749 -0.0003865520683 0.0004272527654 -0.0009867441687 -0.002425559289 0.0008158096562 -0.001063179284 0.00186458132 -0.0003480679542 -0.08071336988 -0.03553040848 -0.0004316091517 -0.02545647409 -0.004902334408 -0.1233645122 0.0233312252 +0.002425559289 0.0008158096562 -0.001063179284 0.00186458132 -0.0003480679544 -0.08071336988 +0.03553040848 -0.0004316091518 -0.02545647409 -0.004902334408 -0.1233645122 0.0233312252 -0.006078963061 -0.01428237854 -0.01683624001 -0.05848590171 -0.03935897286 -0.02087717157 0.02793099761 -0.03101589265 0.005314486 -0.06422985178 -0.03846013621 0.03464805537 -0.03920699734 0.02589834428 -0.04256619936 -0.04861721937 0.007531924717 -0.03078778294 @@ -3249,7 +3143,7 @@ iw : 11 0.006333256819 0.004099323964 -0.004346241869 0.007628378269 0.001281917814 -0.003536597659 0.003602677449 -0.0004656149608 0.001637756126 -4.84452005e-05 -0.001234578562 0.0005707096904 -0.002242877792 -0.0006172165159 0.001943400371 -0.00152081021 -0.06413601879 -0.03560307783 --0.0004316091517 0.1469455098 -0.0002709122299 -0.1374294316 -0.05788017783 -0.006078963061 +-0.0004316091518 0.1469455098 -0.0002709122298 -0.1374294316 -0.05788017783 -0.006078963061 0.2659893081 0.003772134755 -0.1289940794 -0.02709493248 -0.02087717157 0.1999433543 0.02019047709 -0.07360658442 0.01346450818 -0.03846013621 0.09251115403 0.04332161807 -0.01765647215 0.0361822798 -0.04861721937 0.02499128744 0.05899753723 0.01373259327 @@ -3259,7 +3153,7 @@ iw : 11 -0.00373183619 -0.001976007376 -0.002198663096 0.002969112068 -0.000551467324 -0.003886721929 -0.001337398966 -0.0006322998896 0.001362610513 -0.001426297706 -0.001877125646 -0.0003174306538 0.0003717703452 -0.0004272904986 8.564493602e-05 0.0004958861399 0.0005368049648 0.0006399927144 --0.0007944929033 -3.557838034e-05 0.001033422708 +-0.0007944929033 -3.557838033e-05 0.001033422708 iw : 12 0.02369645121 0.1587405526 0.181055881 0.04764403023 -0.05995172099 -0.07205829739 -0.02329794003 0.01085247884 0.01156281811 0.003871712756 -0.001344262214 -0.003114860021 @@ -3270,7 +3164,7 @@ iw : 12 -0.008383406726 0.003534682531 -0.0003605758887 0.008237909622 0.002841565523 -0.004864830878 0.005303559303 0.0007653561749 -0.003152708505 0.003504782897 -0.0009867441687 -0.0001043050136 -0.002999471524 -0.001063179284 0.001507589178 -0.001451379537 0.08676121441 -0.01757573891 --0.02545647409 -0.0002709122299 0.1090018635 0.1105778678 -0.08661236114 -0.01428237854 +-0.02545647409 -0.0002709122298 0.1090018635 0.1105778678 -0.08661236114 -0.01428237854 0.003772134755 0.07663652831 0.01416079915 -0.1439907757 0.02793099761 0.02019047709 -0.1213056211 -0.05697469849 -0.135321927 0.03464805537 0.04332161807 -0.2206877643 -0.06134422207 -0.08123915855 0.007531924717 0.05899753723 -0.1783331681 -0.01877527645 @@ -3281,6 +3175,112 @@ iw : 12 -0.002693840715 -0.002465161927 0.003097033861 -0.001877125646 -0.005895373418 -0.001027750038 -0.001194179927 0.0004162782516 0.0004958861399 -0.002730918337 -9.615998583e-05 0.000142106507 -0.0007351632265 0.001033422708 -0.0002070081438 +ad : 2 2.994710688 +iw : 13 +0.03955436929 0.05692898493 -0.008889563023 -0.01838127875 0.0001057837193 0.008430819495 +-0.00130162404 -0.002370905405 -0.0007132903577 0.002278346872 -0.0006882385997 -0.0001145375234 +-0.0005208757947 0.04577479802 0.1675571143 0.03089748408 0.06966520345 0.007847882582 +0.0470232444 0.009715468275 -0.02080620056 0.006557833991 -0.01906583483 -0.006889098548 +-0.01286922835 -0.006929313561 0.01190434265 -0.004677210271 0.007837146018 -0.004245468334 +0.005289987172 0.002386663459 0.0009271703127 0.001610971526 -0.002616345266 -0.002797126293 +-0.001766004214 -0.001889854826 0.003808883774 -0.001275631175 0.001768759164 -0.002626486422 +0.001193892939 0.0003870357075 0.001750389624 0.0002612448362 -0.0002676873288 -0.001942823656 +-0.0001806859962 -0.000645977325 0.002066126383 -0.0004360275737 0.06544295082 0.1779374399 +0.03952233277 -0.08147509448 0.1201058105 0.0555815047 0.0389797992 0.06623386362 +-0.04285127309 0.02631093478 0.0132101794 -0.02036311691 0.02437226945 -0.003224059598 +-0.01374487945 -0.01224213314 -0.01458179865 -0.0128416932 0.01084695659 -0.009842553351 +-0.005641708684 0.01205189247 -0.01138612964 0.0005886223998 0.008134894569 0.002742119721 +-0.0008595352509 0.004078211852 -0.00146034472 -0.0005801768195 0.003392352369 5.222000896e-05 +0.004720308803 -0.002068718788 3.524793042e-05 -0.001476670588 -0.003942819541 -0.0009128240547 +0.001821460641 -0.002661359728 -0.001153783424 0.00408975626 -0.002801933545 -0.0002613946811 +0.002760540394 0.0001228156957 -0.001981309736 0.0007485868366 0.0003910247592 -0.001337362232 +0.0009794251894 0.001515460168 0.0009257743946 -0.000949761682 0.001022918908 -0.0004334537699 +-0.00212238676 1.316295104e-05 0.0007613800919 -0.001432587668 -5.664819077e-07 0.002058714061 +-0.000600481686 -0.0004833173315 0.001389609298 +iw : 14 +-0.02821015116 0.01604238049 -0.006106861024 -0.0415802118 0.00462919365 0.01734468104 +0.0003965136063 -0.008367245961 0.00131863879 0.00201966577 0.0008663017855 -0.002075556405 +0.0006100802353 -0.009590932949 -0.07816356047 -0.006473774018 0.0543387266 0.03958622799 +0.03667804147 0.01938140774 -0.06496172526 0.01308223658 -0.04603145757 0.01248997338 +-0.03107072645 -0.01445276311 0.005294056254 -0.009755455786 0.01748707055 0.01012480603 +0.01180357986 0.006957805228 -0.01507349765 0.004696441832 -0.006469596767 0.008476584809 +-0.004366906503 -0.003092042997 -0.004789840027 -0.002087094939 0.00283918864 0.005874317298 +0.001916421035 0.001356308927 -0.006525228134 0.0009154935752 -0.001206979136 0.005345512848 +-0.0008146976118 -0.0003472372567 -0.004469335712 -0.0002343813206 0.007698374636 0.007292849022 +0.008622105998 -0.006380103542 0.004922592699 0.07217224506 0.07441201236 0.07907235213 +-0.06123282296 0.05022728809 0.02096338899 -0.06482181983 0.04814583475 0.002520764858 +-0.04375401384 -0.02533128891 -0.01275442021 -0.03164567282 0.01835231585 -0.008609093045 +-0.01739143287 0.01125624154 -0.02755627067 0.007898252905 0.007597838962 0.00909993803 +0.01428914566 0.008540625573 -0.008873397873 0.009645015811 0.005598658972 -0.01375272932 +0.01182147827 -0.0001629421659 -0.00928294069 -0.001410376033 0.00390192707 -0.003105407915 +-6.17203913e-05 0.002633757761 -0.003747848909 -0.002544932544 -0.004490448592 0.002869842957 +-0.001717801414 0.001625942448 0.005685983284 0.0006134255884 -0.00232147695 0.003837976039 +0.0004481402457 -0.005624705879 0.002264019555 0.001049767902 -0.003796614466 0.0005834405282 +0.003674532998 -0.0002559212229 -0.001216953378 0.002480269269 -0.001302929288 -0.00310746865 +-0.0009136242787 0.001519886488 -0.002097507085 +iw : 15 +-0.00241407523 -0.06036541995 -0.05886394865 0.02749628531 0.04721388286 -0.01029462959 +-0.01631601107 0.002516640137 0.003741296909 0.0004847163211 -0.001912575853 0.0003258214838 +0.0008741630731 0.006160227284 -0.04748537142 -0.008542457234 -0.03264342488 -0.09873239024 +-0.05305108317 -0.09995822322 0.02202331788 -0.07142875844 -0.01154772839 0.03904065098 +0.001989793053 0.04851851829 -0.00166212347 0.03720405108 0.01278737967 -0.01915882598 +0.004551941463 -0.01498985498 0.005878258206 -0.009988793304 -0.005170706592 0.001174061789 +-0.003685145955 0.005150673812 0.001148085748 0.00432124275 0.0005993663036 -0.00257004693 +-0.0002558508428 -0.0009226595015 0.001777884783 -0.0002174592927 -0.0002700152591 -0.001207579649 +-0.000548514419 -0.0001568844779 0.001531514159 0.0003079662366 0.01048608166 0.002635175391 +0.008298930214 0.03556487381 -0.05546119146 -0.01435885574 -0.1025244356 -0.04251664246 +0.08818492907 -0.09350160602 -0.06043139001 -0.04027262627 -0.1085477743 0.06184682315 +-0.01065047745 -0.0280640175 0.05718923766 -0.04174334093 -0.009355395724 0.04218809286 +0.02010935706 0.00961823182 0.03626292529 -0.02120491658 0.004317146544 0.01516342186 +-0.01534359316 0.02441268579 -0.003109548889 -0.01268840302 -0.006401401793 -0.003615337464 +-0.01138623311 0.006058781134 -0.0005184272272 -0.00261025427 0.004529756524 -0.004192097716 +0.0004898310917 0.002240469573 -0.0002586809493 0.00095834859 -0.0002146974722 -0.0008334905375 +0.001313868281 0.002090388457 -0.001401231588 0.003376575774 -0.0004774631448 -0.00168880002 +-0.0006937531631 -0.0002898334756 -0.001136876847 0.0002299350453 0.0004719973174 -0.0006386753629 +0.001061646256 -0.001095770741 0.0004276118693 0.0001672393974 0.000381318269 -0.0006693817746 +0.0006814984418 -0.0003751227486 4.846603372e-05 +iw : 16 +-0.00126102183 -0.07642594668 0.04196549405 0.03119297602 -0.01748915634 -0.01208680178 +0.007748233208 0.0009106658943 -9.345944839e-05 -0.002236638716 0.002044694297 -0.001204203358 +0.0008617752146 -0.04748537142 0.05479453453 -0.03205210227 -0.09873239024 0.1275890479 +-0.06664327507 0.02202331788 0.003767859212 0.01486549681 0.03904065098 -0.04310170626 +0.02635200906 -0.00166212347 -0.01259820302 -0.00112191502 -0.01915882598 0.01901188883 +-0.01293199635 0.005878258206 -0.002507413346 0.003967759492 0.001174061789 0.0001533691654 +0.0007924787659 0.001148085748 -0.002917480322 0.0007749452241 -0.00257004693 0.002885715204 +-0.001734753348 0.001777884783 -0.00184357202 0.00120005263 -0.001207579649 0.001521680649 +-0.0008151029516 0.001531514159 -0.001779812899 0.001033755175 -0.07575068813 0.09432190948 +-0.05546119146 0.08647366351 0.06366624917 -0.06332509314 0.1841753227 -0.09350160602 +0.03427167212 0.1243163126 0.0141132288 0.06715093459 -0.01065047745 -0.03303461726 +0.04532614063 0.02509218832 -0.05597402523 0.04218809286 -0.009435543666 -0.03778185002 +-0.00148955639 -0.02377497677 0.004317146544 0.006061838126 -0.01604784725 -0.009169382547 +0.01155509727 -0.01268840302 0.005648427533 0.007799563286 0.001925984006 0.005985707988 +-0.0005184272272 -0.003754022368 0.004040286911 0.000562551556 -0.002093153009 0.002240469573 +0.0008326082464 -0.001412855208 0.00120601911 -0.002226428043 0.001313868281 -0.001029229666 +-0.001502814387 -0.001596402724 0.001481276982 -0.00168880002 0.001403005211 0.0009998456348 +0.000848587452 -0.000327993111 0.0004719973174 -0.001089122863 -0.0002213917344 -0.00033936867 +0.0001923159055 0.0001672393974 0.0007226851455 0.0001298111163 0.0004193397385 -0.0003890882559 +4.846603372e-05 -0.0006872290672 -0.0002626302837 +iw : 17 +-0.00162947417 -0.04074599305 -0.03973251647 0.01855968949 0.03186885049 -0.006948761495 +-0.01101312762 0.001698704351 0.002525334173 0.0003271781737 -0.001290967618 0.00021992591 +0.0005900504383 -0.008542457234 -0.03205210227 0.01304986169 -0.05305108317 -0.06664327507 +0.01014315957 -0.07142875844 0.01486549681 -0.04234973678 0.001989793053 0.02635200906 +-0.01315252972 0.03720405108 -0.00112191502 0.01851282984 0.004551941463 -0.01293199635 +0.009116162868 -0.009988793304 0.003967759492 -0.006933726378 -0.003685145955 0.0007924787659 +-0.002198574843 0.00432124275 0.0007749452241 0.001665519375 -0.0002558508428 -0.001734753348 +0.0008057142806 -0.0002174592927 0.00120005263 -0.0007472749507 -0.000548514419 -0.0008151029516 +0.0001723707792 0.0003079662366 0.001033755175 -0.0004052643904 -0.0306987822 -0.05546119146 +0.02319216187 0.002195468452 0.04736555243 -0.08808637199 -0.09350160602 0.007805464502 +0.01426288331 -0.02711382899 -0.07671042766 -0.01065047745 -0.05654271171 0.02100755674 +-0.03168283835 0.0005719317813 0.04218809286 -0.03726323378 0.004952105812 0.02316383628 +0.02612016557 0.004317146544 0.01863485638 -0.007069318671 0.006136381042 0.007452104384 +-0.01268840302 0.01777419505 -0.003705699091 -0.005110184247 -0.007657613842 -0.0005184272272 +-0.00613185428 0.002163143784 -0.003197217249 -0.001239613698 0.002240469573 -0.003072815192 +0.0006321686019 0.002722780401 0.0007156221365 0.001313868281 -0.0005594469681 -4.862301515e-05 +-0.0001013081186 0.001073709385 -0.00168880002 0.002436203272 -0.0005170109315 -3.918617156e-05 +-0.0004242852166 0.0004719973174 -0.0007878632016 0.0001806015602 -0.0006705071938 -0.0005958718391 +0.0001672393974 -0.0006629078332 0.0001935015568 0.0009267648893 0.0004696657925 4.846603372e-05 +0.0003611572413 -0.0001306437103 -0.0007084704401 ad : 3 3.303653192 iw : 18 0.1242542447 0.1381548582 -0.06601888932 -0.03384419293 0.02115442296 0.01434971585 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_y_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_y_ref.dat similarity index 97% rename from tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_y_ref.dat rename to tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_y_ref.dat index 85e3e4d2e2..5279d1933b 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_y_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_y_ref.dat @@ -5,7 +5,7 @@ iw : 23 0.009158981648 -0.009909426396 -0.008271425814 -0.003686735149 0.003579365881 0.002147543731 0.001588791228 0.03141084029 -0.04236557659 0.1705027436 0.07827232443 -0.1055703103 -0.03109210032 0.07247857997 -0.09775595947 -0.1211788472 0.03445835367 -0.04647593022 --0.09310633415 -8.990638632e-05 0.0001212618274 -0.01035704856 -0.01230953419 0.01660256486 +-0.09310633415 -8.990638632e-05 0.0001212618275 -0.01035704856 -0.01230953419 0.01660256486 0.02058946979 -0.009737368138 0.01313333906 0.02661831811 -0.001027027675 0.001385210304 0.002788902767 0.003251546114 -0.004385544119 -0.004517417399 0.003374025035 -0.004550738367 -0.01003999562 0.0003511971082 -0.0004736794 0.0001864897804 -0.0007955622101 0.001073019742 @@ -40,7 +40,7 @@ iw : 24 -0.02124890992 0.02752570505 -0.0004231139357 0.0001953562867 -0.0001228577572 -0.0008515011348 0.0001657052048 0.002617380219 0.00475446564 0.006267059324 0.0016458921 -0.008452737312 0.005539319972 0.002938026244 0.006683871658 0.007810023622 -0.009014915679 -0.0005790974583 -0.0003836738259 -6.074295122e-05 -0.001236043959 8.192745333e-05 0.000181650706 -0.001248527579 +0.0003836738259 -6.074295122e-05 -0.001236043959 8.192745334e-05 0.000181650706 -0.001248527579 -0.001022872374 0.001072900132 0.001379605815 iw : 25 -0.002170576799 -0.04970434298 -0.1240922231 -0.1276927197 -0.0406884187 0.02618053705 @@ -61,7 +61,7 @@ iw : 25 -0.00373863734 0.009351178298 -0.003631068869 -0.003219919744 -0.005946882036 -0.004675916807 0.007452787872 0.0004486160697 -0.0008214950213 -0.0009088633873 -0.0005647857474 0.0002214896055 0.0007228123986 -0.0003184938571 -0.001404288413 3.179262077e-05 -0.0005847342154 0.001327223846 -0.001152573449 0.002533114767 0.001686294173 -0.002701307558 -0.0003271091501 -5.105837601e-05 +0.001152573449 0.002533114767 0.001686294173 -0.002701307558 -0.00032710915 -5.105837601e-05 -0.0005818510126 -0.0001972773069 0.0004474833434 iw : 26 0.002927579675 0.06703905817 0.1673701988 0.172226392 0.05487877124 -0.03531117083 @@ -210,7 +210,7 @@ iw : 32 0.01731636084 0.002850041578 0.001459849366 -0.003794494388 0.00408120044 0.005065379613 0.001438569087 -0.0003027218828 -0.0005187011957 0.002669016821 0.0006924291337 -0.002700600176 -0.002392865227 0.003988280416 -0.003275776243 -0.005324070151 -0.0003675777615 -0.0002875676375 -0.0007643654589 -0.0004681990234 -0.001020373419 +0.000764365459 -0.0004681990234 -0.001020373419 ad : 2 1.709269535 iw : 13 -0.0002704661186 -0.0007245457965 -0.0006084357262 -0.000277273891 2.876855376e-06 9.056618716e-05 @@ -243,7 +243,7 @@ iw : 14 0.006047630142 5.975243729e-05 1.169504972e-06 -0.003114352655 -1.941697813e-05 -3.800389323e-07 0.008518515724 -4.624793863e-05 -9.051880835e-07 -0.004201801129 -2.741909052e-05 -5.366603298e-07 0.004448929127 -5.319095857e-06 -1.041080387e-07 -0.004819613076 -7.101421532e-05 -1.039672816e-06 -0.02476654089 -6.990153514e-05 0.0004847432848 -0.0009630745668 -1.657616304e-05 0.2910498529 +0.02476654089 -6.990153514e-05 0.0004847432848 -0.0009630745669 -1.657616304e-05 0.2910498529 -0.0008215079317 0.005696575163 -0.001553248235 -3.698050727e-05 0.2839293666 -0.0008016177611 0.005557209399 -0.00147391711 -4.080983083e-05 0.1659218988 -0.00046863908 0.003247507457 -0.0008611144602 -2.76618977e-05 0.02780131817 -7.873162091e-05 0.000544141483 -0.0002822099551 @@ -285,17 +285,17 @@ iw : 16 0.0001999680195 -2.631426802e-06 1.202006949e-05 8.371782976e-05 -1.126517241e-06 -5.231743043e-06 -3.613575691e-05 -1.039672511e-07 -4.942076383e-07 -3.413866006e-06 3.975209011e-07 -4.98563655e-06 -3.463185116e-05 3.929738294e-07 1.986995419e-06 1.37287542e-05 4.670050113e-06 -0.0001783804714 --0.00123733844 2.073316495e-10 0.1526509473 2.16305156e-05 -0.000683684808 -0.004743247132 -2.006219313e-09 0.2264368896 4.461186898e-05 -0.001099176435 -0.007628095485 6.419528627e-09 +-0.00123733844 2.073316502e-10 0.1526509473 2.16305156e-05 -0.000683684808 -0.004743247132 +2.00621931e-09 0.2264368896 4.461186898e-05 -0.001099176435 -0.007628095485 6.419528628e-09 0.1690753839 5.379491666e-05 -0.0009860257715 -0.006846019556 1.023248186e-08 0.07617752907 4.327511145e-05 -0.0005416481068 -0.003763844721 1.007828211e-08 0.01184069962 2.292069214e-05 -0.0001566029087 -0.001090609282 6.293934561e-09 -0.004570162614 7.009625729e-06 1.564916679e-05 0.0001068436418 2.390089523e-09 -0.006226665871 -2.080597034e-07 4.120369995e-05 0.0002856103199 -2.329093583e-10 -0.00111496643 -2.179051375e-06 2.555436683e-05 0.0001776063766 -5.219967091e-10 --0.0008947224705 -1.406085397e-06 5.638807184e-06 3.9403705e-05 -4.164706641e-10 0.0009295061556 --6.477844483e-07 -1.575270296e-06 -1.07681598e-05 -2.223739349e-10 -0.0003787711574 4.659398778e-08 --4.844529878e-06 -3.358573262e-05 -2.027479756e-11 0.0006503710741 3.902600049e-07 -2.523966201e-06 --1.758240158e-05 1.089833105e-10 -0.0005298739841 +2.329093578e-10 -0.00111496643 -2.179051375e-06 2.555436683e-05 0.0001776063766 -5.219967086e-10 +-0.0008947224705 -1.406085397e-06 5.638807184e-06 3.9403705e-05 -4.164706646e-10 0.0009295061556 +-6.477844483e-07 -1.575270296e-06 -1.07681598e-05 -2.223739344e-10 -0.0003787711574 4.659398778e-08 +-4.844529878e-06 -3.358573262e-05 -2.027479781e-11 0.0006503710741 3.902600049e-07 -2.523966201e-06 +-1.758240158e-05 1.08983311e-10 -0.0005298739841 iw : 17 -0.006929623193 -0.2144347283 -0.2058876884 -0.1168259429 0.004529308309 0.02774404386 0.02497063629 0.001349731633 0.001847670764 -0.004961415011 0.001741233551 -0.002468621612 @@ -316,7 +316,7 @@ iw : 17 1.503657088e-06 0.0006258895556 3.9403705e-05 1.704562244e-05 -0.0009283733631 3.336255576e-07 -9.901285415e-05 -1.07681598e-05 -4.656779873e-06 0.0003784615883 -9.114485474e-08 -0.00136638259 -3.358573262e-05 -1.452725599e-05 -0.0006513366116 -2.843348137e-07 -0.0002128163629 -1.758240158e-05 --7.605614576e-06 0.0005293685181 -1.488609414e-07 +-7.605614576e-06 0.0005293685182 -1.488609414e-07 ad : 3 2.100474535 iw : 18 -3.018742841e-05 -7.068344044e-05 -4.121202541e-05 -3.384348745e-06 1.392245514e-05 8.238961115e-06 @@ -399,7 +399,7 @@ iw : 21 0.007635264769 1.430969429e-05 0.02157112217 -3.860462065e-06 7.818370482e-06 0.001980300187 1.285083756e-05 0.007709260851 -3.802699117e-06 4.235748705e-06 -0.001055733134 6.039561927e-06 -0.003463993588 5.76456922e-07 -1.499711752e-06 -0.0005839276395 -2.553488385e-06 -0.001064686575 -5.231611232e-08 -5.908610406e-07 -0.0004474889823 -1.100273549e-06 -0.002077886619 1.609797518e-06 +5.231611233e-08 -5.908610406e-07 -0.0004474889823 -1.100273549e-06 -0.002077886619 1.609797518e-06 -1.843931872e-06 0.0004028445944 -2.653774747e-06 0.001726202319 -8.442026817e-07 1.191378347e-06 -1.659864118e-05 1.820247525e-06 -0.0005798581168 iw : 22 @@ -923,14 +923,14 @@ iw : 0 -0.0009166331491 2.234667978e-06 4.373805372e-08 0.001002076374 0.0005287882757 5.034592563e-06 -0.2334191687 0.0006587589122 -0.004568598217 0.0006744770053 1.20167614e-05 -0.196450226 0.0005545023495 -0.003845023343 0.0003851100901 8.94581468e-06 -0.07443508516 0.0002101450883 --0.001456881195 -2.994269509e-06 3.3374524e-08 0.002441914851 -6.890747424e-06 4.779439452e-05 +-0.001456881195 -2.994269509e-06 3.337452399e-08 0.002441914851 -6.890747424e-06 4.779439452e-05 -0.0001597953747 -5.176559489e-06 0.004373545928 -1.239385368e-05 8.560125649e-05 -9.604126246e-05 -3.528109063e-06 -0.004917174991 1.384101728e-05 -9.62414399e-05 3.701104983e-05 5.438651629e-07 -0.01287138388 3.632846316e-05 -0.0002519252459 9.07916729e-05 2.796184383e-06 -0.005109754036 1.444765288e-05 -0.0001000106945 6.552015049e-05 2.112045011e-06 -0.001982886746 5.616802736e-06 -3.881006389e-05 1.644144041e-05 7.027185287e-07 0.002629060109 -7.412184579e-06 5.145729631e-05 --6.047543295e-06 -2.04907542e-07 2.644957698e-06 -9.511031079e-09 5.176845196e-08 -8.480827358e-06 --2.193160529e-07 0.001235299252 -3.488203929e-06 2.417790274e-05 -4.737482779e-07 -6.619658221e-08 +-6.047543295e-06 -2.04907542e-07 2.644957698e-06 -9.511031078e-09 5.176845196e-08 -8.480827358e-06 +-2.193160529e-07 0.001235299252 -3.488203929e-06 2.417790274e-05 -4.737482778e-07 -6.619658221e-08 -0.0009074881165 2.560269109e-06 -1.776181714e-05 iw : 1 -0.0001857969773 0.0005483268213 0.0008868676364 0.0001801627568 2.392196097e-05 0.0001207913034 @@ -984,17 +984,17 @@ iw : 3 -0.0002924933416 4.671198765e-06 -1.736671916e-05 -0.0001210721265 2.698154886e-06 6.762571283e-06 4.654386107e-05 2.639114976e-07 8.101056302e-06 5.61513775e-05 -9.346440915e-07 7.287505798e-06 5.066855698e-05 -8.716418671e-07 -5.501108936e-07 -3.699115197e-06 6.478341931e-06 -0.0002476351417 --0.001717723245 2.862595099e-10 0.2300137364 2.023956699e-05 -0.0006398706148 -0.004439273298 -1.876110614e-09 0.20171166 3.194796105e-05 -0.0007867677447 -0.005460036498 4.60006524e-09 -0.1280958751 3.572328009e-05 -0.0006552289308 -0.004549277211 6.791763561e-09 0.04510352061 -3.060547323e-05 -0.0003827072607 -0.002659391396 7.130329456e-09 0.01298239949 2.005285876e-05 --0.0001370760786 -0.0009546188503 5.505943759e-09 -0.008130026156 8.231821347e-06 1.764574725e-05 -0.0001203997206 2.801465318e-09 -0.003392490151 -4.299253042e-07 6.476175657e-05 0.0004489305891 -3.326904302e-10 -0.00544766826 -4.331862543e-06 5.152600406e-05 0.0003580986364 -1.032506415e-09 -0.001842677631 -3.884935164e-06 1.570240685e-05 0.0001097205364 -1.149633492e-09 -0.001238862289 --1.751557028e-06 -4.581939074e-06 -3.135151062e-05 -6.037942084e-10 0.002405616582 1.187700582e-07 --1.084879398e-05 -7.521494015e-05 -4.057456937e-11 -0.001421236886 6.996193739e-07 -4.781603272e-06 --3.330030845e-05 1.934056991e-10 0.001473226668 +-0.001717723245 2.862595107e-10 0.2300137364 2.023956699e-05 -0.0006398706148 -0.004439273298 +1.876110617e-09 0.20171166 3.194796105e-05 -0.0007867677447 -0.005460036498 4.600065238e-09 +0.1280958751 3.572328009e-05 -0.0006552289308 -0.004549277211 6.791763562e-09 0.04510352061 +3.060547323e-05 -0.0003827072607 -0.002659391396 7.130329455e-09 0.01298239949 2.005285876e-05 +-0.0001370760786 -0.0009546188503 5.50594376e-09 -0.008130026156 8.231821347e-06 1.764574725e-05 +0.0001203997206 2.801465317e-09 -0.003392490151 -4.299253042e-07 6.476175657e-05 0.0004489305891 +3.326904311e-10 -0.00544766826 -4.331862543e-06 5.152600406e-05 0.0003580986364 -1.032506416e-09 +0.001842677631 -3.884935164e-06 1.570240685e-05 0.0001097205364 -1.149633491e-09 -0.001238862289 +-1.751557028e-06 -4.581939074e-06 -3.135151062e-05 -6.037942095e-10 0.002405616582 1.187700582e-07 +-1.084879398e-05 -7.521494015e-05 -4.057456955e-11 -0.001421236886 6.996193739e-07 -4.781603272e-06 +-3.330030845e-05 1.934056985e-10 0.001473226668 iw : 4 -0.1137996457 -0.2633554542 -0.1906752683 -0.08089322496 0.001928414057 0.02085481389 0.02047473704 0.004124868154 -0.0006263270024 -0.005657815626 -0.00105641187 -0.001485710919 @@ -1004,7 +1004,7 @@ iw : 4 -4.452238453e-06 -0.02053677816 -0.0004019562259 -0.0001738622206 -0.01494409213 -0.0002924933416 -0.0001265193647 -0.006185826323 -0.0001210721265 -5.2372836e-05 0.002378022501 4.654386107e-05 2.013021718e-05 0.002868890464 5.61513775e-05 2.428779451e-05 0.002588761779 5.066855698e-05 -2.191714478e-05 -0.0001889954759 -3.699115197e-06 -1.599386043e-06 -0.1834770342 -0.001717723245 +2.191714478e-05 -0.0001889954759 -3.699115197e-06 -1.599386042e-06 -0.1834770342 -0.001717723245 -0.0007429944218 -0.2300631182 -1.454226322e-05 -0.2474315895 -0.004439273298 -0.001920195101 -0.2018392821 -3.758303127e-05 -0.2350454014 -0.005460036498 -0.002361733259 -0.1282528426 -4.622503977e-05 -0.160259319 -0.004549277211 -0.001967798046 -0.04523430519 -3.851474021e-05 @@ -1035,7 +1035,7 @@ iw : 5 -0.0001064189708 0.000738293854 -0.0002175490909 -7.37679063e-06 0.0217539885 -8.257512241e-05 0.0005720924148 -0.0002839077412 -9.62661999e-06 0.01742222634 -2.821786591e-05 0.0001950052288 -0.0001581079723 -5.360963324e-06 -0.007812101996 8.754770189e-06 -6.107986131e-05 -1.748824282e-05 --5.929226835e-07 0.0003806559096 1.450908146e-05 -0.0001006518802 3.445731975e-05 1.168377579e-06 +-5.929226834e-07 0.0003806559096 1.450908146e-05 -0.0001006518802 3.445731975e-05 1.168377579e-06 -0.007403693103 7.269285765e-06 -5.032671424e-05 iw : 6 -1.941378043e-06 -3.62263619e-06 1.007721546e-05 2.284221623e-05 1.970307379e-05 5.66759338e-06 @@ -1047,17 +1047,17 @@ iw : 6 -0.0005160065616 7.542655311e-06 -2.261581646e-05 -0.0001578605545 4.477640627e-06 6.184347089e-06 4.229654711e-05 4.322317153e-07 1.796279108e-05 0.0001245269766 -1.434877945e-06 7.232405184e-06 5.035311464e-05 -1.19380205e-06 2.651507041e-06 1.854930403e-05 -3.411536319e-06 0.0001308247919 -0.0009074647541 -1.476837104e-10 -0.1541466872 8.407665249e-06 -0.0002654320777 -0.00184150867 -7.821186375e-10 0.1115388189 3.355115796e-05 -0.0008273945855 -0.00574196926 4.822468693e-09 +0.0009074647541 -1.476837121e-10 -0.1541466872 8.407665249e-06 -0.0002654320777 -0.00184150867 +7.821186375e-10 0.1115388189 3.355115796e-05 -0.0008273945855 -0.00574196926 4.822468692e-09 0.1106127687 5.28821637e-05 -0.0009682477409 -0.006722599091 1.006659358e-08 0.08761590864 -5.213365642e-05 -0.0006538783066 -0.004543693397 1.213135584e-08 0.004023374035 3.410720462e-05 +5.213365642e-05 -0.0006538783066 -0.004543693397 1.213135585e-08 0.004023374035 3.410720462e-05 -0.0002312240104 -0.001610344287 9.379046438e-09 0.001597942961 1.335139578e-05 2.684783753e-05 -0.0001829968458 4.530689959e-09 -0.01871868297 -6.982237956e-07 0.0001065049766 0.000738293854 -5.501533387e-10 0.002859035484 -7.054392436e-06 8.231262896e-05 0.0005720924148 -1.693240722e-09 --0.007464203525 -6.510071927e-06 2.79208578e-05 0.0001950052288 -1.914557432e-09 0.007462821054 --2.796087686e-06 -8.906173297e-06 -6.107986131e-05 -9.756604451e-10 -0.004692600547 1.496764515e-07 --1.451804694e-05 -0.0001006518802 -5.714784102e-11 0.005521199443 9.204205861e-07 -7.230997739e-06 --5.032671424e-05 2.473974685e-10 -0.004833381799 +0.0001829968458 4.530689961e-09 -0.01871868297 -6.982237956e-07 0.0001065049766 0.000738293854 +5.501533363e-10 0.002859035484 -7.054392436e-06 8.231262896e-05 0.0005720924148 -1.693240722e-09 +-0.007464203525 -6.510071927e-06 2.79208578e-05 0.0001950052288 -1.914557433e-09 0.007462821054 +-2.796087686e-06 -8.906173297e-06 -6.107986131e-05 -9.756604458e-10 -0.004692600547 1.496764515e-07 +-1.451804694e-05 -0.0001006518802 -5.714784292e-11 0.005521199443 9.204205861e-07 -7.23099774e-06 +-5.032671424e-05 2.473974675e-10 -0.004833381799 iw : 7 0.1813250267 0.1090411616 -0.1078577432 -0.07562307561 -0.008128522434 0.04522969617 0.0265902746 0.01365251537 -0.00718039191 -0.003681625675 -0.006841795866 0.002160256666 @@ -1088,7 +1088,7 @@ iw : 8 0.0642773366 -0.0006581157726 -1.434947375e-05 0.003724558548 -0.0001872093107 -2.364767546e-06 -0.00882539944 2.661494891e-05 1.651436685e-06 -0.008130380939 7.711415551e-05 1.996329807e-06 -0.002044321226 6.608542108e-05 1.355395231e-06 -0.0008831466296 2.874900934e-05 3.539605205e-07 -0.002049231734 -7.525429075e-06 -3.060896626e-07 0.0003850831518 0.000435487707 2.444153088e-07 +0.002049231734 -7.525429075e-06 -3.060896626e-07 0.0003850831518 0.000435487707 2.444153089e-07 0.04134618574 0.0003918592779 -0.002717582267 0.0008146290513 3.639869542e-06 0.02556626445 0.001009142603 -0.006997674436 0.000764932793 1.344808799e-05 -0.07342117755 0.001260643979 -0.008740231657 0.0007238348172 2.753079936e-05 -0.1531726053 0.001145607181 -0.007940942224 @@ -1109,18 +1109,18 @@ iw : 9 0.002149330709 -2.231503227e-05 4.28644472e-05 0.0003003735435 -6.347599256e-06 -3.843893117e-05 -0.0002658569294 9.025642208e-07 -3.331753059e-05 -0.0002312874683 2.614778678e-06 -1.430922502e-05 -9.962993406e-05 2.240777756e-06 -1.782487868e-06 -1.266581629e-05 9.747747875e-07 6.173832452e-06 -4.270615265e-05 -2.551835567e-07 4.677442681e-06 3.248762398e-05 2.444153088e-07 0.0002020489282 -0.001401530355 7.9410797e-11 0.104022116 3.639869542e-06 0.0001247958879 0.0008660064101 -1.182703885e-09 0.2211104785 1.344808799e-05 -0.0003589844167 -0.002490384963 4.369889607e-09 -0.215298556 2.753079936e-05 -0.0007484413816 -0.005194277209 8.946542788e-09 0.1456503379 -4.040694804e-05 -0.0008498856821 -0.00590108999 1.313150098e-08 0.07398879697 3.97717435e-05 --0.0005809992646 -0.004037121591 1.292536167e-08 0.02085136897 2.469737219e-05 -0.0002228523004 --0.001550754494 8.025691774e-09 -0.001900565046 9.738038405e-06 -2.478871216e-05 -0.0001741318001 -3.163134797e-09 -0.003744695794 2.02989804e-06 2.594920875e-05 0.0001794238391 6.572691399e-10 --0.002352309993 -1.371654251e-06 3.147736249e-05 0.0002185487795 -4.485064487e-10 -0.0004010551572 --2.549054371e-06 1.680570836e-05 0.0001171033629 -8.31112564e-10 2.404628867e-05 -2.070476859e-06 -3.96508707e-06 2.797223996e-05 -6.745113301e-10 0.0006178181725 -3.808363508e-07 -5.645830754e-06 --3.905509362e-05 -1.237002945e-10 1.682707126e-05 +4.270615265e-05 -2.551835567e-07 4.677442681e-06 3.248762398e-05 2.444153089e-07 0.0002020489282 +0.001401530355 7.94107669e-11 0.104022116 3.639869542e-06 0.0001247958879 0.0008660064101 +1.18270388e-09 0.2211104785 1.344808799e-05 -0.0003589844167 -0.002490384963 4.369889591e-09 +0.215298556 2.753079936e-05 -0.0007484413816 -0.005194277209 8.946542783e-09 0.1456503379 +4.040694804e-05 -0.0008498856821 -0.00590108999 1.313150097e-08 0.07398879697 3.97717435e-05 +-0.0005809992646 -0.004037121591 1.292536168e-08 0.02085136897 2.469737219e-05 -0.0002228523004 +-0.001550754494 8.025691758e-09 -0.001900565046 9.738038405e-06 -2.478871216e-05 -0.0001741318001 +3.163134797e-09 -0.003744695794 2.02989804e-06 2.594920875e-05 0.0001794238391 6.572691436e-10 +-0.002352309993 -1.371654251e-06 3.147736249e-05 0.0002185487795 -4.485064477e-10 -0.0004010551572 +-2.549054371e-06 1.680570836e-05 0.0001171033629 -8.311125684e-10 2.404628867e-05 -2.070476859e-06 +3.96508707e-06 2.797223996e-05 -6.745113279e-10 0.0006178181725 -3.808363508e-07 -5.645830754e-06 +-3.905509362e-05 -1.23700294e-10 1.682707126e-05 iw : 10 -0.02670408021 -0.2105280844 -0.3503980534 -0.2897123544 -0.1464956766 -0.03340221508 0.02282924276 0.0218929545 0.008488229434 0.0004331414211 -0.001641657079 -0.002145189847 @@ -1145,23 +1145,23 @@ iw : 10 iw : 11 7.536076058e-05 0.0005941657445 0.0009890506708 0.0008179506325 0.0004138095818 9.455241455e-05 -6.431861953e-05 -6.179547647e-05 -2.39905337e-05 -1.245597874e-06 4.624410318e-06 6.057740641e-06 -2.155023986e-06 -8.6863927e-05 -6.116330209e-11 0.117608869 -0.0005002288088 -1.036601213e-09 -0.2416214541 -0.0009035661484 -3.976987049e-09 0.1883116501 -0.0009029642952 -7.242859908e-09 -0.0992530915 -0.0006558068276 -9.228506788e-09 0.02790391984 -0.0003103314557 -8.209180373e-09 -0.001559911971 -4.353978182e-05 -4.344689269e-09 -0.008889704298 3.827580875e-05 -1.048446898e-09 --0.00170806119 3.336297528e-05 2.936697908e-10 -0.002269802768 1.439375084e-05 5.44990729e-10 -0.001547481954 1.848921837e-06 4.281764133e-10 -0.0008827798827 -6.148915219e-06 1.604384084e-10 -0.001368263336 -4.687588502e-06 -6.570077598e-11 -0.0009922407151 0.0003918592779 7.9410797e-11 --0.1040403623 0.0008807567638 -1.139871116e-07 0.001009142603 1.182703885e-09 -0.2212100345 -0.001872498326 -6.219419436e-07 0.001260643979 4.369889607e-09 -0.2154913685 0.001823835836 --1.204529434e-06 0.001145607181 8.946542788e-09 -0.1458817082 0.001234418046 -1.445405873e-06 -0.0008542139895 1.313150098e-08 -0.07420015692 0.000627615603 -1.320397609e-06 0.0004389465019 -1.292536167e-08 -0.02097921143 0.0001772696993 -7.986508135e-07 0.0001202402543 8.025691774e-09 +2.155023986e-06 -8.6863927e-05 -6.11633032e-11 0.117608869 -0.0005002288088 -1.036601214e-09 +0.2416214541 -0.0009035661484 -3.976987047e-09 0.1883116501 -0.0009029642952 -7.242859909e-09 +0.0992530915 -0.0006558068276 -9.228506787e-09 0.02790391984 -0.0003103314557 -8.209180372e-09 +0.001559911971 -4.353978182e-05 -4.344689268e-09 -0.008889704298 3.827580875e-05 -1.048446898e-09 +-0.00170806119 3.336297528e-05 2.936697909e-10 -0.002269802768 1.439375084e-05 5.449907288e-10 +0.001547481954 1.848921837e-06 4.281764141e-10 -0.0008827798827 -6.148915219e-06 1.604384083e-10 +0.001368263336 -4.687588502e-06 -6.570077572e-11 -0.0009922407151 0.0003918592779 7.94107669e-11 +-0.1040403623 0.0008807567638 -1.139871116e-07 0.001009142603 1.18270388e-09 -0.2212100345 +0.001872498326 -6.219419436e-07 0.001260643979 4.369889591e-09 -0.2154913685 0.001823835836 +-1.204529434e-06 0.001145607181 8.946542783e-09 -0.1458817082 0.001234418046 -1.445405873e-06 +0.0008542139895 1.313150097e-08 -0.07420015692 0.000627615603 -1.320397609e-06 0.0004389465019 +1.292536168e-08 -0.02097921143 0.0001772696993 -7.986508135e-07 0.0001202402543 8.025691758e-09 0.001857036057 -1.583738199e-05 -2.719317422e-07 -3.698022804e-06 3.163134797e-09 0.003741795746 --3.168561445e-05 -1.811679057e-08 -2.644206774e-05 6.572691399e-10 0.002358794232 -1.995219262e-05 -4.050810687e-08 -2.019562897e-05 -4.485064487e-10 0.0004075662503 -3.433077711e-06 4.067577999e-08 --9.670894028e-06 -8.31112564e-10 -2.069200026e-05 1.841068039e-07 2.095469654e-08 6.685853624e-07 --6.745113301e-10 -0.0006173614767 5.22776392e-06 2.852994845e-09 3.334547607e-06 -1.237002945e-10 +-3.168561445e-05 -1.811679057e-08 -2.644206774e-05 6.572691436e-10 0.002358794232 -1.995219262e-05 +4.050810687e-08 -2.019562897e-05 -4.485064477e-10 0.0004075662503 -3.433077711e-06 4.067577999e-08 +-9.670894028e-06 -8.311125684e-10 -2.069200026e-05 1.841068039e-07 2.095469654e-08 6.685853624e-07 +-6.745113279e-10 -0.0006173614767 5.227763919e-06 2.852994845e-09 3.334547607e-06 -1.23700294e-10 -1.795974713e-05 1.490059019e-07 -7.076013341e-09 iw : 12 -0.0005226657859 -0.004120562319 -0.006858168208 -0.005670396965 -0.002867287594 -0.0006537650746 @@ -1469,7 +1469,7 @@ iw : 26 -0.02471225303 0.0007559660553 -0.07696876827 -0.04709274991 -0.0005337549714 0.04396427027 0.01484919695 -0.0001223360736 0.01624326556 0.01433525291 0.000126047822 -0.0130600418 -0.008253561108 3.287896556e-05 -0.002454065121 -0.0004642479638 -3.999934727e-05 0.002501326839 --0.0002935711428 -9.233328323e-06 0.002350070951 0.003074678404 2.211270396e-05 -0.003409393337 +-0.0002935711427 -9.233328323e-06 0.002350070951 0.003074678404 2.211270396e-05 -0.003409393337 -0.003430277574 4.917819636e-06 0.0006039470696 0.001651886997 0.05196380122 6.491012365e-06 0.0008292945752 0.02255701435 -0.03892119249 -0.008096541686 -0.002404397153 -5.749559861e-05 0.1159815045 -0.02371968949 -0.1173023012 -0.003312473625 -0.001773629188 0.1130475058 @@ -1480,7 +1480,7 @@ iw : 26 -0.005508068245 -0.005767749429 0.003727516259 0.0001067144339 5.631713625e-05 -0.00366460995 -0.006328207238 -0.001842531471 -6.799498917e-05 -2.738286224e-05 0.002569446035 0.003135897311 -0.0009314710967 -1.415851055e-05 -1.444641844e-05 0.0002938302888 0.0007895577313 0.001698862653 -4.343438222e-05 2.58224649e-05 -0.001411546929 -0.001741413616 -0.00117584639 -2.943846572e-05 +4.343438221e-05 2.58224649e-05 -0.001411546929 -0.001741413616 -0.00117584639 -2.943846572e-05 -1.789131422e-05 0.0009459547205 0.001041172279 iw : 27 0.001953754983 -0.003714420828 0.07015184219 -0.03525470667 -0.03097896576 0.02158353764 @@ -1489,7 +1489,7 @@ iw : 27 -0.1287076941 -0.001095677973 0.1071503599 0.09430802001 0.0002526979033 -0.02471225303 0.02372917285 0.0004815521738 -0.04709274991 -0.03264541913 -0.0001518421218 0.01484919695 -0.008090692418 -0.0001465867297 0.01433525291 0.01664573496 8.439771091e-05 -0.008253561108 --0.006122588017 4.747219404e-06 -0.0004642479638 0.001260693394 3.001944508e-06 -0.0002935711428 +-0.006122588017 4.747219404e-06 -0.0004642479638 0.001260693394 3.001944508e-06 -0.0002935711427 -0.002986321571 -3.144046741e-05 0.003074678404 0.004628659699 3.507668645e-05 -0.003430277574 -0.004428853175 -1.689155499e-05 0.001651886997 0.00310159499 0.02826222088 0.0008292945752 0.001834058246 -0.0321396698 -0.1793592699 0.04902925918 -5.749559861e-05 0.002116869375 @@ -1609,113 +1609,7 @@ iw : 32 -0.0003732271893 -9.850350046e-06 1.146419665e-05 0.0009475483255 -0.001855222431 0.0001498011151 9.993381683e-06 -6.084856882e-06 -0.001357679208 0.000984697256 8.589366875e-05 -5.182925413e-06 3.684180939e-06 0.0009874801003 -0.0005962018387 -ad : 2 3.113220902 -iw : 13 --0.0001911461239 -0.0002510922386 6.868082532e-05 7.748601697e-05 -1.571465045e-05 -3.601765832e-05 -1.565166905e-05 8.084746102e-06 -1.55948318e-06 -9.324909116e-06 6.396825543e-06 -5.581775491e-07 -1.079562391e-06 -0.000217574225 -0.0001872037771 0.1761299792 -0.0003042396182 -0.0002617718421 -0.02138781088 -9.609160858e-06 -8.267850695e-06 -0.01830183982 8.948379366e-05 7.69930545e-05 --0.01046105793 1.293381099e-05 1.11284242e-05 0.0102358175 -3.922048733e-05 -3.374583257e-05 --0.002831300457 -3.316700202e-08 -2.853733273e-08 0.001581712174 1.405566009e-05 1.209367818e-05 --0.00324315942 2.504265736e-06 2.154703778e-06 0.003336396352 -9.690820751e-06 -8.33811196e-06 --0.002328631734 2.142841878e-06 1.84372985e-06 0.001895213697 1.556692789e-06 1.339399324e-06 --0.001981547416 1.47972815e-06 1.273177918e-06 0.001916683211 -0.0002949856122 -0.0002357198563 -0.1875257303 -0.0004397854232 0.1613496498 -0.0002139904149 -0.000364207739 0.05765388269 --0.0002607175892 0.04960617281 -2.720915791e-05 -9.488194343e-05 -0.01237429198 -1.849050551e-05 --0.01064700655 5.604503993e-05 8.892031246e-05 -0.01772349124 7.023504955e-05 -0.01524952923 -1.058343267e-05 4.560713269e-05 0.008343152401 4.565960684e-06 0.007178560063 -1.531968371e-05 --3.626850543e-05 -8.347633087e-06 -1.558795982e-05 -7.182415305e-06 -8.585550894e-06 -1.63763643e-05 -0.001597550906 -9.927918479e-06 0.001374554195 9.77409713e-06 1.331947816e-05 -0.003978552449 -1.290916614e-05 -0.00342319981 1.04447989e-06 1.025425222e-05 0.003157398842 -1.285832145e-06 -0.002716668249 -1.866109668e-06 -9.024343216e-06 -0.001869771335 -5.084818275e-07 -0.001608776298 --2.901100346e-06 -2.380006324e-06 0.001819204431 -4.306522942e-06 0.001565267856 3.171006261e-06 -2.473497061e-06 -0.002040356479 4.745796454e-06 -0.001755550041 -1.082820894e-06 1.990134037e-06 -0.001846752942 -2.476160338e-06 0.001588970965 -iw : 14 -0.0001359243112 -6.782260266e-05 6.191491944e-05 0.0001793537051 -6.06025481e-05 -7.004193141e-05 -1.90783045e-05 3.424079177e-05 -1.73162094e-05 -6.246933429e-06 1.968061676e-06 7.469097723e-06 --5.146577498e-06 4.540548574e-05 3.906748803e-05 -0.07996319707 -0.000235816901 -0.0002029000198 -0.05017478398 -3.205680446e-05 -2.758210389e-05 -0.06020728274 0.0002160707566 0.0001859101727 -0.003863413201 1.942182528e-05 1.671079858e-05 0.001673679184 -8.891187656e-05 -7.650096936e-05 -0.01324933297 -6.156712787e-06 -5.297318137e-06 -0.01327529046 3.399991472e-05 2.925398198e-05 -0.007353002557 1.349977299e-06 1.161538548e-06 -0.005611480113 -1.518489353e-05 -1.306528576e-05 -0.006354563885 -3.651138639e-08 -3.141488583e-08 -0.006154767876 7.291024983e-06 6.273295542e-06 -0.005160564885 -1.736367279e-06 -1.493993661e-06 -0.004597594795 -3.183371892e-05 -5.161542086e-05 -0.009617298957 -3.955912282e-05 0.008274852824 -0.000283942157 -0.0004339289868 0.09651501329 --0.0003608343889 0.08304281003 -2.933548145e-05 -0.0001899736478 -0.04891041772 6.527042274e-06 --0.04208317845 0.0001145460172 0.0002201230968 -0.02065109753 0.0001319622695 -0.01776848089 -4.247460529e-05 0.0001062314633 0.002325472687 4.150553939e-05 0.002000867845 -4.986544496e-05 --7.883655137e-05 0.01588258405 -6.257514408e-05 0.01366558803 -8.618019158e-06 -4.468800097e-05 --0.009856854431 -1.439175695e-06 -0.008480969562 1.087927518e-05 3.409327442e-05 0.003388191099 -8.55347189e-06 0.002915244999 1.060129827e-05 1.52378222e-05 -0.003994332713 1.376292858e-05 --0.003436777361 -1.17475795e-05 -1.407581169e-05 0.005566044266 -1.609906233e-05 0.004789099031 -2.460907041e-06 -6.033619445e-06 -0.004809939065 6.083474798e-06 -0.00413853599 -1.663021871e-06 -5.094309485e-06 0.003662995058 -4.417995897e-06 0.003151690006 4.750886922e-06 2.907598883e-06 --0.003380758509 7.351210012e-06 -0.002908849899 -iw : 15 -1.136664398e-05 0.0002778188943 0.0002202564079 -0.0001766033874 -0.0001737493961 8.459809006e-05 -6.044192741e-05 -3.030574279e-05 -1.046311817e-05 4.473748822e-06 4.916077014e-06 -1.727084526e-06 --4.266083441e-06 -2.930203698e-05 5.160266346e-05 -0.04947612132 0.0001506097685 0.0003048721796 --0.1129007353 0.0004104830193 0.0003523674649 0.0005273785758 -2.60368295e-05 -8.101465068e-05 -0.03775188272 -0.00021393686 -0.0001981791695 0.009084562768 -3.380766381e-06 2.293889869e-05 --0.01664844278 6.740228047e-05 5.336888089e-05 0.002979081488 4.19774684e-06 3.988665989e-06 --0.0002427435725 -2.300092959e-05 -2.345146034e-05 0.002358070982 1.103711352e-06 4.900512745e-06 --0.002544733737 8.065918755e-06 4.181128704e-06 0.001777027705 -4.965345929e-06 -1.990902391e-06 --0.001469433044 1.672697089e-06 -1.079324306e-06 0.001622187814 -5.354871652e-05 -4.950721417e-05 -0.006265936436 0.0001878711387 -0.07279397039 4.050165853e-05 0.0002428253994 -0.1120280137 -0.000502761814 -0.1386125632 0.0002165560355 0.0005613194577 -0.07143474777 0.0003740454976 --0.04613282948 6.898938167e-05 0.0001175412363 0.04187434179 -7.324989634e-05 0.04309014456 --8.764935224e-05 -0.0002240312684 0.01912224449 -0.0001414745535 0.01569334723 -3.967057707e-05 --8.401440298e-05 -0.007059799633 -9.451880504e-06 -0.009289171871 3.329888389e-05 8.254473342e-05 --0.00631954143 4.568735449e-05 -0.003541301937 3.898310549e-06 7.571306855e-06 0.002962955446 --1.220493651e-06 0.001558317044 -4.015522029e-06 -1.106581586e-05 0.0005771430782 -8.999904968e-06 -0.001475323043 -3.967134975e-06 -8.181738214e-06 -0.0001871299866 -2.549012562e-07 -0.001136252142 -2.507008871e-06 5.608079671e-06 -0.0006325399754 1.53525933e-06 0.0003053454646 2.039670443e-06 -4.922268445e-06 0.0007440955534 2.378083599e-06 -9.064605974e-05 -2.17878386e-06 -5.380038297e-06 --0.0005362756327 -2.923460742e-06 0.0002119067997 -iw : 16 -9.780012713e-06 0.0002390390974 0.0001895115632 -0.0001519519197 -0.0001494963074 7.278932968e-05 -5.200504382e-05 -2.607546698e-05 -9.002607006e-06 3.849273402e-06 4.229858502e-06 -1.486006657e-06 --3.670595327e-06 5.160266346e-05 -4.48766823e-05 -0.0425699174 0.0003048721796 5.85936641e-05 --0.09714130468 0.0003523674649 0.0003041319528 0.0004537635897 -8.101465068e-05 -1.58509841e-06 -0.03248222549 -0.0001981791695 -0.000154122694 0.007816479472 2.293889869e-05 -1.030415342e-05 --0.01432454314 5.336888089e-05 5.129455782e-05 0.00256324161 3.988665989e-06 2.993893125e-06 --0.0002088598208 -2.345146034e-05 -1.59228419e-05 0.002028915854 4.900512745e-06 -3.753547041e-07 --0.002189522988 4.181128704e-06 6.803976207e-06 0.001528978437 -1.990902391e-06 -4.364454492e-06 --0.001264319871 -1.079324306e-06 1.998457275e-06 0.001395752121 0.0001814338902 -8.224107888e-05 --0.07279397039 3.029508325e-05 0.02823651304 0.0004680653278 0.00013343994 -0.1386125632 -0.0001824649551 -0.07019215944 0.0003305131346 0.0004578417385 -0.04613282948 0.0002385882638 --0.05751100025 -7.531286656e-05 0.0001246013768 0.04309014456 1.472787056e-05 0.02886893328 --0.0001244637137 -0.0001842124604 0.01569334723 -9.340812578e-05 0.01438569988 -5.10141941e-06 --7.734603427e-05 -0.009289171871 -2.489397076e-05 -0.004256154481 3.971932116e-05 6.90938492e-05 --0.003541301937 3.291960127e-05 -0.005250710522 -1.516132936e-06 7.363126806e-06 0.001558317044 -1.761735049e-06 0.002492626327 -8.066074227e-06 -8.717674664e-06 0.001475323043 -5.081438978e-06 -0.0001318630947 1.378024426e-07 -7.65848799e-06 -0.001136252142 -2.269594321e-06 0.0001558120814 -1.202783783e-06 4.991555023e-06 0.0003053454646 1.871911633e-06 -0.000724698926 2.038321824e-06 -4.185808417e-06 -9.064605974e-05 1.882535817e-06 0.0007714542232 -2.537018951e-06 -4.513636696e-06 -0.0002119067997 -2.132968662e-06 -0.0006002330533 -iw : 17 --0.001715341062 -0.08789691939 0.02983973011 0.03545257426 -0.007746011695 -0.0133157081 -0.004408590189 0.00102053006 0.0007316492806 -0.002016612194 0.001617864312 -0.001149300747 -0.001014422242 -0.04947612132 -0.0425699174 -0.0002678287177 -0.1129007353 -0.09714130468 --0.0006111661377 0.0005273785758 0.0004537635897 2.852167005e-06 0.03775188272 0.03248222549 -0.0002043624224 0.009084562768 0.007816479472 4.917895001e-05 -0.01664844278 -0.01432454314 --9.012301524e-05 0.002979081488 0.00256324161 1.61261333e-05 -0.0002427435725 -0.0002088598208 --1.314050301e-06 0.002358070982 0.002028915854 1.276513696e-05 -0.002544733737 -0.002189522988 --1.377541869e-05 0.001777027705 0.001528978437 9.619499069e-06 -0.001469433044 -0.001264319871 --7.95442073e-06 0.001622187814 0.001395752121 8.781369332e-06 -0.08322852676 -0.07279397039 --0.0004579833563 -0.1221854604 -0.0003940550134 -0.08691377071 -0.1386125632 -0.0008720836879 --0.1087032125 -0.0007503524847 -0.009210146619 -0.04613282948 -0.0002902492567 -0.002028694377 --0.0002497343477 0.02294923259 0.04309014456 0.0002711011695 0.02674382834 0.000233259077 -0.006122744664 0.01569334723 9.873664663e-05 0.005868360237 8.495433311e-05 -0.006083095095 --0.009289171871 -5.844227327e-05 -0.007732584619 -5.028451462e-05 -0.0002243442884 -0.003541301937 --2.228085978e-05 0.0006802552024 -1.917075016e-05 -6.414806083e-06 0.001558317044 9.804114109e-06 --0.0004814398895 8.435591083e-06 0.00128026849 0.001475323043 9.282135272e-06 0.001772210088 -7.986473501e-06 -0.001134618876 -0.001136252142 -7.148685477e-06 -0.001622275473 -6.150824725e-06 -0.0006991371898 0.0003053454646 1.921036363e-06 0.001118782184 1.652885414e-06 -0.0005287385336 --9.064605974e-05 -5.703587802e-07 -0.0008884433343 -4.907443332e-07 0.0005413700565 0.0002119067997 -1.333284787e-06 0.0008737230231 1.147176087e-06 -ad : 3 2.100474535 +ad : 2 2.100474535 iw : 0 3.22436861e-05 7.523511528e-05 3.411818674e-05 1.996124846e-06 -3.711188426e-07 5.006636667e-06 -4.301020735e-07 -3.504412238e-06 -3.245572511e-06 5.909249262e-07 7.919795643e-07 7.832743632e-07 @@ -1893,7 +1787,7 @@ iw : 8 -0.002826866506 2.040955426e-06 -1.006745622e-05 0.004420798919 3.122907358e-06 3.053392973e-06 0.004243374913 1.290346292e-06 3.976538988e-06 -0.000461138178 -3.836223538e-08 1.540038023e-06 0.0001474980917 -5.580242184e-07 -7.583655272e-07 -0.001179931488 -4.344554877e-07 -1.336875122e-06 -0.000558472156 -3.131941564e-08 -5.898107143e-07 -0.0003863235623 4.292021318e-05 -3.302226859e-07 +0.000558472156 -3.131941564e-08 -5.898107143e-07 -0.0003863235623 4.292021318e-05 -3.302226858e-07 -0.02472319086 4.489006747e-05 0.1184792616 5.22061529e-05 -4.540762246e-06 -0.05720143335 0.0001046348361 0.1880063696 5.212864639e-06 -1.477542812e-05 -0.06024955943 0.0001023758285 0.09976482795 -2.395457532e-05 -2.522385421e-05 -0.04191513473 5.331682545e-05 0.003597540564 @@ -1914,8 +1808,8 @@ iw : 9 -0.002965422048 9.044856404e-06 1.899630032e-06 -0.01087505797 3.072968081e-07 -9.389368695e-06 -0.004347042691 -1.863479842e-06 -5.688162536e-06 1.202067356e-05 -1.160358868e-06 -9.355708746e-07 0.001104065573 1.01078666e-07 1.819500732e-06 0.0006350634371 6.25952188e-07 1.91384596e-06 --2.705773177e-06 4.068890463e-07 4.66678263e-07 -0.0003288312839 -3.302226859e-07 1.695369551e-05 --0.1070188359 7.263124547e-07 -0.02069763059 -4.540762246e-06 -8.881673034e-06 -0.1844703918 +-2.705773177e-06 4.068890463e-07 4.66678263e-07 -0.0003288312839 -3.302226858e-07 1.695369551e-05 +-0.1070188359 7.263124546e-07 -0.02069763059 -4.540762246e-06 -8.881673034e-06 -0.1844703918 9.987237547e-06 0.009480406607 -1.477542812e-05 -5.609636722e-05 -0.1222606685 3.249800534e-05 0.07544342278 -2.522385421e-05 -5.849708711e-05 -0.03680830975 5.547893201e-05 0.09632473135 -2.836717556e-05 -2.656503203e-05 0.01067760472 6.239254886e-05 0.06969476918 -1.825670725e-05 @@ -1954,9 +1848,9 @@ iw : 11 0.3040582894 5.5111225e-05 7.906402939e-05 0.2773703783 6.059720917e-05 0.0001182741937 0.1570463882 4.488641177e-05 0.0001103245755 0.04017526767 1.695300148e-05 5.457861271e-05 -0.01302688253 -3.65972935e-06 -1.79987265e-06 -0.02216022942 -6.537238815e-06 -1.628641394e-05 --0.004568998216 -2.838986341e-06 -8.719787245e-06 -0.0007657564225 1.876900962e-10 -9.565119918e-07 +-0.004568998216 -2.838986341e-06 -8.719787245e-06 -0.0007657564225 1.876900969e-10 -9.565119918e-07 0.003282605624 1.178930282e-06 3.066172236e-06 -0.0003024817966 9.557760358e-07 2.934450692e-06 -0.0009598834489 9.395968817e-08 5.733020867e-07 -0.001570722977 4.489006747e-05 7.263124547e-07 +0.0009598834489 9.395968817e-08 5.733020867e-07 -0.001570722977 4.489006747e-05 7.263124546e-07 0.04450851884 9.622346834e-05 0.02434879892 0.0001046348361 9.987237547e-06 0.1073518567 0.0001932231609 0.1194716156 0.0001023758285 3.249800534e-05 0.1180627278 0.0001891402246 0.1978776391 5.331682545e-05 5.547893201e-05 0.08547750012 0.0001497938616 0.1859093172 @@ -1989,6 +1883,112 @@ iw : 12 -0.001205086851 0.001581555692 -1.310297016e-06 0.002370866133 -4.113047684e-06 -0.0002669863307 0.0005648720756 -5.166844713e-07 0.0009348959991 -1.469020895e-06 -0.0003618519955 5.655547948e-05 4.812597358e-08 -8.708051814e-05 -1.470807636e-07 +ad : 3 3.113220902 +iw : 13 +-0.0001911461239 -0.0002510922386 6.868082532e-05 7.748601697e-05 -1.571465045e-05 -3.601765832e-05 +1.565166905e-05 8.084746102e-06 -1.55948318e-06 -9.324909116e-06 6.396825543e-06 -5.581775491e-07 +1.079562391e-06 -0.000217574225 -0.0001872037771 0.1761299792 -0.0003042396182 -0.0002617718421 +0.02138781088 -9.609160858e-06 -8.267850695e-06 -0.01830183982 8.948379366e-05 7.69930545e-05 +-0.01046105793 1.293381099e-05 1.11284242e-05 0.0102358175 -3.922048733e-05 -3.374583257e-05 +-0.002831300457 -3.316700202e-08 -2.853733273e-08 0.001581712174 1.405566009e-05 1.209367818e-05 +-0.00324315942 2.504265736e-06 2.154703778e-06 0.003336396352 -9.690820751e-06 -8.33811196e-06 +-0.002328631734 2.142841878e-06 1.84372985e-06 0.001895213697 1.556692789e-06 1.339399324e-06 +-0.001981547416 1.47972815e-06 1.273177918e-06 0.001916683211 -0.0002949856122 -0.0002357198563 +0.1875257303 -0.0004397854232 0.1613496498 -0.0002139904149 -0.000364207739 0.05765388269 +-0.0002607175892 0.04960617281 -2.720915791e-05 -9.488194343e-05 -0.01237429198 -1.849050551e-05 +-0.01064700655 5.604503993e-05 8.892031246e-05 -0.01772349124 7.023504955e-05 -0.01524952923 +1.058343267e-05 4.560713269e-05 0.008343152401 4.565960684e-06 0.007178560063 -1.531968371e-05 +-3.626850543e-05 -8.347633087e-06 -1.558795982e-05 -7.182415305e-06 -8.585550894e-06 -1.63763643e-05 +0.001597550906 -9.927918479e-06 0.001374554195 9.77409713e-06 1.331947816e-05 -0.003978552449 +1.290916614e-05 -0.00342319981 1.04447989e-06 1.025425222e-05 0.003157398842 -1.285832145e-06 +0.002716668249 -1.866109668e-06 -9.024343216e-06 -0.001869771335 -5.084818275e-07 -0.001608776298 +-2.901100346e-06 -2.380006324e-06 0.001819204431 -4.306522942e-06 0.001565267856 3.171006261e-06 +2.473497061e-06 -0.002040356479 4.745796454e-06 -0.001755550041 -1.082820894e-06 1.990134037e-06 +0.001846752942 -2.476160338e-06 0.001588970965 +iw : 14 +0.0001359243112 -6.782260266e-05 6.191491944e-05 0.0001793537051 -6.06025481e-05 -7.004193141e-05 +1.90783045e-05 3.424079177e-05 -1.73162094e-05 -6.246933429e-06 1.968061676e-06 7.469097723e-06 +-5.146577498e-06 4.540548574e-05 3.906748803e-05 -0.07996319707 -0.000235816901 -0.0002029000198 +0.05017478398 -3.205680446e-05 -2.758210389e-05 -0.06020728274 0.0002160707566 0.0001859101727 +0.003863413201 1.942182528e-05 1.671079858e-05 0.001673679184 -8.891187656e-05 -7.650096936e-05 +0.01324933297 -6.156712787e-06 -5.297318137e-06 -0.01327529046 3.399991472e-05 2.925398198e-05 +0.007353002557 1.349977299e-06 1.161538548e-06 -0.005611480113 -1.518489353e-05 -1.306528576e-05 +0.006354563885 -3.651138639e-08 -3.141488583e-08 -0.006154767876 7.291024983e-06 6.273295542e-06 +0.005160564885 -1.736367279e-06 -1.493993661e-06 -0.004597594795 -3.183371892e-05 -5.161542086e-05 +0.009617298957 -3.955912282e-05 0.008274852824 -0.000283942157 -0.0004339289868 0.09651501329 +-0.0003608343889 0.08304281003 -2.933548145e-05 -0.0001899736478 -0.04891041772 6.527042274e-06 +-0.04208317845 0.0001145460172 0.0002201230968 -0.02065109753 0.0001319622695 -0.01776848089 +4.247460529e-05 0.0001062314633 0.002325472687 4.150553939e-05 0.002000867845 -4.986544496e-05 +-7.883655137e-05 0.01588258405 -6.257514408e-05 0.01366558803 -8.618019158e-06 -4.468800097e-05 +-0.009856854431 -1.439175695e-06 -0.008480969562 1.087927518e-05 3.409327442e-05 0.003388191099 +8.55347189e-06 0.002915244999 1.060129827e-05 1.52378222e-05 -0.003994332713 1.376292858e-05 +-0.003436777361 -1.17475795e-05 -1.407581169e-05 0.005566044266 -1.609906233e-05 0.004789099031 +2.460907041e-06 -6.033619445e-06 -0.004809939065 6.083474798e-06 -0.00413853599 -1.663021871e-06 +5.094309485e-06 0.003662995058 -4.417995897e-06 0.003151690006 4.750886922e-06 2.907598883e-06 +-0.003380758509 7.351210012e-06 -0.002908849899 +iw : 15 +1.136664398e-05 0.0002778188943 0.0002202564079 -0.0001766033874 -0.0001737493961 8.459809006e-05 +6.044192741e-05 -3.030574279e-05 -1.046311817e-05 4.473748822e-06 4.916077014e-06 -1.727084526e-06 +-4.266083441e-06 -2.930203698e-05 5.160266346e-05 -0.04947612132 0.0001506097685 0.0003048721796 +-0.1129007353 0.0004104830193 0.0003523674649 0.0005273785758 -2.60368295e-05 -8.101465068e-05 +0.03775188272 -0.00021393686 -0.0001981791695 0.009084562768 -3.380766381e-06 2.293889869e-05 +-0.01664844278 6.740228047e-05 5.336888089e-05 0.002979081488 4.19774684e-06 3.988665989e-06 +-0.0002427435725 -2.300092959e-05 -2.345146034e-05 0.002358070982 1.103711352e-06 4.900512745e-06 +-0.002544733737 8.065918755e-06 4.181128704e-06 0.001777027705 -4.965345929e-06 -1.990902391e-06 +-0.001469433044 1.672697089e-06 -1.079324306e-06 0.001622187814 -5.354871652e-05 -4.950721417e-05 +0.006265936436 0.0001878711387 -0.07279397039 4.050165853e-05 0.0002428253994 -0.1120280137 +0.000502761814 -0.1386125632 0.0002165560355 0.0005613194577 -0.07143474777 0.0003740454976 +-0.04613282948 6.898938167e-05 0.0001175412363 0.04187434179 -7.324989634e-05 0.04309014456 +-8.764935224e-05 -0.0002240312684 0.01912224449 -0.0001414745535 0.01569334723 -3.967057707e-05 +-8.401440298e-05 -0.007059799633 -9.451880504e-06 -0.009289171871 3.329888389e-05 8.254473342e-05 +-0.00631954143 4.568735449e-05 -0.003541301937 3.898310549e-06 7.571306855e-06 0.002962955446 +-1.220493651e-06 0.001558317044 -4.015522029e-06 -1.106581586e-05 0.0005771430782 -8.999904968e-06 +0.001475323043 -3.967134975e-06 -8.181738214e-06 -0.0001871299866 -2.549012562e-07 -0.001136252142 +2.507008871e-06 5.608079671e-06 -0.0006325399754 1.53525933e-06 0.0003053454646 2.039670443e-06 +4.922268445e-06 0.0007440955534 2.378083599e-06 -9.064605974e-05 -2.17878386e-06 -5.380038297e-06 +-0.0005362756327 -2.923460742e-06 0.0002119067997 +iw : 16 +9.780012713e-06 0.0002390390974 0.0001895115632 -0.0001519519197 -0.0001494963074 7.278932968e-05 +5.200504382e-05 -2.607546698e-05 -9.002607006e-06 3.849273402e-06 4.229858502e-06 -1.486006657e-06 +-3.670595327e-06 5.160266346e-05 -4.48766823e-05 -0.0425699174 0.0003048721796 5.85936641e-05 +-0.09714130468 0.0003523674649 0.0003041319528 0.0004537635897 -8.101465068e-05 -1.58509841e-06 +0.03248222549 -0.0001981791695 -0.000154122694 0.007816479472 2.293889869e-05 -1.030415342e-05 +-0.01432454314 5.336888089e-05 5.129455782e-05 0.00256324161 3.988665989e-06 2.993893125e-06 +-0.0002088598208 -2.345146034e-05 -1.59228419e-05 0.002028915854 4.900512745e-06 -3.753547041e-07 +-0.002189522988 4.181128704e-06 6.803976207e-06 0.001528978437 -1.990902391e-06 -4.364454492e-06 +-0.001264319871 -1.079324306e-06 1.998457275e-06 0.001395752121 0.0001814338902 -8.224107888e-05 +-0.07279397039 3.029508325e-05 0.02823651304 0.0004680653278 0.00013343994 -0.1386125632 +0.0001824649551 -0.07019215944 0.0003305131346 0.0004578417385 -0.04613282948 0.0002385882638 +-0.05751100025 -7.531286656e-05 0.0001246013768 0.04309014456 1.472787056e-05 0.02886893328 +-0.0001244637137 -0.0001842124604 0.01569334723 -9.340812578e-05 0.01438569988 -5.10141941e-06 +-7.734603427e-05 -0.009289171871 -2.489397076e-05 -0.004256154481 3.971932116e-05 6.90938492e-05 +-0.003541301937 3.291960127e-05 -0.005250710522 -1.516132936e-06 7.363126806e-06 0.001558317044 +1.761735049e-06 0.002492626327 -8.066074227e-06 -8.717674664e-06 0.001475323043 -5.081438978e-06 +0.0001318630947 1.378024426e-07 -7.65848799e-06 -0.001136252142 -2.269594321e-06 0.0001558120814 +1.202783783e-06 4.991555023e-06 0.0003053454646 1.871911633e-06 -0.000724698926 2.038321824e-06 +4.185808417e-06 -9.064605974e-05 1.882535817e-06 0.0007714542232 -2.537018951e-06 -4.513636696e-06 +0.0002119067997 -2.132968662e-06 -0.0006002330533 +iw : 17 +-0.001715341062 -0.08789691939 0.02983973011 0.03545257426 -0.007746011695 -0.0133157081 +0.004408590189 0.00102053006 0.0007316492806 -0.002016612194 0.001617864312 -0.001149300747 +0.001014422242 -0.04947612132 -0.0425699174 -0.0002678287177 -0.1129007353 -0.09714130468 +-0.0006111661377 0.0005273785758 0.0004537635897 2.852167005e-06 0.03775188272 0.03248222549 +0.0002043624224 0.009084562768 0.007816479472 4.917895001e-05 -0.01664844278 -0.01432454314 +-9.012301524e-05 0.002979081488 0.00256324161 1.61261333e-05 -0.0002427435725 -0.0002088598208 +-1.314050301e-06 0.002358070982 0.002028915854 1.276513696e-05 -0.002544733737 -0.002189522988 +-1.377541869e-05 0.001777027705 0.001528978437 9.619499069e-06 -0.001469433044 -0.001264319871 +-7.95442073e-06 0.001622187814 0.001395752121 8.781369332e-06 -0.08322852676 -0.07279397039 +-0.0004579833563 -0.1221854604 -0.0003940550134 -0.08691377071 -0.1386125632 -0.0008720836879 +-0.1087032125 -0.0007503524847 -0.009210146619 -0.04613282948 -0.0002902492567 -0.002028694377 +-0.0002497343477 0.02294923259 0.04309014456 0.0002711011695 0.02674382834 0.000233259077 +0.006122744664 0.01569334723 9.873664663e-05 0.005868360237 8.495433311e-05 -0.006083095095 +-0.009289171871 -5.844227327e-05 -0.007732584619 -5.028451462e-05 -0.0002243442884 -0.003541301937 +-2.228085978e-05 0.0006802552024 -1.917075016e-05 -6.414806083e-06 0.001558317044 9.804114109e-06 +-0.0004814398895 8.435591083e-06 0.00128026849 0.001475323043 9.282135272e-06 0.001772210088 +7.986473501e-06 -0.001134618876 -0.001136252142 -7.148685477e-06 -0.001622275473 -6.150824725e-06 +0.0006991371898 0.0003053454646 1.921036363e-06 0.001118782184 1.652885414e-06 -0.0005287385336 +-9.064605974e-05 -5.703587802e-07 -0.0008884433343 -4.907443332e-07 0.0005413700565 0.0002119067997 +1.333284787e-06 0.0008737230231 1.147176087e-06 ad : 4 0 iw : 18 0 0 0 0 0 0 @@ -2222,7 +2222,7 @@ iw : 0 -0.01111878086 0.01506366553 -0.000387438508 0.0002423227069 -5.391063751e-05 -0.0008182337337 7.271232546e-05 0.001246291259 0.00206308977 0.002798677246 0.0009056574821 -0.003774734267 0.002118133589 0.00116079864 0.002590285103 0.002963723785 -0.003493664 -0.000436118665 -3.081828249e-06 -0.0003097540202 -0.0007572513815 0.0004177827637 0.0004965450071 -4.235723098e-05 +3.081828248e-06 -0.0003097540202 -0.0007572513815 0.0004177827637 0.0004965450071 -4.235723098e-05 0.0003167935555 0.0008857661205 -0.0004272773831 iw : 1 -0.06032434936 0.1609744788 0.2111164793 0.009116522927 0.0178236151 0.04015907749 @@ -2317,7 +2317,7 @@ iw : 5 0.02884730271 -0.006408671838 -0.02176580683 -0.02966522146 0.01241663084 -0.02154892074 -0.03713374115 0.01238283794 -0.006207792902 -0.01434162986 0.001273296487 0.005369319938 0.007445259354 -0.003894374538 0.007318606977 0.01247807972 -0.003505524569 0.002095057462 -0.004561389536 -1.500740285e-05 -0.0007321045814 -0.001080781368 -0.01107015305 0.02148843313 +0.004561389536 -1.500740284e-05 -0.0007321045814 -0.001080781368 -0.01107015305 0.02148843313 -0.1003048162 0.01507688041 -0.00660571998 0.02458403436 -0.03625356322 0.01749046311 -0.02273765095 0.003927260491 0.08428557326 -0.08150387288 -0.1168334428 -0.03786126829 -0.0266223453 0.1072421293 -0.04724800312 -0.07695092998 0.004724095183 -0.08676137158 @@ -2402,7 +2402,7 @@ iw : 9 -0.007762805193 0.002411875618 -0.004102163872 -0.008628042742 0.002285977746 -0.002511835411 -0.003639830349 0.0005802832799 -0.000135189482 0.0007327290293 -0.0007670109422 0.001320016223 0.002794841701 -0.0008330251433 0.0009949454792 0.001588899315 0.0003943591279 0.08141171604 -0.03521096063 0.0004852825531 -0.02485441625 0.005512536273 0.1200325039 0.01891318742 +0.03521096063 0.000485282553 -0.02485441625 0.005512536273 0.1200325039 0.01891318742 0.006783506093 -0.01086298358 0.01858670848 0.05107285946 -0.04543453805 0.0228720571 0.03101729378 0.03337557113 -0.01060872005 -0.06557144911 0.04107063595 0.03277636486 0.04059094301 -0.02613214055 -0.03820036314 0.04994958228 0.001666056659 0.0299341461 @@ -2425,7 +2425,7 @@ iw : 10 0.004310148426 -0.0004497526702 0.001588899315 0.003160666571 -0.02506117037 0.03521096063 0.2424947339 0.01311349545 0.01776168335 -0.05001157051 0.01891318742 0.3519168561 -0.04770287303 0.07712789361 -0.03109266076 -0.04543453805 0.1406388278 -0.1304119248 -0.101031031 0.01259434599 -0.06557144911 -0.04197449892 -0.1299324181 0.04955401883 +0.101031031 0.01259434599 -0.06557144911 -0.04197449893 -0.1299324181 0.04955401883 0.04790743699 -0.03820036314 -0.08241410981 -0.06540779657 -0.02797064122 0.04793219747 0.00410135548 -0.02086994034 0.008106114199 -0.06689977851 0.02151331998 0.01568731287 0.01662930692 0.02613204516 -0.04219321601 0.001604144495 0.008095111874 0.01596222106 @@ -2437,13 +2437,13 @@ iw : 10 iw : 11 0.02411809172 0.1560684035 0.1614663954 0.01749962088 -0.08025546646 -0.07360836389 -0.01345942661 0.01731372185 0.01228492298 0.002203434481 -0.002671553082 -0.003435104919 --0.0009377685532 0.01069380878 0.0009390741272 0.04911543294 0.04984801539 0.01516580412 +-0.0009377685532 0.01069380878 0.0009390741271 0.04911543294 0.04984801539 0.01516580412 -0.1087229374 0.05833452939 0.05292645263 -0.3231454239 0.01764090354 0.083729731 -0.251123234 -0.02408421702 0.08570891945 -0.07235167316 -0.03438961624 0.0520936292 0.06097701853 -0.01529363794 0.008721876877 0.05850531313 0.001314836915 -0.008915724021 0.01531441767 0.004641320274 -0.007658141914 -0.008718695617 0.002702200014 -0.002703788148 -0.007054571357 6.645866735e-05 0.0009764532031 -0.003883330755 -0.001495066101 0.002486576892 -0.003473892595 -0.001082860546 0.001248765424 0.002018957752 0.08540693549 0.0004852825531 +0.003473892595 -0.001082860546 0.001248765424 0.002018957752 0.08540693549 0.000485282553 0.01311349545 0.2287205068 0.019585228 0.09705722792 0.006783506093 -0.04770287303 0.2794688598 0.08845533447 -0.008017675891 0.0228720571 -0.1304119248 0.007947344132 0.1260648625 -0.07194173445 0.04107063595 -0.1299324181 -0.1877181091 0.08359473665 @@ -2454,7 +2454,7 @@ iw : 11 0.003575103993 -0.001573929678 -0.002756694533 -0.003619786652 0.0001875929419 0.005876175369 -0.002977435494 -0.0007714440262 -0.003734944164 -0.005776873774 0.003717142275 -0.0004330324816 0.0009416557187 -0.0002546659073 -0.002105437106 -0.0006999939428 0.0002252719945 0.0007953352 -0.0008449722251 -0.0005992856899 -0.001561136514 +0.0008449722251 -0.0005992856898 -0.001561136514 iw : 12 -0.01240800002 -0.05625449663 0.02406482802 0.1544964258 0.1749846262 0.09219762548 -0.009956925664 -0.03701720997 -0.01804053262 -0.0004954641689 0.005469208718 0.005322111146 @@ -2654,7 +2654,7 @@ iw : 21 0.02471225303 -0.0007559660553 0.07696876827 0.04709274991 0.0005337549714 -0.04396427027 -0.01484919695 0.0001223360736 -0.01624326556 -0.01433525291 -0.000126047822 0.0130600418 0.008253561108 -3.287896556e-05 0.002454065121 0.0004642479638 3.999934727e-05 -0.002501326839 -0.0002935711428 9.233328323e-06 -0.002350070951 -0.003074678404 -2.211270396e-05 0.003409393337 +0.0002935711427 9.233328323e-06 -0.002350070951 -0.003074678404 -2.211270396e-05 0.003409393337 0.003430277574 -4.917819636e-06 -0.0006039470696 -0.001651886997 0.05196380122 6.491012365e-06 0.0008292945752 0.02255701435 -0.03892119249 -0.008096541686 -0.002404397153 -5.749559861e-05 0.1159815045 -0.02371968949 -0.1173023012 -0.003312473625 -0.001773629188 0.1130475058 @@ -2665,7 +2665,7 @@ iw : 21 -0.005508068245 -0.005767749429 0.003727516259 0.0001067144339 5.631713625e-05 -0.00366460995 -0.006328207238 -0.001842531471 -6.799498917e-05 -2.738286224e-05 0.002569446035 0.003135897311 -0.0009314710967 -1.415851055e-05 -1.444641844e-05 0.0002938302888 0.0007895577313 0.001698862653 -4.343438222e-05 2.58224649e-05 -0.001411546929 -0.001741413616 -0.00117584639 -2.943846572e-05 +4.343438221e-05 2.58224649e-05 -0.001411546929 -0.001741413616 -0.00117584639 -2.943846572e-05 -1.789131422e-05 0.0009459547205 0.001041172279 iw : 22 0.001953754983 -0.003714420828 0.07015184219 -0.03525470667 -0.03097896576 0.02158353764 @@ -2674,7 +2674,7 @@ iw : 22 0.1287076941 0.001095677973 -0.1071503599 -0.09430802001 -0.0002526979033 0.02471225303 -0.02372917285 -0.0004815521738 0.04709274991 0.03264541913 0.0001518421218 -0.01484919695 0.008090692418 0.0001465867297 -0.01433525291 -0.01664573496 -8.439771091e-05 0.008253561108 -0.006122588017 -4.747219404e-06 0.0004642479638 -0.001260693394 -3.001944508e-06 0.0002935711428 +0.006122588017 -4.747219404e-06 0.0004642479638 -0.001260693394 -3.001944508e-06 0.0002935711427 0.002986321571 3.144046741e-05 -0.003074678404 -0.004628659699 -3.507668645e-05 0.003430277574 0.004428853175 1.689155499e-05 -0.001651886997 -0.00310159499 0.02826222088 0.0008292945752 0.001834058246 -0.0321396698 -0.1793592699 0.04902925918 -5.749559861e-05 0.002116869375 @@ -2901,113 +2901,7 @@ iw : 27 -0.002631940021 -1.998982196e-07 -3.308460562e-05 -0.004558323728 7.022305613e-05 0.0001835041751 6.636562143e-08 8.535632262e-06 0.0003177289589 -1.811713249e-05 0.0008717596537 5.798665993e-08 6.426169391e-06 0.001509836253 -1.363973502e-05 -ad : 1 2.994710688 -iw : 13 --0.07386961156 -0.1063175088 0.01660166953 0.03432788706 -0.0001975559817 -0.01574494481 -0.002430843013 0.00442777535 0.001332102688 -0.004254918015 0.001285317373 0.0002139041152 -0.0009727596046 -0.08548654953 0.03089748408 0.1263990641 -0.1301029851 0.0470232444 --0.05479103815 -0.01814408574 0.006557833991 -0.02954178758 0.03560632715 -0.01286922835 -0.01025379715 0.01294081312 -0.004677210271 0.01813478054 -0.01463623217 0.005289987172 --0.01129217665 -0.004457204244 0.001610971526 -0.001218779399 0.004886145627 -0.001766004214 --0.0004446599884 0.003529391174 -0.001275631175 0.005508131903 -0.003303239434 0.001193892939 --0.004216852338 -0.0007228070599 0.0002612448362 0.001402389506 0.0004999184503 -0.0001806859962 --0.001702134696 0.001206392491 -0.0004360275737 0.002646951824 -0.1222177333 0.03952233277 -0.125290365 -0.1166223069 -0.04528381459 -0.1038010272 0.06623386362 -0.0492492838 --0.02047307324 0.01780021501 -0.02467062017 0.02437226945 -0.05282903188 0.01589305452 -0.01909404673 0.02286274908 -0.0128416932 0.00252441792 0.008710684806 -0.0009124027454 -0.01053615154 -0.01138612964 0.02721917582 -0.009138469549 -0.009837852343 -0.005121035232 -0.004078211852 -0.006292056808 0.0009396309543 0.002274144016 -0.006335374733 0.004720308803 --0.006235628751 0.000380800715 0.00225374917 0.002757750527 -0.0009128240547 -0.002726861044 -0.002580903295 0.0009855719544 0.002154743834 -0.002801933545 0.007822167655 -0.003007503189 --0.00282717342 -0.0002293639842 0.0007485868366 -0.002978490431 0.001403342775 0.001076518601 --0.001829121778 0.0009257743946 0.0002822507273 -0.0009413210299 -0.0001020141461 0.0008094949354 -1.316295104e-05 -0.002139920919 0.001433747852 0.0007734336326 1.057931127e-06 -0.000600481686 -0.002858606225 -0.001442535833 -0.001033188739 -iw : 14 -0.05268376025 -0.02995988653 0.01140484502 0.07765296602 -0.008645232953 -0.03239199295 --0.0007405074738 0.0156262183 -0.002462618844 -0.003771819108 -0.001617858597 0.003876197451 --0.001139353017 0.01791151026 -0.006473774018 -0.06953994841 -0.1014800817 0.03667804147 --0.009272011418 -0.03619567413 0.01308223658 -0.08238836586 0.0859658731 -0.03107072645 -0.05387879706 0.02699120265 -0.009755455786 0.01828914474 -0.03265791194 0.01180357986 --0.005598556161 -0.01299402263 0.004696441832 -0.02132955359 0.01208227078 -0.004366906503 -0.01429367195 0.005774533111 -0.002087094939 -0.002009653843 -0.00530231592 0.001916421035 -0.003321483124 -0.002532969567 0.0009154935752 -0.007744742657 0.002254089283 -0.0008146976118 -0.006430758662 0.0006484816149 -0.0002343813206 -0.004157120059 -0.0143770702 0.008622105998 --0.004192522119 -0.004162639131 0.001515307217 -0.1347850011 0.07907235213 -0.03091901829 --0.04325784046 0.01117508989 -0.03915009719 0.04814583475 -0.1289561254 0.04799759412 -0.04660873382 0.04730735203 -0.03164567282 0.02940028045 0.005819839236 -0.01062617104 -0.03247930415 -0.02755627067 0.04796351421 -0.01002665232 -0.0173354981 -0.01699455457 -0.008540625573 0.002912313309 -0.008892243938 -0.001052600141 -0.01045575422 0.01182147827 --0.0294999337 0.01032488736 0.01066218881 0.002633942384 -0.003105407915 0.008038591877 --0.002907468827 -0.00290539583 0.006999280942 -0.004490448592 0.00343672306 0.001322012678 --0.001242138051 -0.00303652262 0.0006134255884 0.004868848752 -0.003783908626 -0.001759752588 --0.0008369226074 0.002264019555 -0.008640570548 0.003996165451 0.003122969548 -0.001089602134 --0.0002559212229 0.004015441615 -0.002502826199 -0.001451304843 0.002433280624 -0.0009136242787 --0.001890444187 0.00201698012 0.0006832650224 -iw : 15 -0.004508396993 0.1127352099 0.1099311429 -0.05135058281 -0.08817410694 0.01922569624 -0.03047090427 -0.004699941694 -0.00698704478 -0.0009052301176 0.003571823742 -0.0006084866698 --0.001632539915 -0.01150450898 -0.008542457234 -0.03610609914 0.06096310368 -0.05305108317 --0.02806388075 0.1866765987 -0.07142875844 0.1171724382 0.02156591613 0.001989793053 -0.0363900791 -0.09061057386 0.03720405108 -0.05122105196 -0.02388102215 0.004551941463 --0.02522239527 0.02799424651 -0.009988793304 0.01918417191 0.009656533383 -0.003685145955 -0.006082986478 -0.009619121241 0.00432124275 -0.004608173429 -0.001119344255 -0.0002558508428 --0.002229232065 0.001723109234 -0.0002174592927 0.00206755887 0.0005042659676 -0.000548514419 --0.0004769122598 0.0002929890087 0.0003079662366 0.001121277202 -0.01958324182 0.008298930214 --0.008419698395 0.05427028614 0.02319216167 0.02681582629 -0.04251664246 -0.04588868807 -0.08576487544 0.007805458021 0.112858412 -0.1085477743 0.1043221484 -0.0007448202408 --0.05654272022 0.05241084888 -0.04174334093 0.1127948824 -0.04487429088 -0.03726320162 --0.03755515311 0.03626292529 -0.03868703788 -0.0004824609664 0.01863490918 -0.02831839069 -0.02441268579 -0.0478633461 0.01469851789 0.01777420409 0.01195491351 -0.01138623311 -0.01155208372 -0.0006549559034 -0.006131887051 0.004874770411 -0.004192097716 0.01011398364 --0.002583384023 -0.003072821343 0.0004830986207 -0.0002146974722 0.0012443437 -0.001287490016 --0.0005594379561 -0.003903896993 0.003376575774 -0.005899114815 0.001969248455 0.002436209065 -0.001295616075 -0.001136876847 0.001224582205 -0.0005699632161 -0.0007878653072 0.001192755739 --0.001095770741 0.002521305143 -0.0002722057005 -0.0006629180164 -0.0007121294795 0.0006814984418 --0.001577195079 2.24037851e-05 0.0003611674051 -iw : 16 --0.00162947417 -0.04074599305 -0.03973251647 0.01855968949 0.03186885049 -0.006948761495 --0.01101312762 0.001698704351 0.002525334173 0.0003271781737 -0.001290967618 0.00021992591 -0.0005900504383 -0.008542457234 -0.0320521028 0.0130498614 -0.05305108317 -0.06664328389 -0.01014315484 -0.07142875844 0.01486548211 -0.04234974465 0.001989793053 0.02635206353 --0.01315250055 0.03720405108 -0.001121834361 0.01851287303 0.004551941463 -0.01293201278 -0.009116154068 -0.009988793304 0.003967709188 -0.006933753314 -0.003685145955 0.0007924700123 --0.00219857953 0.00432124275 0.0007749771323 0.001665536461 -0.0002558508428 -0.00173475491 -0.0008057134442 -0.0002174592927 0.001200043669 -0.0007472797489 -0.000548514419 -0.000815102825 -0.0001723708471 0.0003079662366 0.001033755391 -0.0004052642748 -0.0306987822 -0.05546119183 -0.02319216167 0.002195468716 0.04736555225 -0.08808637199 -0.09350161812 0.007805458021 -0.01426289206 -0.02711383482 -0.07671042766 -0.01065049333 -0.05654272022 0.02100756822 --0.031682846 0.0005719317813 0.04218815292 -0.03726320162 0.0049520624 0.0231638652 -0.02612016557 0.004317245154 0.01863490918 -0.007069389952 0.006136428518 0.007452104384 --0.01268838614 0.01777420409 -0.003705711293 -0.00511017612 -0.007657613842 -0.0005184884287 --0.006131887051 0.002163188024 -0.003197246715 -0.001239613698 0.002240458087 -0.003072821343 -0.000632176905 0.002722774871 0.0007156221365 0.001313885112 -0.0005594379561 -4.86351812e-05 --0.0001013000155 0.001073709385 -0.001688789202 0.002436209065 -0.0005170187513 -3.918096325e-05 --0.0004242852166 0.0004719933852 -0.0007878653072 0.0001806044026 -0.000670509087 -0.0005958718391 -0.0001672203798 -0.0006629180164 0.0001935153039 0.0009267557331 0.0004696657925 4.848501498e-05 -0.0003611674051 -0.0001306574311 -0.0007084613014 -iw : 17 -0.0009095749599 -0.02214885327 0.09489255132 0.006469906953 -0.05994114843 -0.002830466404 -0.02241864646 -0.001352151326 -0.003457417191 -0.002672467591 0.003764371859 -0.001497163187 -7.577835056e-05 -0.03610609914 0.0130498614 -0.0946504407 -0.02806388075 0.01014315484 --0.190577975 0.1171724382 -0.04234974465 0.05718795625 0.0363900791 -0.01315250055 -0.07870532039 -0.05122105196 0.01851287303 -0.009924004417 -0.02522239527 0.009116154068 --0.03959842292 0.01918417191 -0.006933753314 0.01366405531 0.006082986478 -0.00219857953 -0.003027046053 -0.004608173429 0.001665536461 0.00156311776 -0.002229232065 0.0008057134442 --0.00515916015 0.00206755887 -0.0007472797489 0.003638482712 -0.0004769122598 0.0001723708471 --0.002348616461 0.001121277202 -0.0004052642748 0.003046977371 -0.0348573255 0.02319216167 --0.1640017641 -0.00458940814 0.05927531201 0.05401337092 0.007805458021 -0.265031369 -0.112328756 0.09579053722 0.1162979772 -0.05654272022 -0.009160852851 0.06542901089 -0.003311015671 0.02433032703 -0.03726320162 0.1319367347 -0.04748965463 -0.04768601823 --0.03628381616 0.01863490918 0.005282167086 -0.01802194667 -0.001909138623 -0.01909621303 -0.01777420409 -0.04208542193 0.009677558782 0.01521097367 0.01212657039 -0.006131887051 -0.0007914233781 0.006254505596 -0.0002860448967 0.002213821373 -0.003072821343 0.007407226132 --0.003556757675 -0.002677200715 0.0002527501718 -0.0005594379561 0.003888865144 -0.0009078675761 --0.001405556191 -0.003026674028 0.002436209065 -0.005627286112 0.000617580658 0.002033875318 -0.001413771084 -0.0007878653072 0.001611919817 0.0005536320554 -0.0005825976972 0.0004543827901 --0.0006629180164 0.0007116317807 -0.000807535331 -0.0002572057445 -0.0002062946413 0.0003611674051 -3.67744478e-06 0.0005114209773 -1.329142329e-06 -ad : 2 1.950638213 +ad : 1 1.950638213 iw : 0 -0.09320332151 -0.2300487538 -0.1229389552 -0.01746787188 0.00123466909 -0.01784869558 -0.008122751426 0.005013160642 0.0121595491 0.003250270876 -0.0002748492381 -0.002918302775 @@ -3027,7 +2921,7 @@ iw : 0 0.01138069487 0.0166481206 0.001677458646 0.0008785372655 -0.002031657772 0.002390774435 0.002712118349 -0.0005858976907 -0.001668044079 0.001975811849 -3.76225057e-05 -0.002637568023 -0.002159758918 -0.001334345044 0.002804827794 -0.002959119381 -0.003744245233 0.0002265703615 --0.0001764299121 8.76858592e-08 0.0004957884457 -1.170543735e-07 -0.000525711459 8.136735868e-06 +-0.0001764299121 8.768585841e-08 0.0004957884457 -1.170543725e-07 -0.000525711459 8.136735868e-06 0.0003730302415 -0.0009153256611 -0.0004979687903 iw : 1 0.05921809781 -0.161191324 -0.2208293992 -0.01664820325 -0.01646141537 -0.04195908084 @@ -3069,7 +2963,7 @@ iw : 2 0.004509961607 0.01329322862 0.008026946939 0.004960445526 -0.005098249037 0.008273841973 0.01444764034 0.001255001752 0.004207834554 -0.009608696317 0.004529870294 0.005499276509 -0.002348409085 0.0004517629707 0.0004982574264 -0.0006263027899 -0.002430244522 -0.002362444503 --0.001174501039 6.690039577e-05 -0.002165982776 -0.00398267258 -0.0006354527575 -0.001133026538 +-0.001174501039 6.690039578e-05 -0.002165982776 -0.00398267258 -0.0006354527574 -0.001133026538 0.003602543329 -0.001353052825 -0.001842694378 iw : 3 -0.01016952295 -0.08240690338 -0.1503796339 -0.1264407774 -0.04712708969 0.01877922836 @@ -3185,7 +3079,7 @@ iw : 8 0.04807088188 0.004285211133 -0.02299758449 0.04161862828 -0.007116332661 -0.003677314062 0.01081919239 -0.005550782273 0.003635777068 -0.006007345677 -0.001944691378 0.003524008172 -0.005546729645 0.0004900983386 0.001191268662 -0.003288294449 0.001662353951 -0.0009880310705 -0.002014770882 0.0008996381651 -0.001277439277 0.001666568318 -0.1298117075 -0.0003480679542 +0.002014770882 0.0008996381651 -0.001277439277 0.001666568318 -0.1298117075 -0.0003480679544 -0.02477581377 -0.08534326259 -0.03189466042 -0.1808047855 -0.004902334408 -0.05071205356 -0.1037492558 0.01783940335 -0.05191115411 -0.01683624001 -0.03484876185 -0.003241714219 0.1192838429 0.05925583834 -0.03101589265 0.006423072786 0.06647850991 0.1424908788 @@ -3206,8 +3100,8 @@ iw : 9 0.06409905033 0.01719757561 -0.0171139577 0.0214490167 0.004394347733 -0.001409295962 -0.004508060928 -0.001691603552 0.003534677309 -0.008349365826 -0.002363747127 0.002841565488 -0.004597257546 -0.001040925457 0.0007653596477 -0.0003865501306 0.0004272527654 -0.0009867399876 -0.002425561622 0.0008158096562 -0.001063178035 0.001864582017 -0.0003480679542 -0.08071336983 -0.03553040851 -0.0004316091284 -0.0254564741 -0.004902334408 -0.1233645166 0.02333122278 +0.002425561622 0.0008158096562 -0.001063178035 0.001864582017 -0.0003480679544 -0.08071336983 +0.03553040851 -0.0004316091286 -0.0254564741 -0.004902334408 -0.1233645166 0.02333122278 -0.006078963264 -0.01428237842 -0.01683624001 -0.05848591547 -0.03935898054 -0.02087717336 0.02793099872 -0.03101589265 0.005314471968 -0.06422985961 -0.03846014145 0.0346480586 -0.03920699734 0.02589834968 -0.04256619635 -0.04861722603 0.007531928828 -0.03078778294 @@ -3237,7 +3131,7 @@ iw : 10 0.01442550042 0.01327098416 -0.003278776495 0.001301957073 -0.004102193919 0.002224463449 -0.003121496062 -0.004177365792 -0.001715875656 0.0009647155675 -0.002767995115 -0.006993295408 -0.002218399122 -0.00270641585 0.005097571799 -0.004091947732 -0.005190380359 0.0002806292555 --0.0007891306519 0.001584081129 -0.001318263721 -0.000339592357 0.001110912047 0.0002899512012 +-0.0007891306519 0.001584081129 -0.001318263721 -0.0003395923569 0.001110912047 0.0002899512012 0.0002507303979 0.0005159629946 0.00173109501 iw : 11 -0.02360798018 -0.1561487219 -0.1712757596 -0.03313304003 0.07214970207 0.07770359365 @@ -3248,7 +3142,7 @@ iw : 11 0.04571037825 0.01813556656 -0.01423473164 0.05952020672 0.0009547507576 0.006333284389 0.02138032609 -0.004082166978 0.007628392212 -0.005513759996 -0.003100127438 0.003602677541 -0.006914028773 -0.0007618789604 -4.84544724e-05 -0.005469042292 0.001147714508 -0.002242888955 -0.002068730692 0.001172327003 -0.001520813546 0.001794262084 -0.08534326259 -0.0004316091284 +0.002068730692 0.001172327003 -0.001520813546 0.001794262084 -0.08534326259 -0.0004316091286 0.01444373699 -0.2279870456 0.0182282827 -0.1037492558 -0.006078963264 -0.04151440445 -0.2953847996 0.08420405563 -0.003241714219 -0.02087717336 -0.1248522779 -0.03772953277 0.1246590242 0.06647850991 -0.03846014145 -0.1330116428 0.1690399148 0.09034351746 @@ -3279,8 +3173,114 @@ iw : 12 -0.01320647177 -0.02406675673 -0.002825585315 0.0006980609793 -0.003121496062 0.001188875684 -0.002273543226 0.002699022451 0.003263805374 -0.006993295408 0.005356380386 0.005061563437 0.004486528263 0.003097035462 -0.005190380359 0.004581928156 0.008138226809 0.001509180628 -0.0004162823074 -0.000339592357 0.0006721752946 0.00178302285 -0.0004538035163 -0.0007351615624 +0.0004162823074 -0.0003395923569 0.0006721752946 0.00178302285 -0.0004538035163 -0.0007351615624 0.00173109501 -0.001282974011 -0.0007633884817 +ad : 2 2.994710688 +iw : 13 +-0.07386961156 -0.1063175088 0.01660166953 0.03432788706 -0.0001975559817 -0.01574494481 +0.002430843013 0.00442777535 0.001332102688 -0.004254918015 0.001285317373 0.0002139041152 +0.0009727596046 -0.08548654953 0.03089748408 0.1263990641 -0.1301029851 0.0470232444 +-0.05479103815 -0.01814408574 0.006557833991 -0.02954178758 0.03560632715 -0.01286922835 +0.01025379715 0.01294081312 -0.004677210271 0.01813478054 -0.01463623217 0.005289987172 +-0.01129217665 -0.004457204244 0.001610971526 -0.001218779399 0.004886145627 -0.001766004214 +-0.0004446599884 0.003529391174 -0.001275631175 0.005508131903 -0.003303239434 0.001193892939 +-0.004216852338 -0.0007228070599 0.0002612448362 0.001402389506 0.0004999184503 -0.0001806859962 +-0.001702134696 0.001206392491 -0.0004360275737 0.002646951824 -0.1222177333 0.03952233277 +0.125290365 -0.1166223069 -0.04528381459 -0.1038010272 0.06623386362 -0.0492492838 +-0.02047307324 0.01780021501 -0.02467062017 0.02437226945 -0.05282903188 0.01589305452 +0.01909404673 0.02286274908 -0.0128416932 0.00252441792 0.008710684806 -0.0009124027454 +0.01053615154 -0.01138612964 0.02721917582 -0.009138469549 -0.009837852343 -0.005121035232 +0.004078211852 -0.006292056808 0.0009396309543 0.002274144016 -0.006335374733 0.004720308803 +-0.006235628751 0.000380800715 0.00225374917 0.002757750527 -0.0009128240547 -0.002726861044 +0.002580903295 0.0009855719544 0.002154743834 -0.002801933545 0.007822167655 -0.003007503189 +-0.00282717342 -0.0002293639842 0.0007485868366 -0.002978490431 0.001403342775 0.001076518601 +-0.001829121778 0.0009257743946 0.0002822507273 -0.0009413210299 -0.0001020141461 0.0008094949354 +1.316295104e-05 -0.002139920919 0.001433747852 0.0007734336326 1.057931127e-06 -0.000600481686 +0.002858606225 -0.001442535833 -0.001033188739 +iw : 14 +0.05268376025 -0.02995988653 0.01140484502 0.07765296602 -0.008645232953 -0.03239199295 +-0.0007405074738 0.0156262183 -0.002462618844 -0.003771819108 -0.001617858597 0.003876197451 +-0.001139353017 0.01791151026 -0.006473774018 -0.06953994841 -0.1014800817 0.03667804147 +-0.009272011418 -0.03619567413 0.01308223658 -0.08238836586 0.0859658731 -0.03107072645 +0.05387879706 0.02699120265 -0.009755455786 0.01828914474 -0.03265791194 0.01180357986 +-0.005598556161 -0.01299402263 0.004696441832 -0.02132955359 0.01208227078 -0.004366906503 +0.01429367195 0.005774533111 -0.002087094939 -0.002009653843 -0.00530231592 0.001916421035 +0.003321483124 -0.002532969567 0.0009154935752 -0.007744742657 0.002254089283 -0.0008146976118 +0.006430758662 0.0006484816149 -0.0002343813206 -0.004157120059 -0.0143770702 0.008622105998 +-0.004192522119 -0.004162639131 0.001515307217 -0.1347850011 0.07907235213 -0.03091901829 +-0.04325784046 0.01117508989 -0.03915009719 0.04814583475 -0.1289561254 0.04799759412 +0.04660873382 0.04730735203 -0.03164567282 0.02940028045 0.005819839236 -0.01062617104 +0.03247930415 -0.02755627067 0.04796351421 -0.01002665232 -0.0173354981 -0.01699455457 +0.008540625573 0.002912313309 -0.008892243938 -0.001052600141 -0.01045575422 0.01182147827 +-0.0294999337 0.01032488736 0.01066218881 0.002633942384 -0.003105407915 0.008038591877 +-0.002907468827 -0.00290539583 0.006999280942 -0.004490448592 0.00343672306 0.001322012678 +-0.001242138051 -0.00303652262 0.0006134255884 0.004868848752 -0.003783908626 -0.001759752588 +-0.0008369226074 0.002264019555 -0.008640570548 0.003996165451 0.003122969548 -0.001089602134 +-0.0002559212229 0.004015441615 -0.002502826199 -0.001451304843 0.002433280624 -0.0009136242787 +-0.001890444187 0.00201698012 0.0006832650224 +iw : 15 +0.004508396993 0.1127352099 0.1099311429 -0.05135058281 -0.08817410694 0.01922569624 +0.03047090427 -0.004699941694 -0.00698704478 -0.0009052301176 0.003571823742 -0.0006084866698 +-0.001632539915 -0.01150450898 -0.008542457234 -0.03610609914 0.06096310368 -0.05305108317 +-0.02806388075 0.1866765987 -0.07142875844 0.1171724382 0.02156591613 0.001989793053 +0.0363900791 -0.09061057386 0.03720405108 -0.05122105196 -0.02388102215 0.004551941463 +-0.02522239527 0.02799424651 -0.009988793304 0.01918417191 0.009656533383 -0.003685145955 +0.006082986478 -0.009619121241 0.00432124275 -0.004608173429 -0.001119344255 -0.0002558508428 +-0.002229232065 0.001723109234 -0.0002174592927 0.00206755887 0.0005042659676 -0.000548514419 +-0.0004769122598 0.0002929890087 0.0003079662366 0.001121277202 -0.01958324182 0.008298930214 +-0.008419698395 0.05427028614 0.02319216167 0.02681582629 -0.04251664246 -0.04588868807 +0.08576487544 0.007805458021 0.112858412 -0.1085477743 0.1043221484 -0.0007448202408 +-0.05654272022 0.05241084888 -0.04174334093 0.1127948824 -0.04487429088 -0.03726320162 +-0.03755515311 0.03626292529 -0.03868703788 -0.0004824609664 0.01863490918 -0.02831839069 +0.02441268579 -0.0478633461 0.01469851789 0.01777420409 0.01195491351 -0.01138623311 +0.01155208372 -0.0006549559034 -0.006131887051 0.004874770411 -0.004192097716 0.01011398364 +-0.002583384023 -0.003072821343 0.0004830986207 -0.0002146974722 0.0012443437 -0.001287490016 +-0.0005594379561 -0.003903896993 0.003376575774 -0.005899114815 0.001969248455 0.002436209065 +0.001295616075 -0.001136876847 0.001224582205 -0.0005699632161 -0.0007878653072 0.001192755739 +-0.001095770741 0.002521305143 -0.0002722057005 -0.0006629180164 -0.0007121294795 0.0006814984418 +-0.001577195079 2.24037851e-05 0.0003611674051 +iw : 16 +-0.00162947417 -0.04074599305 -0.03973251647 0.01855968949 0.03186885049 -0.006948761495 +-0.01101312762 0.001698704351 0.002525334173 0.0003271781737 -0.001290967618 0.00021992591 +0.0005900504383 -0.008542457234 -0.0320521028 0.0130498614 -0.05305108317 -0.06664328389 +0.01014315484 -0.07142875844 0.01486548211 -0.04234974465 0.001989793053 0.02635206353 +-0.01315250055 0.03720405108 -0.001121834361 0.01851287303 0.004551941463 -0.01293201278 +0.009116154068 -0.009988793304 0.003967709188 -0.006933753314 -0.003685145955 0.0007924700123 +-0.00219857953 0.00432124275 0.0007749771323 0.001665536461 -0.0002558508428 -0.00173475491 +0.0008057134442 -0.0002174592927 0.001200043669 -0.0007472797489 -0.000548514419 -0.000815102825 +0.0001723708471 0.0003079662366 0.001033755391 -0.0004052642748 -0.0306987822 -0.05546119183 +0.02319216167 0.002195468716 0.04736555225 -0.08808637199 -0.09350161812 0.007805458021 +0.01426289206 -0.02711383482 -0.07671042766 -0.01065049333 -0.05654272022 0.02100756822 +-0.031682846 0.0005719317813 0.04218815292 -0.03726320162 0.0049520624 0.0231638652 +0.02612016557 0.004317245154 0.01863490918 -0.007069389952 0.006136428518 0.007452104384 +-0.01268838614 0.01777420409 -0.003705711293 -0.00511017612 -0.007657613842 -0.0005184884287 +-0.006131887051 0.002163188024 -0.003197246715 -0.001239613698 0.002240458087 -0.003072821343 +0.000632176905 0.002722774871 0.0007156221365 0.001313885112 -0.0005594379561 -4.86351812e-05 +-0.0001013000155 0.001073709385 -0.001688789202 0.002436209065 -0.0005170187513 -3.918096325e-05 +-0.0004242852166 0.0004719933852 -0.0007878653072 0.0001806044026 -0.000670509087 -0.0005958718391 +0.0001672203798 -0.0006629180164 0.0001935153039 0.0009267557331 0.0004696657925 4.848501498e-05 +0.0003611674051 -0.0001306574311 -0.0007084613014 +iw : 17 +0.0009095749599 -0.02214885327 0.09489255132 0.006469906953 -0.05994114843 -0.002830466404 +0.02241864646 -0.001352151326 -0.003457417191 -0.002672467591 0.003764371859 -0.001497163187 +7.577835056e-05 -0.03610609914 0.0130498614 -0.0946504407 -0.02806388075 0.01014315484 +-0.190577975 0.1171724382 -0.04234974465 0.05718795625 0.0363900791 -0.01315250055 +0.07870532039 -0.05122105196 0.01851287303 -0.009924004417 -0.02522239527 0.009116154068 +-0.03959842292 0.01918417191 -0.006933753314 0.01366405531 0.006082986478 -0.00219857953 +0.003027046053 -0.004608173429 0.001665536461 0.00156311776 -0.002229232065 0.0008057134442 +-0.00515916015 0.00206755887 -0.0007472797489 0.003638482712 -0.0004769122598 0.0001723708471 +-0.002348616461 0.001121277202 -0.0004052642748 0.003046977371 -0.0348573255 0.02319216167 +-0.1640017641 -0.00458940814 0.05927531201 0.05401337092 0.007805458021 -0.265031369 +0.112328756 0.09579053722 0.1162979772 -0.05654272022 -0.009160852851 0.06542901089 +0.003311015671 0.02433032703 -0.03726320162 0.1319367347 -0.04748965463 -0.04768601823 +-0.03628381616 0.01863490918 0.005282167086 -0.01802194667 -0.001909138623 -0.01909621303 +0.01777420409 -0.04208542193 0.009677558782 0.01521097367 0.01212657039 -0.006131887051 +0.0007914233781 0.006254505596 -0.0002860448967 0.002213821373 -0.003072821343 0.007407226132 +-0.003556757675 -0.002677200715 0.0002527501718 -0.0005594379561 0.003888865144 -0.0009078675761 +-0.001405556191 -0.003026674028 0.002436209065 -0.005627286112 0.000617580658 0.002033875318 +0.001413771084 -0.0007878653072 0.001611919817 0.0005536320554 -0.0005825976972 0.0004543827901 +-0.0006629180164 0.0007116317807 -0.000807535331 -0.0002572057445 -0.0002062946413 0.0003611674051 +3.67744478e-06 0.0005114209773 -1.329142329e-06 ad : 3 3.303653192 iw : 18 -0.0688242045 -0.07652372953 0.03656774503 0.01874623809 -0.01171739714 -0.007948282014 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_z_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_z_ref.dat similarity index 98% rename from tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_z_ref.dat rename to tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_z_ref.dat index 6de7ef0836..2370472e37 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/dpsialpha_z_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/dphialpha_z_ref.dat @@ -189,7 +189,7 @@ iw : 31 0.004011165512 0.0001243269251 5.603220334e-05 -0.001259193327 6.078875578e-05 0.001220248746 -0.000337211558 0.001054385237 -0.0004580480862 -0.0005022563765 0.0001965031528 -0.0007360580132 -0.0008642304646 0.0008348324929 -0.0009365152679 -0.001231808625 -2.04578299e-05 0.0003564194307 -0.0002573549703 -5.632339667e-06 -0.0002461934035 +0.0002573549703 -5.632339669e-06 -0.0002461934035 iw : 32 -0.002119141796 -0.04826310346 -0.1240621836 -0.1345048958 -0.05248222434 0.01909236456 0.032020423 0.0127727798 -0.0002186105622 -0.004908532878 -0.001561164871 -0.0006963996211 @@ -210,7 +210,7 @@ iw : 32 -0.007702479238 -0.0002228165061 -0.001259193327 0.001610132712 -0.001287125382 -0.001459850795 0.0006043445626 -0.0004580480862 0.001619709678 -0.0001611008308 0.0003027208732 0.001319150093 0.0008348324929 -0.001894583448 0.001378232303 0.002392863223 3.666415925e-05 0.0002573549703 -3.879108753e-05 0.000259088181 0.0002875688389 +3.879108752e-05 0.000259088181 0.0002875688389 ad : 2 1.709269535 iw : 13 0.09584203824 0.2567491495 0.215604529 0.09825443202 -0.001019438902 -0.03209292172 @@ -230,7 +230,7 @@ iw : 13 -4.306344039e-06 -1.942649675e-06 -5.720820337e-07 -0.0168771704 -0.000719743959 -0.0001037739644 -8.309952483e-06 -2.447159968e-06 -0.02283858646 -0.0007576323643 -0.0001092367821 -7.099701352e-06 -2.090758638e-06 -0.008261927034 -0.0002747710316 -3.961697614e-05 -2.581660622e-06 -7.602614501e-07 --0.0005072750992 3.870970601e-05 5.581234275e-06 9.065133421e-07 2.669549755e-07 0.006362438376 +-0.0005072750992 3.870970601e-05 5.581234276e-06 9.065133421e-07 2.669549755e-07 0.006362438376 0.000204845751 2.953502479e-05 1.858713561e-06 5.473640707e-07 0.0024920709 0.0001031204671 1.486809239e-05 1.166558875e-06 3.435345972e-07 iw : 14 @@ -255,7 +255,7 @@ iw : 14 0.0002686714038 3.873752095e-05 3.322501439e-06 9.784282803e-07 0.009461845388 0.0002646116564 3.815217936e-05 1.997255177e-06 5.881625588e-07 iw : 15 -0.0008504229959 0.07307417389 -0.2009392053 -0.4219886628 -0.3610713293 -0.112932302 +0.000850422996 0.07307417389 -0.2009392053 -0.4219886628 -0.3610713293 -0.112932302 0.03478623427 0.06616736343 0.02971394349 0.007237854258 -0.007988884466 -0.004490008231 -0.005513774245 0.1414735132 0.0007311771603 0.0001054224237 0.473232955 0.00108920162 0.0001570430272 0.3687876196 -0.003757878341 -0.0005418175843 -0.06155287612 -0.009507485722 @@ -314,7 +314,7 @@ iw : 17 0.0007699046157 1.527754312e-05 -0.0001068434256 -6.069442832e-05 -2.057818949e-06 -0.01347183359 4.116720224e-05 -0.000285609652 6.697663533e-05 2.27109058e-06 -0.008176043268 2.563519463e-05 -0.0001776056601 6.199796871e-05 2.102200938e-06 -0.002941928074 5.703340028e-06 -3.940323614e-05 -3.578495311e-05 1.213362312e-06 0.0009287369808 -1.54078002e-06 1.07683348e-05 6.006710299e-06 +3.578495311e-05 1.213362312e-06 0.0009287369807 -1.54078002e-06 1.07683348e-05 6.006710299e-06 2.036520799e-07 0.001064933747 -4.84135562e-06 3.358568103e-05 -1.554793137e-05 -5.271974033e-07 0.001427836858 -2.540783558e-06 1.758211978e-05 ad : 3 2.100474535 @@ -923,7 +923,7 @@ iw : 0 -7.048027849e-06 -0.00179394424 -1.549896245e-05 -2.234667978e-06 0.2169143596 0.00278456045 0.0004014828793 -1.709623625e-05 -5.034592563e-06 0.1012579388 -0.0004131874059 -5.957409522e-05 -4.080596181e-05 -1.20167614e-05 -0.00753955032 -0.001713121351 -0.000247000884 -3.037778317e-05 --8.94581468e-06 -0.003168466628 -5.962085525e-05 -8.596240972e-06 -1.133316629e-07 -3.3374524e-08 +-8.94581468e-06 -0.003168466628 -5.962085525e-05 -8.596240972e-06 -1.133316629e-07 -3.337452399e-08 0.04904839424 0.001748743333 0.0002521369247 1.757832097e-05 5.176559489e-06 0.04254897845 0.001346447834 0.0001941332439 1.198058935e-05 3.528109063e-06 0.009178836971 5.920339629e-05 8.536050997e-06 -1.846832131e-06 -5.438651629e-07 -0.02332177267 -0.0008908338432 -0.0001284420083 @@ -950,8 +950,8 @@ iw : 1 -1.826621753e-05 -3.537158443e-06 -1.041641641e-06 -0.02277864341 -0.001094907901 -0.0001578657689 -1.35820039e-05 -3.999702321e-06 -0.02844057899 -0.0008540308294 -0.0001231356843 -7.127353452e-06 -2.098901779e-06 0.001055048225 -6.005325986e-05 -8.658585838e-06 -1.493412308e-06 -4.397881726e-07 --0.005002010426 -6.367407729e-05 -9.180641737e-06 4.045348552e-07 1.191296227e-07 0.005562642849 -9.919137692e-05 1.430158918e-05 9.395029172e-08 2.766699249e-08 -0.00549099775 -0.0001020407036 +-0.005002010426 -6.367407729e-05 -9.180641736e-06 4.045348552e-07 1.191296227e-07 0.005562642849 +9.919137692e-05 1.430158918e-05 9.395029171e-08 2.766699249e-08 -0.00549099775 -0.0001020407036 -1.471241017e-05 -1.71819029e-07 -5.059820143e-08 iw : 2 0.09269339957 0.08191543633 -0.1779207873 -0.2996526727 -0.2393478181 -0.08098295041 @@ -1013,7 +1013,7 @@ iw : 4 -0.002756612281 1.721016237e-05 -0.000120399471 -9.014447331e-05 -3.056296495e-06 -0.01748028783 6.470958519e-05 -0.0004489295493 0.0001318919555 4.472289409e-06 -0.02013159668 5.168585938e-05 -0.0003580971701 0.0001710845695 5.801063722e-06 -0.004364776775 1.588056753e-05 -0.0001097192946 -9.731784016e-05 3.299760189e-06 -0.0008043896121 -4.488312252e-06 3.135203565e-05 1.271507644e-05 +9.731784016e-05 3.299760189e-06 -0.000804389612 -4.488312252e-06 3.135203565e-05 1.271507644e-05 4.310907305e-07 0.005262643689 -1.084241374e-05 7.521477352e-05 -2.74281932e-05 -9.300331042e-07 0.0002274791678 -4.811458747e-06 3.329983295e-05 iw : 5 @@ -1022,7 +1022,7 @@ iw : 5 -0.009149195525 0.2623539645 0.001393071632 0.0002008555461 -0.02618274131 -1.063038289e-05 -1.532707516e-06 -0.2464160525 0.002267516719 0.0003269345944 0.0677148634 0.008449894 0.001218320749 0.388594283 0.01102321819 0.001589347209 0.3970818735 0.007609338083 -0.001097127901 0.168728083 0.00207796043 0.0002996040313 -0.0249325658 -0.001520036791 +0.001097127901 0.168728083 0.002077960429 0.0002996040313 -0.0249325658 -0.001520036791 -0.0002191616086 -0.1123597588 -0.002514924138 -0.0003626062361 -0.08754851437 -0.001628975088 -0.0002348685261 -0.02691235617 -0.0002776908513 -4.003796093e-05 0.01825983514 0.0004581044046 6.6050308e-05 0.01877004255 0.0004044815403 5.831886804e-05 0.05240566204 -0.002443390632 @@ -1035,7 +1035,7 @@ iw : 5 -1.711981819e-05 -5.0415371e-06 0.0182204668 0.001469794799 0.0002119176288 2.504974076e-05 7.376783794e-06 0.06898103077 0.003021209219 0.0004356033198 3.268961074e-05 9.626614227e-06 0.06864894516 0.00202183475 0.000291511731 1.820450254e-05 5.360960842e-06 0.01169490095 -0.0004114093635 5.931773391e-05 2.01342206e-06 5.929234703e-07 -0.0006920050108 -0.0003133640049 +0.0004114093635 5.931773391e-05 2.01342206e-06 5.929234702e-07 -0.0006920050109 -0.0003133640049 -4.518137968e-05 -3.967516977e-06 -1.168375961e-06 iw : 6 0.0006879443148 0.001283712866 -0.003570949568 -0.008094339405 -0.006981956784 -0.002008361358 @@ -1043,7 +1043,7 @@ iw : 6 -0.0002070738773 0.001393071632 0.0955801685 -1.348505957e-06 -1.063038289e-05 -0.01281510353 6.780850121e-07 0.002267516719 -0.1810203207 1.640361612e-05 0.008449894 -0.1817687601 3.389831961e-05 0.01102321819 -0.08705319376 3.59295355e-05 0.007609338083 0.004299846343 -2.124418624e-05 0.00207796043 0.03130905463 4.136272884e-06 -0.001520036791 0.02632474407 +2.124418624e-05 0.002077960429 0.03130905463 4.136272884e-06 -0.001520036791 0.02632474407 -5.745757693e-06 -0.002514924138 0.008014112661 -7.542655311e-06 -0.001628975088 -0.002191477562 -4.477640627e-06 -0.0002776908513 -0.006365272361 -4.322317153e-07 0.0004581044046 -0.002562866128 1.434877945e-06 0.0004044815403 -0.0009395847453 1.19380205e-06 -0.0003628711315 0.1077881455 @@ -1056,8 +1056,8 @@ iw : 6 -0.0007384804579 -0.0001065049766 0.001508848674 -0.02170376526 7.376783794e-06 -0.0005715177735 -8.231262896e-05 0.001969092303 -0.01735674279 9.626614227e-06 -0.0001943555081 -2.79208578e-05 0.001096586225 0.007848555934 5.360960842e-06 6.141095282e-05 8.906173297e-06 0.0001212934989 --0.0003766433103 5.929234703e-07 0.0001006712594 1.451804694e-05 -0.0002389842658 0.007395728781 --1.168375961e-06 5.024274475e-05 7.230997739e-06 +-0.0003766433102 5.929234702e-07 0.0001006712594 1.451804694e-05 -0.0002389842658 0.007395728781 +-1.168375961e-06 5.024274475e-05 7.23099774e-06 iw : 7 9.918903512e-05 0.0001850880046 -0.0005148658613 -0.001167056255 -0.00100667095 -0.0002895691134 0.0002518779393 0.0003653083062 0.0002230375274 2.623509448e-05 -8.573613139e-05 -8.238098795e-05 @@ -1077,7 +1077,7 @@ iw : 7 0.0001064187324 -0.0007382922004 0.000217548486 7.376783794e-06 -0.02175386474 8.257477317e-05 -0.0005720899925 0.0002839072312 9.626614227e-06 -0.01742212201 2.821757148e-05 -0.0001950031867 0.0001581077527 5.360960842e-06 0.007812146929 -8.75489699e-06 6.108074076e-05 1.748831245e-05 -5.929234703e-07 -0.0003806701544 -1.450904126e-05 0.0001006516014 -3.445717659e-05 -1.168375961e-06 +5.929234702e-07 -0.0003806701544 -1.450904126e-05 0.0001006516014 -3.445717659e-05 -1.168375961e-06 0.007403663815 -7.269203113e-06 5.032614099e-05 iw : 8 0.02887078444 0.1847857327 0.1663156254 -0.06584002642 -0.248207051 -0.2662804472 @@ -1089,13 +1089,13 @@ iw : 8 0.0001872094345 0.01523943622 -0.0001845918068 -2.661477508e-05 -0.01378225506 -0.0005348386908 -7.711399389e-05 -0.02294201484 -0.0004583472078 -6.60853158e-05 -0.01364641902 -0.0001993940616 -2.874899051e-05 -0.0023125791 5.219364229e-05 7.525372195e-06 -0.2975461503 0.0002034525376 -2.93341488e-05 -8.299742221e-07 -2.444153195e-07 -0.37723326 0.004207928772 0.000606706656 +2.93341488e-05 -8.299742227e-07 -2.444153197e-07 -0.37723326 0.004207928772 0.000606706656 -1.236010033e-05 -3.639869518e-06 -0.01671549897 0.008288408992 0.001195037553 -4.566639288e-05 --1.344808755e-05 0.2741220123 0.007182225167 0.001035546001 -9.348780718e-05 -2.753079753e-05 +-1.344808756e-05 0.2741220123 0.007182225167 0.001035546001 -9.348780718e-05 -2.753079753e-05 0.3075449291 0.001822161089 0.0002627224274 -0.0001372120297 -4.04069442e-05 0.1134434848 -0.004060382121 -0.0005854331175 -0.00013505503 -3.977173922e-05 -0.04494990194 -0.005233740723 -0.0007546100481 -8.386618757e-05 -2.46973707e-05 -0.07429762895 -0.003175401363 -0.0004578350174 --3.306798575e-05 -9.738040156e-06 -0.04329990797 -0.001213518664 -0.0001749672797 -6.893047274e-06 +-3.306798575e-05 -9.738040156e-06 -0.04329990797 -0.001213518664 -0.0001749672797 -6.893047273e-06 -2.029902022e-06 -0.01503490236 -3.239424355e-05 -4.670659663e-06 4.65778339e-06 1.371649366e-06 0.0106624875 0.0006335638069 9.134835675e-05 8.655943965e-06 2.54904942e-06 0.01720841242 0.0006900048326 9.948612424e-05 7.030819081e-06 2.070473813e-06 0.009282976628 0.0002257342335 @@ -1116,7 +1116,7 @@ iw : 9 0.001822161089 0.1531808667 -7.756449654e-06 0.005897954704 0.0008498855836 -0.004060382121 0.1641758293 -3.125073872e-05 0.004033534499 0.0005809992569 -0.005233740723 0.08276956727 -2.996577925e-05 0.001548303214 0.0002228523863 -0.003175401363 0.01627340861 -1.601564535e-05 -0.0001730766486 2.478881736e-05 -0.001213518664 -0.004490525507 -5.426002767e-06 -0.0001796873307 +0.0001730766486 2.478881736e-05 -0.001213518664 -0.004490525507 -5.426002766e-06 -0.0001796873307 -2.594912671e-05 -3.239424355e-05 -0.01035198476 4.58759818e-07 -0.0002184372301 -3.147731556e-05 0.0006335638069 -0.006003248072 3.428059029e-06 -0.0001168422698 -1.680570189e-05 0.0006900048326 -0.002640687141 3.452295281e-06 -2.7746198e-05 -3.965112576e-06 0.0002257342335 0.001966963306 @@ -1130,14 +1130,14 @@ iw : 10 -0.108273544 0.001053485699 2.2315032e-05 -0.02423916361 0.0004009709207 6.347600655e-06 0.0118775355 2.058226283e-05 -9.025622565e-07 0.009549240923 -0.0001048624728 -2.614776852e-06 0.006638663277 -0.0001108317757 -2.240776566e-06 -0.0002355623532 -6.211747078e-05 -9.747745747e-07 --0.0008140783968 3.669328644e-06 2.551829139e-07 -0.002652387345 2.93341488e-05 4.949839844e-06 +-0.0008140783968 3.669328645e-06 2.551829139e-07 -0.002652387345 2.93341488e-05 4.949839844e-06 -0.2796761729 0.0002020888021 -0.001401530353 0.000606706656 2.301227956e-05 -0.4866025784 0.0001248969796 -0.0008660064151 0.001195037553 3.348370848e-05 -0.3036206997 -0.0003591117795 0.002490384874 0.001035546001 2.044227811e-05 -0.02622929437 -0.0007491696363 0.005194276834 0.0002627224274 -7.756449654e-06 0.1532335447 -0.0008513215569 0.005901089204 -0.0005854331175 -3.125073872e-05 0.164388069 -0.0005826421692 0.004037120715 -0.0007546100481 -2.996577925e-05 0.08297308008 -0.0002239752229 0.001550754188 -0.0004578350174 -1.601564535e-05 0.01638217898 --2.527236611e-05 0.0001741321584 -0.0001749672797 -5.426002767e-06 -0.004453674769 2.582804314e-05 +-2.527236611e-05 0.0001741321584 -0.0001749672797 -5.426002766e-06 -0.004453674769 2.582804314e-05 -0.0001794230245 -4.670659663e-06 4.58759818e-07 -0.01035510043 3.152796059e-05 -0.0002185477801 9.134835675e-05 3.428059029e-06 -0.00602652976 1.692484958e-05 -0.0001171023502 9.948612424e-05 3.452295281e-06 -0.00266413343 4.068381057e-06 -2.797161663e-05 3.254676336e-05 9.932974672e-07 @@ -1151,16 +1151,16 @@ iw : 11 0.0003103313577 7.577635218e-05 -0.0002988993304 4.353976808e-05 2.155488832e-05 0.0002662126599 -3.827573727e-05 -3.064879109e-06 0.0002311877928 -3.336287491e-05 -8.879138132e-06 9.94449842e-05 -1.439365753e-05 -7.609125284e-06 1.252051261e-05 -1.848861049e-06 -3.310094355e-06 -4.276059468e-05 -6.148926092e-06 8.665383205e-07 -3.246532119e-05 4.687555662e-06 -8.299742221e-07 -0.001401443313 -0.0002020888021 -0.1040221166 -7.941698897e-11 -1.236010033e-05 -0.0008657857717 0.0001248969796 +6.148926092e-06 8.665383205e-07 -3.246532119e-05 4.687555662e-06 -8.299742227e-07 -0.001401443313 +0.0002020888021 -0.1040221166 -7.941698901e-11 -1.236010033e-05 -0.0008657857717 0.0001248969796 -0.2211104783 -1.182689725e-09 -4.566639288e-05 0.002490106741 -0.0003591117795 -0.2152985501 -4.369638848e-09 -9.348780718e-05 0.005192686947 -0.0007491696363 -0.1456503295 -8.945483486e-09 -0.0001372120297 0.005897954704 -0.0008513215569 -0.0739888028 -1.312928398e-08 -0.00013505503 0.004033534499 -0.0005826421692 -0.02085140631 -1.29228892e-08 -8.386618757e-05 0.001548303214 -0.0002239752229 0.001900509721 -8.024828217e-09 -3.306798575e-05 0.0001730766486 -2.527236611e-05 -0.003744648701 -3.164146008e-09 -6.893047274e-06 -0.0001796873307 2.582804314e-05 0.002352278877 +0.003744648701 -3.164146008e-09 -6.893047273e-06 -0.0001796873307 2.582804314e-05 0.002352278877 -6.595679057e-10 4.65778339e-06 -0.0002184372301 3.152796059e-05 0.0004010399093 4.456861566e-10 -8.655943965e-06 -0.0001168422698 1.692484958e-05 -2.404601158e-05 8.282545387e-10 7.030819081e-06 +8.655943965e-06 -0.0001168422698 1.692484958e-05 -2.40460116e-05 8.282545387e-10 7.030819081e-06 -2.7746198e-05 4.068381057e-06 -0.0006178070479 6.727522742e-10 1.293226698e-06 3.910414174e-05 -5.623329227e-06 -1.681796735e-05 1.237437948e-10 iw : 12 @@ -1172,16 +1172,16 @@ iw : 12 -0.00214933003 2.2315032e-05 -4.28644472e-05 -0.0003003734481 6.347600655e-06 3.843893117e-05 0.0002658564337 -9.025622565e-07 3.331753059e-05 0.0002312867722 -2.614776852e-06 1.430922502e-05 9.96292869e-05 -2.240776566e-06 1.782487868e-06 1.266539468e-05 -9.747745747e-07 -6.173832452e-06 --4.270622807e-05 2.551829139e-07 -4.677442681e-06 -3.248739621e-05 -2.444153195e-07 -0.0002020489274 --0.001401530353 -7.941698897e-11 -0.1040221163 -3.639869518e-06 -0.0001247958987 -0.0008660064151 --1.182689725e-09 -0.2211104746 -1.344808755e-05 0.0003589843616 0.002490384874 -4.369638848e-09 +-4.270622807e-05 2.551829139e-07 -4.677442681e-06 -3.248739621e-05 -2.444153197e-07 -0.0002020489274 +-0.001401530353 -7.941698901e-11 -0.1040221163 -3.639869518e-06 -0.0001247958987 -0.0008660064151 +-1.182689725e-09 -0.2211104746 -1.344808756e-05 0.0003589843616 0.002490384874 -4.369638848e-09 -0.2152985365 -2.753079753e-05 0.0007484412795 0.005194276834 -8.945483486e-09 -0.1456503017 -4.04069442e-05 0.0008498855836 0.005901089204 -1.312928398e-08 -0.07398876208 -3.977173922e-05 0.0005809992569 0.004037120715 -1.29228892e-08 -0.02085136623 -2.46973707e-05 0.0002228523863 0.001550754188 -8.024828217e-09 0.001900534608 -9.738040156e-06 2.478881736e-05 0.0001741321584 -3.164146008e-09 0.003744658514 -2.029902022e-06 -2.594912671e-05 -0.0001794230245 -6.595679057e-10 0.002352280922 1.371649366e-06 -3.147731556e-05 -0.0002185477801 4.456861566e-10 0.0004010385271 -2.54904942e-06 -1.680570189e-05 -0.0001171023502 8.282545387e-10 -2.404858022e-05 2.070473813e-06 +2.54904942e-06 -1.680570189e-05 -0.0001171023502 8.282545387e-10 -2.404858024e-05 2.070473813e-06 -3.965112576e-06 -2.797161663e-05 6.727522742e-10 -0.0006178091343 3.808364261e-07 5.645806146e-06 3.905507821e-05 1.237437948e-10 -1.681835111e-05 ad : 3 3.113220902 @@ -1480,7 +1480,7 @@ iw : 26 -8.447351869e-05 -0.0001565515074 7.742866825e-05 0.0004431404825 -0.0003129015902 -6.073647624e-05 -0.0001067144339 -6.127732861e-05 0.000613877069 0.0008871127626 3.048158687e-05 6.799498917e-05 -4.747280058e-07 -8.746957191e-06 -0.0005227550984 1.480071545e-05 1.415851055e-05 2.743971367e-05 --0.0006538972093 0.0001073150972 -2.75247605e-05 -4.343438222e-05 -1.805035928e-05 0.0005822944775 +-0.0006538972093 0.0001073150972 -2.75247605e-05 -4.343438221e-05 -1.805035928e-05 0.0005822944775 -0.0001042602574 1.903212344e-05 2.943846572e-05 iw : 27 5.158557198e-05 0.0011729881 0.0005130671441 -0.001012621961 -0.0002673329889 0.0004981481838 @@ -1515,7 +1515,7 @@ iw : 28 1.592914066e-05 -0.002175190689 3.17592886e-05 -1.75914133e-05 0.001961592603 -6.470918642e-06 3.584230293e-06 -0.001946369979 -1.827123955e-07 1.012040699e-07 0.002102686285 -0.2099517603 0.1162919055 -0.0005554570192 0.0008876748049 0.001108854348 -0.04224377827 0.02339875343 --0.0007417984509 0.001185466692 -7.690029919e-05 0.02009767036 -0.01113206376 -6.1098499e-05 +-0.0007417984509 0.001185466692 -7.69002992e-05 0.02009767036 -0.01113206376 -6.1098499e-05 9.764139494e-05 -0.0003321396057 0.01407637703 -0.007796880128 0.0002128660256 -0.0003401807903 6.335068127e-05 -0.01251871268 0.006934092619 2.386372917e-05 -3.813658016e-05 7.892398472e-05 0.00332010089 -0.00183899796 -9.427333548e-05 0.000150658038 -7.708535971e-07 -0.001469375728 @@ -1609,113 +1609,7 @@ iw : 32 1.280410426e-06 0.0004861888658 0.0006642602157 2.339633462e-07 9.850325338e-06 -6.309362448e-06 -4.456727681e-05 -0.0008217286845 5.668119263e-06 -9.993472536e-06 2.794930249e-06 6.585995654e-05 0.0007331969595 -2.37706701e-06 5.182977145e-06 -ad : 2 3.113220902 -iw : 13 -0.1059316872 0.1391533552 -0.03806237633 -0.04294214469 0.008708936395 0.0199607046 --0.008674032598 -0.00448050307 0.0008642533838 0.005167791715 -0.003545070696 0.000309337633 --0.0005982850352 -0.0555524376 0.1037468694 0.000217574225 0.1472188575 0.1450719079 -0.0003042396182 0.02362714429 0.004581978204 9.609160858e-06 -0.03912999932 -0.04266894875 --8.948379366e-05 -0.01740361108 -0.006167285671 -1.293381099e-05 0.02456691708 0.01870167653 -3.922048733e-05 -0.00156333134 1.581516665e-05 3.316700202e-08 -0.004546352129 -0.006702221881 --1.405566009e-05 -0.004724236322 -0.001194119985 -2.504265736e-06 0.007699191329 0.004620916448 -9.690820751e-06 -0.003082756043 -0.001021780666 -2.142841878e-06 0.001118843254 -0.0007422846317 --1.556692789e-06 -0.002736734311 -0.0007055852463 -1.47972815e-06 -0.1613262292 -0.03071597402 --6.441644245e-05 0.05619941792 0.0002357198563 0.01873103761 0.152234251 0.000319260228 -0.08683300274 0.000364207739 0.03651166032 0.06322966645 0.0001326029957 0.02262138656 -9.488194343e-05 -0.0003614125704 -0.03402925217 -7.136493091e-05 -0.02120003753 -8.892031246e-05 --0.02031585382 -0.03245359407 -6.80605171e-05 -0.01087347646 -4.560713269e-05 0.0085043757 -0.02010683908 4.216734398e-05 0.008646997013 3.626850543e-05 0.001990946348 0.007701069294 -1.615040717e-05 0.003904389539 1.63763643e-05 0.001474375163 -0.003958326799 -8.301261431e-06 --0.00317557855 -1.331947816e-05 -0.006047580554 -0.008399476141 -1.761508104e-05 -0.002444779217 --1.025425222e-05 0.004272689556 0.006609980458 1.386221467e-05 0.002151549062 9.024343216e-06 --0.001543196022 -0.0002462912567 -5.165132173e-07 0.0005674319174 2.380006324e-06 0.001776663199 -0.0003847617744 8.069086358e-07 -0.0005897216179 -2.473497061e-06 -0.002598571824 -0.002691884095 --5.645323074e-06 -0.0004744800721 -1.990134037e-06 -iw : 14 --0.07532819039 0.03758675605 -0.03431276421 -0.0993964209 0.03358545827 0.03881669069 --0.01057304717 -0.01897597905 0.009596507846 0.003462001658 -0.001090684391 -0.004139315553 -0.002852193005 0.05479991386 -0.02165089638 -4.540548574e-05 0.08051267305 0.1124456044 -0.000235816901 0.07797285526 0.01528578629 3.205680446e-05 -0.123607747 -0.103029964 --0.0002160707566 -0.01243706784 -0.009260993902 -1.942182528e-05 0.03602477333 0.04239623901 -8.891187656e-05 0.01668728144 0.002935732289 6.156712787e-06 -0.02619542808 -0.01621232806 --3.399991472e-05 0.004863335686 -0.0006437155806 -1.349977299e-06 0.002060757969 0.007240679203 -1.518489353e-05 0.006175002135 1.740988408e-05 3.651138639e-08 -0.009201180761 -0.003476611334 --7.291024983e-06 0.00555987283 0.0008279596045 1.736367279e-06 0.0009841601873 0.02032991667 -4.263517433e-05 0.01230594933 5.161542086e-05 -0.009811959825 0.1574364583 0.0003301701112 -0.1034556734 0.0004339289868 0.1009721329 0.1473647458 0.0003090480757 0.04529278353 -0.0001899736478 -0.0277109573 -0.1042216209 -0.0002185698568 -0.05248089872 -0.0002201230968 --0.02756654509 -0.06087332245 -0.0001276613553 -0.02532729527 -0.0001062314633 0.0001253107663 -0.03002487001 6.296708383e-05 0.01879590615 7.883655137e-05 0.02184844918 0.03324662962 -6.972364289e-05 0.01065434063 4.468800097e-05 -0.01189760452 -0.02180940957 -4.573791394e-05 --0.008128386837 -3.409327442e-05 0.001043285945 -0.005007877053 -1.05023407e-05 -0.003632942728 --1.52378222e-05 -0.003130305896 0.00301158034 6.315778608e-06 0.003355900668 1.407581169e-05 -0.006967221487 0.007482309819 1.569163262e-05 0.001438512249 6.033619445e-06 -0.005422841328 --0.005974907294 -1.253036194e-05 -0.001214565596 -5.094309485e-06 0.003222751685 0.001297486581 -2.721042465e-06 -0.000693218498 -2.907598883e-06 -iw : 15 --0.004583943641 -0.0660676381 -0.1519037116 0.0624193234 0.1040362548 -0.03356773924 --0.03790492466 0.01577462093 0.005066910114 -0.0004626963479 -0.004342306881 0.00210643437 -0.001349800144 0.1151914188 0.01397221794 2.930203588e-05 0.1423359933 -0.07181592318 --0.0001506097863 -0.2285397587 -0.1957324214 -0.0004104830357 -0.06107469793 0.01241531423 -2.603695309e-05 0.1003921781 0.102012509 0.0002139369863 0.03517057607 0.00161202625 -3.380683813e-06 -0.04331175591 -0.03213976177 -6.740235922e-05 -0.001840854599 -0.002001620483 --4.197726909e-06 0.008030694996 0.01096765777 2.300097972e-05 0.004477819827 -0.0005262940127 --1.103724986e-06 -0.008024106976 -0.003846119725 -8.065944768e-06 0.005690613624 0.002367658815 -4.965369411e-06 -0.004171375802 -0.000797600978 -1.672700252e-06 0.1020520871 0.1730247471 -0.000362861313 0.0118033186 4.95072132e-05 0.2585081436 0.1426549679 0.0002991708979 --0.05789349873 -0.000242825419 0.01292782977 -0.2188108691 -0.0004588823309 -0.1338276211 --0.0005613194723 -0.1337108269 -0.1513205795 -0.0003173441089 -0.02802369909 -0.0001175411164 -0.009330067168 0.09276877196 0.0001945513516 0.05341270206 0.0002240314032 0.04029583448 -0.06513822621 0.000136605559 0.02003038442 8.401438153e-05 -0.007283486807 -0.03866272096 --8.1082076e-05 -0.01968001942 -8.254482916e-05 -0.007285963467 -0.007312575967 -1.533567285e-05 --0.00180511974 -7.571298449e-06 -5.459582716e-05 0.003181892988 6.672952205e-06 0.002638278761 -1.106585644e-05 0.003657263272 0.006806737498 1.42748465e-05 0.001950656424 8.181729795e-06 --0.0009928876337 -0.003718626579 -7.798570701e-06 -0.001337057548 -5.608083229e-06 -0.001890420026 --0.002546572208 -5.340580181e-06 -0.001173552597 -4.922286739e-06 0.001594926701 0.002557740759 -5.364002467e-06 0.001282694332 5.380065043e-06 -iw : 16 --0.00542000657 -0.1324735986 -0.1050258264 0.0842105657 0.08284968454 -0.04033927733 --0.02882078863 0.0144508199 0.004989174406 -0.00213323722 -0.002344154506 0.0008235332692 -0.002034215228 0.01397221794 0.02487030641 -5.160266346e-05 -0.07181592318 -0.03247215047 --0.0003048721796 -0.1957324214 -0.1685475501 -0.0003523674649 0.01241531423 0.0008784491439 -8.101465068e-05 0.102012509 0.08541359186 0.0001981791695 0.00161202625 0.005710481249 --2.293889869e-05 -0.03213976177 -0.02842704284 -5.336888089e-05 -0.002001620483 -0.001659192159 --3.988665989e-06 0.01096765777 0.008824314472 2.345146034e-05 -0.0005262940127 0.0002080186419 --4.900512745e-06 -0.003846119725 -0.00377071041 -4.181128704e-06 0.002367658815 0.002418746551 -1.990902391e-06 -0.000797600978 -0.001107529395 1.079324306e-06 0.02553386781 0.01734070138 -4.95072132e-05 0.05600481983 8.224107888e-05 -0.01931260186 -0.003758971079 -0.000242825419 -0.0374928014 -0.00013343994 -0.1032613757 -0.1962204849 -0.0005613194723 -0.08608975756 --0.0004578417385 -0.0328963936 -0.09792181716 -0.0001175411164 -0.05125214346 -0.0001246013768 -0.04179435342 0.0877030728 0.0002240314032 0.03607225031 0.0001842124604 0.0189162742 -0.0471205823 8.401438153e-05 0.02308509445 7.734603427e-05 -0.01587814437 -0.03304043574 --8.254482916e-05 -0.01470232319 -6.90938492e-05 -0.001858840402 -0.006573200339 -7.571298449e-06 --0.002534648244 -7.363126806e-06 0.00191477789 0.004699388305 1.106585644e-05 0.001340745933 -8.717674664e-06 0.001891658242 0.004088448257 8.181729795e-06 0.002394032504 7.65848799e-06 --0.001195431421 -0.002041572829 -5.608083229e-06 -0.001342735129 -4.991555023e-06 -0.0009726025397 --0.003091188964 -4.922286739e-06 -0.0009526313922 -4.185808417e-06 0.001038944711 0.003101647071 -5.380065043e-06 0.0009701573557 4.513636696e-06 -iw : 17 --1.136664398e-05 -0.0002778188943 -0.0002202564079 0.0001766033874 0.0001737493961 -8.459809006e-05 --6.044192741e-05 3.030574279e-05 1.046311817e-05 -4.473748822e-06 -4.916077014e-06 1.727084526e-06 -4.266083441e-06 2.930203588e-05 -5.160266346e-05 0.04947612193 -0.0001506097863 -0.0003048721796 -0.1129007451 -0.0004104830357 -0.0003523674649 -0.0005273694444 2.603695309e-05 8.101465068e-05 --0.03775195121 0.0002139369863 0.0001981791695 -0.009084632774 3.380683813e-06 -2.293889869e-05 -0.01664848854 -6.740235922e-05 -5.336888089e-05 -0.002979037846 -4.197726909e-06 -3.988665989e-06 -0.0002427325268 2.300097972e-05 2.345146034e-05 -0.002358098759 -1.103724986e-06 -4.900512745e-06 -0.002544741292 -8.065944768e-06 -4.181128704e-06 -0.00177701329 4.965369411e-06 1.990902391e-06 -0.001469420031 -1.672700252e-06 1.079324306e-06 -0.001622186061 5.354871458e-05 4.95072132e-05 --0.006265935815 -0.0001878711398 0.07279397092 -4.050169808e-05 -0.000242825419 0.1120280264 --0.0005027618368 0.1386125741 -0.0002165560649 -0.0005613194723 0.07143475717 -0.0003740455146 -0.04613283757 -6.898914043e-05 -0.0001175411164 -0.04187441898 7.325003562e-05 -0.04309021097 -8.764962361e-05 0.0002240314032 -0.01912233131 0.0001414747102 -0.01569342194 3.967053389e-05 -8.401438153e-05 0.007059813451 9.45185557e-06 0.00928918376 -3.329907663e-05 -8.254482916e-05 -0.006319603101 -4.568746577e-05 0.003541355 -3.898293628e-06 -7.571298449e-06 -0.00296296086 -1.220503421e-06 -0.001558321703 4.015603726e-06 1.106585644e-05 -0.0005771692183 8.999952136e-06 --0.001475345534 3.967118028e-06 8.181729795e-06 0.0001871354092 2.548914715e-07 0.001136256808 --2.507016032e-06 -5.608083229e-06 0.0006325422668 -1.535263464e-06 -0.0003053434931 -2.03970727e-06 --4.922286739e-06 -0.00074408377 -2.378104861e-06 9.065619836e-05 2.1788377e-06 5.380065043e-06 -0.0005362584061 2.923491826e-06 -0.0002119216218 -ad : 3 2.100474535 +ad : 2 2.100474535 iw : 0 0.03719512428 0.08678844766 0.03935747893 0.002302655829 -0.0004281089771 0.005775470971 -0.0004961498518 -0.004042560405 -0.003743972464 0.0006816691493 0.0009135983472 0.0009035563489 @@ -1955,9 +1849,9 @@ iw : 11 -6.059720722e-05 -0.00695647811 0.09568552649 -4.488641056e-05 0.02507159469 0.06592528192 -1.695300406e-05 0.01600431259 0.008798791754 3.65972406e-06 0.0005437614429 -0.01444035935 6.537235173e-06 -0.003297303423 -0.01007084328 2.838985844e-06 -0.002053186002 -0.00220746227 --1.86471349e-10 0.0001788428751 0.002901958938 -1.178928581e-06 0.001107579244 0.003387779069 +-1.8647135e-10 0.0001788428751 0.002901958938 -1.178928581e-06 0.001107579244 0.003387779069 -9.557756021e-07 0.0007199670216 0.0009901712714 -9.396030983e-08 -0.0005843074808 0.08350788341 -3.688459836e-05 0.02198279267 -7.263124673e-07 -0.008034583264 0.07651967377 8.263122149e-05 +3.688459836e-05 0.02198279267 -7.263124672e-07 -0.008034583264 0.07651967377 8.263122149e-05 0.008191351217 -9.987237407e-06 -0.02614415997 -0.03812850714 7.987010078e-05 -0.0179403444 -3.249800438e-05 -0.04463197313 -0.08510262079 4.485027365e-05 0.001841590794 -5.547892967e-05 -0.05019387371 -0.05234391327 8.756671453e-06 0.04070475539 -6.239254707e-05 -0.03230404625 @@ -1978,17 +1872,123 @@ iw : 12 0.004347029803 1.863478316e-06 5.688162536e-06 -1.20224331e-05 1.160362607e-06 9.355708746e-07 -0.00110406126 -1.010734461e-07 -1.819500732e-06 -0.0006350574156 -6.259508575e-07 -1.91384596e-06 2.707308018e-06 -4.068909534e-07 -4.66678263e-07 0.000328829084 3.302226641e-07 -1.695369558e-05 -0.1070188359 -7.263124673e-07 0.02069763051 4.540762489e-06 8.88167115e-06 0.184470392 +0.1070188359 -7.263124672e-07 0.02069763051 4.540762489e-06 8.88167115e-06 0.184470392 -9.987237407e-06 -0.00948040878 1.477542978e-05 5.609636389e-05 0.1222606696 -3.249800438e-05 -0.07544342662 2.522385825e-05 5.849709011e-05 0.03680831244 -5.547892967e-05 -0.09632472789 2.836717866e-05 2.656504454e-05 -0.01067760266 -6.239254707e-05 -0.06969475475 1.825670313e-05 -7.55278408e-06 -0.01437723321 -4.015494376e-05 -0.01970093118 4.415665817e-06 -1.22319117e-05 -0.004451940362 -9.712107967e-06 0.005928862272 -1.783509563e-06 -4.477110985e-06 0.001593225282 3.922749781e-06 0.007307670623 -2.321414226e-06 1.233736827e-06 0.0008961070542 5.10585817e-06 -0.002190917194 -1.062053768e-06 1.794237384e-06 0.0007103697351 2.335949774e-06 -0.0002551481293 +0.002190917194 -1.062053768e-06 1.794237384e-06 0.0007103697351 2.335949774e-06 -0.0002551481292 1.975884097e-07 1.230068898e-06 -0.0006139557998 -4.345821249e-07 -0.001581548127 8.477904456e-07 -6.698381485e-07 -6.178114269e-05 -1.8646778e-06 -0.0005648620351 3.026779931e-07 -3.90217031e-07 -0.0003291552002 -6.657298145e-07 -5.655521098e-05 +ad : 3 3.113220902 +iw : 13 +0.1059316872 0.1391533552 -0.03806237633 -0.04294214469 0.008708936395 0.0199607046 +-0.008674032598 -0.00448050307 0.0008642533838 0.005167791715 -0.003545070696 0.000309337633 +-0.0005982850352 -0.0555524376 0.1037468694 0.000217574225 0.1472188575 0.1450719079 +0.0003042396182 0.02362714429 0.004581978204 9.609160858e-06 -0.03912999932 -0.04266894875 +-8.948379366e-05 -0.01740361108 -0.006167285671 -1.293381099e-05 0.02456691708 0.01870167653 +3.922048733e-05 -0.00156333134 1.581516665e-05 3.316700202e-08 -0.004546352129 -0.006702221881 +-1.405566009e-05 -0.004724236322 -0.001194119985 -2.504265736e-06 0.007699191329 0.004620916448 +9.690820751e-06 -0.003082756043 -0.001021780666 -2.142841878e-06 0.001118843254 -0.0007422846317 +-1.556692789e-06 -0.002736734311 -0.0007055852463 -1.47972815e-06 -0.1613262292 -0.03071597402 +-6.441644245e-05 0.05619941792 0.0002357198563 0.01873103761 0.152234251 0.000319260228 +0.08683300274 0.000364207739 0.03651166032 0.06322966645 0.0001326029957 0.02262138656 +9.488194343e-05 -0.0003614125704 -0.03402925217 -7.136493091e-05 -0.02120003753 -8.892031246e-05 +-0.02031585382 -0.03245359407 -6.80605171e-05 -0.01087347646 -4.560713269e-05 0.0085043757 +0.02010683908 4.216734398e-05 0.008646997013 3.626850543e-05 0.001990946348 0.007701069294 +1.615040717e-05 0.003904389539 1.63763643e-05 0.001474375163 -0.003958326799 -8.301261431e-06 +-0.00317557855 -1.331947816e-05 -0.006047580554 -0.008399476141 -1.761508104e-05 -0.002444779217 +-1.025425222e-05 0.004272689556 0.006609980458 1.386221467e-05 0.002151549062 9.024343216e-06 +-0.001543196022 -0.0002462912567 -5.165132173e-07 0.0005674319174 2.380006324e-06 0.001776663199 +0.0003847617744 8.069086358e-07 -0.0005897216179 -2.473497061e-06 -0.002598571824 -0.002691884095 +-5.645323074e-06 -0.0004744800721 -1.990134037e-06 +iw : 14 +-0.07532819039 0.03758675605 -0.03431276421 -0.0993964209 0.03358545827 0.03881669069 +-0.01057304717 -0.01897597905 0.009596507846 0.003462001658 -0.001090684391 -0.004139315553 +0.002852193005 0.05479991386 -0.02165089638 -4.540548574e-05 0.08051267305 0.1124456044 +0.000235816901 0.07797285526 0.01528578629 3.205680446e-05 -0.123607747 -0.103029964 +-0.0002160707566 -0.01243706784 -0.009260993902 -1.942182528e-05 0.03602477333 0.04239623901 +8.891187656e-05 0.01668728144 0.002935732289 6.156712787e-06 -0.02619542808 -0.01621232806 +-3.399991472e-05 0.004863335686 -0.0006437155806 -1.349977299e-06 0.002060757969 0.007240679203 +1.518489353e-05 0.006175002135 1.740988408e-05 3.651138639e-08 -0.009201180761 -0.003476611334 +-7.291024983e-06 0.00555987283 0.0008279596045 1.736367279e-06 0.0009841601873 0.02032991667 +4.263517433e-05 0.01230594933 5.161542086e-05 -0.009811959825 0.1574364583 0.0003301701112 +0.1034556734 0.0004339289868 0.1009721329 0.1473647458 0.0003090480757 0.04529278353 +0.0001899736478 -0.0277109573 -0.1042216209 -0.0002185698568 -0.05248089872 -0.0002201230968 +-0.02756654509 -0.06087332245 -0.0001276613553 -0.02532729527 -0.0001062314633 0.0001253107663 +0.03002487001 6.296708383e-05 0.01879590615 7.883655137e-05 0.02184844918 0.03324662962 +6.972364289e-05 0.01065434063 4.468800097e-05 -0.01189760452 -0.02180940957 -4.573791394e-05 +-0.008128386837 -3.409327442e-05 0.001043285945 -0.005007877053 -1.05023407e-05 -0.003632942728 +-1.52378222e-05 -0.003130305896 0.00301158034 6.315778608e-06 0.003355900668 1.407581169e-05 +0.006967221487 0.007482309819 1.569163262e-05 0.001438512249 6.033619445e-06 -0.005422841328 +-0.005974907294 -1.253036194e-05 -0.001214565596 -5.094309485e-06 0.003222751685 0.001297486581 +2.721042465e-06 -0.000693218498 -2.907598883e-06 +iw : 15 +-0.004583943641 -0.0660676381 -0.1519037116 0.0624193234 0.1040362548 -0.03356773924 +-0.03790492466 0.01577462093 0.005066910114 -0.0004626963479 -0.004342306881 0.00210643437 +0.001349800144 0.1151914188 0.01397221794 2.930203588e-05 0.1423359933 -0.07181592318 +-0.0001506097863 -0.2285397587 -0.1957324214 -0.0004104830357 -0.06107469793 0.01241531423 +2.603695309e-05 0.1003921781 0.102012509 0.0002139369863 0.03517057607 0.00161202625 +3.380683813e-06 -0.04331175591 -0.03213976177 -6.740235922e-05 -0.001840854599 -0.002001620483 +-4.197726909e-06 0.008030694996 0.01096765777 2.300097972e-05 0.004477819827 -0.0005262940127 +-1.103724986e-06 -0.008024106976 -0.003846119725 -8.065944768e-06 0.005690613624 0.002367658815 +4.965369411e-06 -0.004171375802 -0.000797600978 -1.672700252e-06 0.1020520871 0.1730247471 +0.000362861313 0.0118033186 4.95072132e-05 0.2585081436 0.1426549679 0.0002991708979 +-0.05789349873 -0.000242825419 0.01292782977 -0.2188108691 -0.0004588823309 -0.1338276211 +-0.0005613194723 -0.1337108269 -0.1513205795 -0.0003173441089 -0.02802369909 -0.0001175411164 +0.009330067168 0.09276877196 0.0001945513516 0.05341270206 0.0002240314032 0.04029583448 +0.06513822621 0.000136605559 0.02003038442 8.401438153e-05 -0.007283486807 -0.03866272096 +-8.1082076e-05 -0.01968001942 -8.254482916e-05 -0.007285963467 -0.007312575967 -1.533567285e-05 +-0.00180511974 -7.571298449e-06 -5.459582716e-05 0.003181892988 6.672952205e-06 0.002638278761 +1.106585644e-05 0.003657263272 0.006806737498 1.42748465e-05 0.001950656424 8.181729795e-06 +-0.0009928876337 -0.003718626579 -7.798570701e-06 -0.001337057548 -5.608083229e-06 -0.001890420026 +-0.002546572208 -5.340580181e-06 -0.001173552597 -4.922286739e-06 0.001594926701 0.002557740759 +5.364002467e-06 0.001282694332 5.380065043e-06 +iw : 16 +-0.00542000657 -0.1324735986 -0.1050258264 0.0842105657 0.08284968454 -0.04033927733 +-0.02882078863 0.0144508199 0.004989174406 -0.00213323722 -0.002344154506 0.0008235332692 +0.002034215228 0.01397221794 0.02487030641 -5.160266346e-05 -0.07181592318 -0.03247215047 +-0.0003048721796 -0.1957324214 -0.1685475501 -0.0003523674649 0.01241531423 0.0008784491439 +8.101465068e-05 0.102012509 0.08541359186 0.0001981791695 0.00161202625 0.005710481249 +-2.293889869e-05 -0.03213976177 -0.02842704284 -5.336888089e-05 -0.002001620483 -0.001659192159 +-3.988665989e-06 0.01096765777 0.008824314472 2.345146034e-05 -0.0005262940127 0.0002080186419 +-4.900512745e-06 -0.003846119725 -0.00377071041 -4.181128704e-06 0.002367658815 0.002418746551 +1.990902391e-06 -0.000797600978 -0.001107529395 1.079324306e-06 0.02553386781 0.01734070138 +4.95072132e-05 0.05600481983 8.224107888e-05 -0.01931260186 -0.003758971079 -0.000242825419 +0.0374928014 -0.00013343994 -0.1032613757 -0.1962204849 -0.0005613194723 -0.08608975756 +-0.0004578417385 -0.0328963936 -0.09792181716 -0.0001175411164 -0.05125214346 -0.0001246013768 +0.04179435342 0.0877030728 0.0002240314032 0.03607225031 0.0001842124604 0.0189162742 +0.0471205823 8.401438153e-05 0.02308509445 7.734603427e-05 -0.01587814437 -0.03304043574 +-8.254482916e-05 -0.01470232319 -6.90938492e-05 -0.001858840402 -0.006573200339 -7.571298449e-06 +-0.002534648244 -7.363126806e-06 0.00191477789 0.004699388305 1.106585644e-05 0.001340745933 +8.717674664e-06 0.001891658242 0.004088448257 8.181729795e-06 0.002394032504 7.65848799e-06 +-0.001195431421 -0.002041572829 -5.608083229e-06 -0.001342735129 -4.991555023e-06 -0.0009726025397 +-0.003091188964 -4.922286739e-06 -0.0009526313922 -4.185808417e-06 0.001038944711 0.003101647071 +5.380065043e-06 0.0009701573557 4.513636696e-06 +iw : 17 +-1.136664398e-05 -0.0002778188943 -0.0002202564079 0.0001766033874 0.0001737493961 -8.459809006e-05 +-6.044192741e-05 3.030574279e-05 1.046311817e-05 -4.473748822e-06 -4.916077014e-06 1.727084526e-06 +4.266083441e-06 2.930203588e-05 -5.160266346e-05 0.04947612193 -0.0001506097863 -0.0003048721796 +0.1129007451 -0.0004104830357 -0.0003523674649 -0.0005273694444 2.603695309e-05 8.101465068e-05 +-0.03775195121 0.0002139369863 0.0001981791695 -0.009084632774 3.380683813e-06 -2.293889869e-05 +0.01664848854 -6.740235922e-05 -5.336888089e-05 -0.002979037846 -4.197726909e-06 -3.988665989e-06 +0.0002427325268 2.300097972e-05 2.345146034e-05 -0.002358098759 -1.103724986e-06 -4.900512745e-06 +0.002544741292 -8.065944768e-06 -4.181128704e-06 -0.00177701329 4.965369411e-06 1.990902391e-06 +0.001469420031 -1.672700252e-06 1.079324306e-06 -0.001622186061 5.354871458e-05 4.95072132e-05 +-0.006265935815 -0.0001878711398 0.07279397092 -4.050169808e-05 -0.000242825419 0.1120280264 +-0.0005027618368 0.1386125741 -0.0002165560649 -0.0005613194723 0.07143475717 -0.0003740455146 +0.04613283757 -6.898914043e-05 -0.0001175411164 -0.04187441898 7.325003562e-05 -0.04309021097 +8.764962361e-05 0.0002240314032 -0.01912233131 0.0001414747102 -0.01569342194 3.967053389e-05 +8.401438153e-05 0.007059813451 9.45185557e-06 0.00928918376 -3.329907663e-05 -8.254482916e-05 +0.006319603101 -4.568746577e-05 0.003541355 -3.898293628e-06 -7.571298449e-06 -0.00296296086 +1.220503421e-06 -0.001558321703 4.015603726e-06 1.106585644e-05 -0.0005771692183 8.999952136e-06 +-0.001475345534 3.967118028e-06 8.181729795e-06 0.0001871354092 2.548914715e-07 0.001136256808 +-2.507016032e-06 -5.608083229e-06 0.0006325422668 -1.535263464e-06 -0.0003053434931 -2.03970727e-06 +-4.922286739e-06 -0.00074408377 -2.378104861e-06 9.065619836e-05 2.1788377e-06 5.380065043e-06 +0.0005362584061 2.923491826e-06 -0.0002119216218 ad : 4 0 iw : 18 0 0 0 0 0 0 @@ -2178,7 +2178,7 @@ iw : 31 1.130875821e-06 -2.470774989e-06 -5.024142311e-07 2.783232517e-07 -0.001285991105 -2.372467008e-05 4.820300676e-07 1.117258944e-05 3.433375523e-07 0.001036424561 -1.391669078e-05 5.946232708e-07 6.549842342e-06 -1.390359953e-07 -0.001030308837 1.948784517e-05 -2.40799044e-07 -9.179221646e-06 --3.227190785e-08 0.0009528539079 -7.974952475e-06 -5.588857553e-08 3.758317552e-06 1.900230114e-08 +-3.227190785e-08 0.0009528539079 -7.974952475e-06 -5.588857552e-08 3.758317552e-06 1.900230114e-08 -0.0008472358564 4.931784492e-08 3.290953809e-08 -2.365497421e-08 2.009602297e-08 0.0007720875174 -1.051919351e-06 3.480398377e-08 4.951946821e-07 iw : 32 @@ -2222,7 +2222,7 @@ iw : 0 -0.003447306427 0.005589710817 0.0006850057437 -0.0005579897072 -0.0009996975289 0.0001494461256 -0.0002423227069 0.002070385223 -0.0003568257309 -0.0006392910063 0.001272356095 -0.00206308977 -7.819384208e-06 0.001169039402 0.002094457634 0.000715891885 -0.00116079864 0.0003655932512 --0.0004239544575 -0.0007595592142 1.900636129e-06 -3.081828249e-06 -0.000474657281 0.000512102311 +-0.0004239544575 -0.0007595592142 1.900636129e-06 -3.081828248e-06 -0.000474657281 0.000512102311 0.0009174854092 -2.612270284e-05 4.235723098e-05 iw : 1 -0.02496414227 0.06661638017 0.0873667413 0.003772708331 0.00737598114 0.01661910878 @@ -2388,7 +2388,7 @@ iw : 8 0.01428571315 0.02559436482 0.01846109386 -0.02993414663 -0.004629344871 0.006552088708 0.01173875935 0.00664950927 -0.01078199304 -0.002683685305 0.0003145222273 0.0005634998089 -0.0001701753238 0.0002759345212 -0.001758294163 -0.001215961683 -0.002178523859 -0.001820648541 -0.002952130616 -1.494151509e-07 -0.001173551675 -0.002102541847 -0.001381594172 0.002240216253 +0.002952130616 -1.49415151e-07 -0.001173551675 -0.002102541847 -0.001381594172 0.002240216253 -0.0001762123216 -0.0002696846401 -0.000483168533 -0.0003866180408 0.0006268903245 0.0007160003345 0.0002622678604 0.0004698805884 0.0004719557629 -0.0007652630506 -9.619674713e-05 0.0003604032359 0.0006457004846 0.0003986107812 -0.000646336217 @@ -2444,7 +2444,7 @@ iw : 11 -0.001314899336 0.001487434345 -0.003747792449 -0.004641351776 0.001409816048 -0.0007295719796 -0.002702200393 0.0003578910001 0.0008452806647 -6.643868403e-05 -0.0004730135747 0.001223579478 0.001495090331 -0.000513740312 0.0004291541502 0.001082867676 0.0002432105301 -0.05518461382 -0.08054150896 0.0243668295 -0.0004852825153 0.003399711711 -0.1127981092 0.1159421757 +0.08054150896 0.0243668295 -0.0004852825152 0.003399711711 -0.1127981092 0.1159421757 0.004047255421 -0.006783506696 0.0114628673 -0.09893734733 0.04478297992 -0.05399799466 -0.02287206276 0.02058351857 -0.05089662767 -0.01568290142 -0.07404206666 -0.04107065195 0.02503341291 -0.007907360142 -0.02814099971 -0.05185282072 -0.04994960242 0.01846109386 @@ -2465,7 +2465,7 @@ iw : 12 0.007762840033 -0.00241183313 0.004102163872 0.008628060325 -0.002285977235 0.002511835411 0.00363983056 -0.0005803102326 0.000135189482 -0.0007327401831 0.0007669782628 -0.001320016223 -0.002794855225 0.0008330155266 -0.0009949454792 -0.001588903295 -0.0003943590625 -0.08141171583 --0.03521096071 -0.0004852825153 0.02485441634 -0.005512537317 -0.1200325293 -0.01891318621 +-0.03521096071 -0.0004852825152 0.02485441634 -0.005512537317 -0.1200325293 -0.01891318621 -0.006783506696 0.01086297304 -0.01858671827 -0.05107293681 0.04543454937 -0.02287206276 -0.03101732579 -0.03337559884 0.01060864943 0.06557148115 -0.04107065195 -0.03277639408 -0.04059097788 0.02613218877 0.03820040346 -0.04994960242 -0.001666036704 -0.02993414663 @@ -2665,7 +2665,7 @@ iw : 21 -8.447351869e-05 -0.0001565515074 7.742866825e-05 0.0004431404825 -0.0003129015902 -6.073647624e-05 -0.0001067144339 -6.127732861e-05 0.000613877069 0.0008871127626 3.048158687e-05 6.799498917e-05 -4.747280058e-07 -8.746957191e-06 -0.0005227550984 1.480071545e-05 1.415851055e-05 2.743971367e-05 --0.0006538972093 0.0001073150972 -2.75247605e-05 -4.343438222e-05 -1.805035928e-05 0.0005822944775 +-0.0006538972093 0.0001073150972 -2.75247605e-05 -4.343438221e-05 -1.805035928e-05 0.0005822944775 -0.0001042602574 1.903212344e-05 2.943846572e-05 iw : 22 5.158557198e-05 0.0011729881 0.0005130671441 -0.001012621961 -0.0002673329889 0.0004981481838 @@ -2877,7 +2877,7 @@ iw : 26 1.130875821e-06 -2.470774989e-06 -5.024142311e-07 2.783232517e-07 -0.001285991105 -2.372467008e-05 4.820300676e-07 1.117258944e-05 3.433375523e-07 0.001036424561 -1.391669078e-05 5.946232708e-07 6.549842342e-06 -1.390359953e-07 -0.001030308837 1.948784517e-05 -2.40799044e-07 -9.179221646e-06 --3.227190785e-08 0.0009528539079 -7.974952475e-06 -5.588857553e-08 3.758317552e-06 1.900230114e-08 +-3.227190785e-08 0.0009528539079 -7.974952475e-06 -5.588857552e-08 3.758317552e-06 1.900230114e-08 -0.0008472358564 4.931784492e-08 3.290953809e-08 -2.365497421e-08 2.009602297e-08 0.0007720875174 -1.051919351e-06 3.480398377e-08 4.951946821e-07 iw : 27 @@ -2901,113 +2901,7 @@ iw : 27 -4.128165962e-06 -7.974952475e-06 -6.722570892e-05 -1.466313765e-05 1.998981697e-07 2.430741099e-06 4.931784492e-08 -0.0008409275895 4.256005656e-06 -6.636575442e-08 2.570648081e-06 -1.051919351e-06 0.0006375360587 3.460708109e-06 -5.798686375e-08 -ad : 1 2.994710688 -iw : 13 -0.1094382488 0.1575099926 -0.02459546763 -0.0508569595 0.0002926803081 0.02332622509 --0.00360130772 -0.00655977431 -0.001973517693 0.006303685187 -0.001904204983 -0.0003169001607 --0.001441148875 -0.05745273438 -0.04577479802 0.08548654953 0.1597212682 -0.06966520345 -0.1301029851 0.0441752957 -0.009715468275 0.01814408574 -0.03897089457 0.01906583483 --0.03560632715 -0.02857176241 0.006929313561 -0.01294081312 0.02309654229 -0.007837146018 -0.01463623217 0.00481358905 -0.002386663459 0.004457204244 -0.003496098051 0.002616345266 --0.004886145627 -0.008354644821 0.001889854826 -0.003529391174 0.006880970101 -0.001768759164 -0.003303239434 -0.0008194335424 -0.0003870357075 0.0007228070599 0.001298942118 0.0002676873288 --0.0004999184503 -0.003619927512 0.000645977325 -0.001206392491 -0.1637853047 0.01340839325 --0.0250407937 -0.02632353745 -0.03952233277 0.02483839534 -0.07121893202 0.133004645 --0.0441145415 -0.06623386362 0.04921561958 -0.03875068902 0.07236870155 -0.01623295749 --0.02437226945 0.003295118256 0.01126944275 -0.02104620484 0.008553108285 0.0128416932 --0.02592382237 0.01902095603 -0.03552251391 0.007583641673 0.01138612964 0.005293274612 --0.005563289975 0.01038970098 -0.002716260779 -0.004078211852 0.00491760791 -0.006060757042 -0.01131874371 -0.00314392438 -0.004720308803 0.003590136987 -0.0002493641115 0.0004656989958 -0.0006079792487 0.0009128240547 -0.007677284944 0.005086979612 -0.009500169381 0.001866205697 -0.002801933545 0.003077258277 -0.001680266385 0.003137975081 -0.0004985903474 -0.0007485868366 --0.0007736067429 -0.0006446383622 0.001203891916 -0.0006166047202 -0.0009257743946 0.002464602417 --0.0007840497724 0.001464249163 -8.76707953e-06 -1.316295104e-05 -0.00301044952 0.001517487246 --0.002833977521 0.0003999460821 0.000600481686 -iw : 14 --0.07805128981 0.04438574193 -0.01689634263 -0.1150433099 0.01280796168 0.04798892139 -0.001097066025 -0.02315033109 0.003648383794 0.005587971415 0.002396866693 -0.005742608522 -0.001687957962 0.05509401628 0.009590932949 -0.01791151026 0.09111739188 -0.0543387266 -0.1014800817 0.1115807815 -0.01938140774 0.03619567413 -0.1232117092 0.04603145757 --0.0859658731 -0.04005800039 0.01445276311 -0.02699120265 0.03193770748 -0.01748707055 -0.03265791194 0.03180944982 -0.006957805228 0.01299402263 -0.02403822509 0.006469596767 --0.01208227078 -0.002647603537 0.003092042997 -0.005774533111 0.0009549232064 -0.00283918864 -0.00530231592 0.009787624909 -0.001356308927 0.002532969567 -0.008248719308 0.001206979136 --0.002254089283 0.003634108808 0.0003472372567 -0.0006484816149 0.000671576495 -0.008469179681 -0.01581658422 -0.00574268557 -0.008622105998 -0.002536087349 -0.07494826227 0.1399693415 --0.05266551533 -0.07907235213 0.1256230485 -0.08543915352 0.1595615654 -0.0320671528 --0.04814583475 -0.01864511055 0.03614893461 -0.06750980501 0.02107735033 0.03164567282 --0.04205766482 0.03956009054 -0.07388029627 0.01835363633 0.02755627067 -0.007492977994 --0.005835556999 0.01089817223 -0.005688416177 -0.008540625573 0.02834688615 -0.02019640844 -0.03771772558 -0.007873602193 -0.01182147827 -0.007780434107 0.005409959169 -0.01010334862 -0.002068332403 0.003105407915 -0.001796867218 0.004863759824 -0.009083296117 0.002990827802 -0.004490448592 -0.005918706394 0.001265014608 -0.002362473208 -0.000408567266 -0.0006134255884 -0.008882422962 -0.004948939125 0.009242372395 -0.001507932335 -0.002264019555 -0.004512872635 -0.001657709583 -0.003095849212 0.0001704543083 0.0002559212229 0.002624712969 5.358821452e-05 --0.0001000784657 0.0006085122316 0.0009136242787 -iw : 15 --0.004545672418 -0.06877397602 -0.1835538537 0.03494519556 0.1310550381 -0.01267537866 --0.04699393957 0.005142732784 0.009092585479 0.003402550796 -0.006645107351 0.001987917847 -0.001240892351 0.1211630605 -0.006160226999 0.01150450845 0.1639612736 0.0326434296 --0.0609631125 -0.2441143057 0.09995823109 -0.1866766134 -0.1121622462 0.01154769922 --0.02156586166 0.09772161583 -0.04851856148 0.09061065452 0.06882273853 -0.01278737087 -0.02388100571 -0.04253291319 0.01498988191 -0.02799429682 -0.01270782141 0.005170711279 --0.009656542136 0.007326888721 -0.005150690898 0.009619153149 0.00707240553 -0.0005993654672 -0.001119342693 -0.005875683304 0.0009226642998 -0.001723118195 0.002255503651 0.0002700151912 --0.000504265841 -0.003826901625 0.0001568843624 -0.0002929887928 0.1089403244 -0.07691946149 -0.143650647 -0.005527436805 -0.008298930082 0.2877736783 -0.07112011294 0.1328200958 -0.02831787667 0.04251664684 0.03018849468 0.09936614344 -0.1855708624 0.07229739117 -0.10854778 -0.1633853195 0.09522686935 -0.1778405768 0.02780280792 0.04174331922 --0.007149848035 -0.03226047354 0.06024792437 -0.02415265859 -0.03626296093 0.05106732201 --0.04092848132 0.07643582925 -0.01625988053 -0.02441269189 0.001285185104 0.01116069183 --0.02084310748 0.007583725325 0.01138625523 -0.011078604 0.007104089419 -0.01326721511 -0.002792116324 0.004192101868 -0.003765708755 0.001840968029 -0.003438092824 0.0001429935033 -0.0002146913892 0.006100525677 -0.005579410727 0.01041980723 -0.002248944218 -0.003376579684 --0.0009844616613 0.001759548094 -0.003286037334 0.000757208787 0.001136878268 -0.001931194564 -0.001341534508 -0.002505377656 0.0007298340214 0.001095777614 0.0009115452495 -0.000646517436 -0.001207401173 -0.0004539112214 -0.0006815053022 -iw : 16 -0.00241407523 0.06036541995 0.05886394865 -0.02749628531 -0.04721388286 0.01029462959 -0.01631601107 -0.002516640137 -0.003741296909 -0.0004847163211 0.001912575853 -0.0003258214838 --0.0008741630731 -0.006160226999 0.0474853722 0.008542457234 0.0326434296 0.09873240331 -0.05305108317 0.09995823109 -0.02202329612 0.07142875844 0.01154769922 -0.03904073167 --0.001989793053 -0.04851856148 0.001662003973 -0.03720405108 -0.01278737087 0.01915885033 --0.004551941463 0.01498988191 -0.005878183679 0.009988793304 0.005170711279 -0.001174048821 -0.003685145955 -0.005150690898 -0.00114813302 -0.00432124275 -0.0005993654672 0.002570049244 -0.0002558508428 0.0009226642998 -0.001777871507 0.0002174592927 0.0002700151912 0.001207579461 -0.000548514419 0.0001568843624 -0.001531514479 -0.0003079662366 -0.01048608132 -0.00263517492 --0.008298930082 -0.035564874 0.05546119183 0.01435886696 0.1025244512 0.04251664684 --0.08818493555 0.09350161812 0.06043140474 0.04027264672 0.10854778 -0.06184683165 -0.01065049333 0.0280639618 -0.057189315 0.04174331922 0.009355427881 -0.04218815292 --0.02010944851 -0.009618358826 -0.03626296093 0.02120496938 -0.004317245154 -0.01516343752 -0.01534357142 -0.02441269189 0.003109557928 0.01268838614 0.006401458555 0.00361541629 -0.01138625523 -0.006058813905 0.0005184884287 0.002610264924 -0.00452974173 0.004192101868 --0.0004898372422 -0.002240458087 0.00025866534 -0.0009583702671 0.0002146913892 0.0008334995496 --0.001313885112 -0.00209039849 0.001401217655 -0.003376579684 0.0004774689373 0.001688789202 -0.00069375681 0.0002898385403 0.001136878268 -0.0002299371509 -0.0004719933852 0.0006386930007 --0.001061621762 0.001095777614 -0.0004276220525 -0.0001672203798 -0.0003813358731 0.0006693573272 --0.0006815053022 0.0003751329123 -4.848501498e-05 -iw : 17 --0.004508396993 -0.1127352099 -0.1099311429 0.05135058281 0.08817410694 -0.01922569624 --0.03047090427 0.004699941694 0.00698704478 0.0009052301176 -0.003571823742 0.0006084866698 -0.001632539915 0.01150450845 0.008542457234 0.03610609992 -0.0609631125 0.05305108317 -0.02806389382 -0.1866766134 0.07142875844 -0.1171724164 -0.02156586166 -0.001989793053 --0.03639015979 0.09061065452 -0.03720405108 0.05122093246 0.02388100571 -0.004551941463 -0.02522241961 -0.02799429682 0.009988793304 -0.01918409738 -0.009656542136 0.003685145955 --0.006082973509 0.009619153149 -0.00432124275 0.004608126157 0.001119342693 0.0002558508428 -0.00222923438 -0.001723118195 0.0002174592927 -0.002067545594 -0.000504265841 0.000548514419 -0.0004769120721 -0.0002929887928 -0.0003079662366 -0.001121277522 0.01958324119 -0.008298930082 -0.00841969869 -0.0542702865 -0.02319216187 -0.02681584726 0.04251664684 0.04588869783 --0.08576488754 -0.007805464502 -0.1128584395 0.10854778 -0.1043221356 0.0007448043595 -0.05654271171 -0.05241074486 0.04174331922 -0.1127949308 0.04487435093 0.03726323378 -0.03755532391 -0.03626296093 0.03868695835 0.0004825595755 -0.01863485638 0.02831841992 --0.02441269189 0.04786333248 -0.01469850101 -0.01777419505 -0.01195501952 0.01138625523 --0.01155203436 0.0006548947019 0.00613185428 -0.004874790307 0.004192101868 -0.01011397438 -0.002583372536 0.003072815192 -0.0004830694696 0.0002146913892 -0.001244357274 0.001287506847 -0.0005594469681 0.00390391573 -0.003376579684 0.00589910609 -0.001969237637 -0.002436203272 --0.001295622886 0.001136878268 -0.001224579034 0.0005699592838 0.0007878632016 -0.001192788678 -0.001095777614 -0.002521289805 0.0002721866829 0.0006629078332 0.0007121623561 -0.0006815053022 -0.00157717977 -2.238480383e-05 -0.0003611572413 -ad : 2 1.950638213 +ad : 1 1.950638213 iw : 0 0.03895750537 0.09615671863 0.05138652709 0.007301292503 -0.0005160720341 0.007460470751 0.003395180849 -0.00209542138 -0.005082498046 -0.001358561509 0.0001148826082 0.001219804125 @@ -3069,7 +2963,7 @@ iw : 2 0.000400744924 0.0006493985831 -0.007319420757 -0.000981001931 0.00175813423 -0.00306110352 -0.004960452822 0.001129690948 -0.003692731054 0.006618046981 -0.002596658013 -0.004207828805 -0.001092121608 -0.00167537468 0.003002576733 -0.0002787768301 -0.0004517518942 0.003152552755 --5.6065354e-06 1.004793313e-05 0.0007247903566 0.00117450728 -0.001410220836 0.0008410905712 +-5.606535399e-06 1.004793312e-05 0.0007247903566 0.00117450728 -0.001410220836 0.0008410905712 -0.001507387577 0.0006991920992 0.001133025851 iw : 3 0.004250698777 0.03444477438 0.06285629416 0.05285023305 0.01969837362 -0.007849418645 @@ -3186,7 +3080,7 @@ iw : 8 0.007116314775 0.001265963071 -0.003097214742 0.005550773228 0.002860047865 -0.001085096863 0.001944691318 -0.001498587652 0.000273461211 -0.0004900923235 0.0004689255487 0.0009275545088 -0.00166234671 -0.001663687209 0.0005019779714 -0.0008996360011 0.1422460755 -0.02942557682 -0.05273599594 0.0002147933143 0.0003480679744 0.2816803994 -0.05514837822 0.09883594356 +0.05273599594 0.0002147933143 0.0003480679745 0.2816803994 -0.05514837822 0.09883594356 0.003025238444 0.004902334232 0.2469421405 -0.04045917761 0.07251021922 0.01038967019 0.01683623846 0.1455378343 -0.01161659851 0.02081906145 0.0191399551 0.03101588812 0.06049289478 0.009809945416 -0.01758120987 0.02419469839 0.03920699157 0.01206439713 @@ -3215,7 +3109,7 @@ iw : 9 -0.006593656682 0.01007256567 0.003211422451 0.001018892749 0.003650380257 -0.009877253223 0.003084150956 0.005075126285 -0.0009562870333 0.002206595557 -0.004050223932 -0.0002151157959 0.001335528553 -0.001242074704 0.00105170804 -0.0001230745016 -0.001382356943 -0.0002307369063 --0.0004941732032 -0.0009713972739 0.001924479391 -0.0008391892157 -0.001595236376 7.566351939e-05 +-0.0004941732032 -0.0009713972739 0.001924479391 -0.0008391892156 -0.001595236376 7.566351939e-05 -0.0005374786309 0.001363729849 -0.0002080272904 -0.0004987887426 0.000356995209 -0.0004593280335 0.0001731483446 0.0003887715026 -0.0001034745359 iw : 10 @@ -3238,7 +3132,7 @@ iw : 10 -0.001301948245 0.002226024216 -0.0001230745016 0.001203606991 0.0003669950931 0.001715878829 0.0008856484343 0.001924479391 -0.003346596012 0.001751169431 0.002706413289 -0.000135602815 0.001363729849 -0.002220598455 0.0005426427483 0.0007891241635 -0.0006398004703 0.0001731483446 --0.0006730282847 7.362468117e-05 -0.0002899538634 +-0.0006730282847 7.362468118e-05 -0.0002899538634 iw : 11 -0.0003859789126 -0.01130756583 -0.04266843758 -0.0633081388 -0.05321700781 -0.0246291393 0.00330681158 0.01010803875 0.005150324867 0.0005020722743 -0.001281705618 -0.001515006691 @@ -3249,7 +3143,7 @@ iw : 11 -0.000954761084 0.00104389561 -0.004099326878 0.004082161756 0.001458672233 -0.001281917833 0.003100127403 0.000642353935 0.0004656168986 0.0007618824332 -0.0002636618221 0.001234580895 -0.001147710327 -0.0005034384976 0.000617217213 -0.001172325754 0.0002147933143 -0.05408694936 --0.07989726652 0.0250234074 0.0004316091401 0.003025238444 -0.1121586038 -0.1194579478 +-0.07989726652 0.0250234074 0.0004316091402 0.003025238444 -0.1121586038 -0.1194579478 0.008182888411 0.006078963163 0.01038967019 -0.1011780749 -0.05230518343 -0.04887866775 0.02087717246 0.0191399551 -0.05536433 0.01057415091 -0.07323807189 0.03846013883 0.02419469839 -0.01231789995 0.02831210523 -0.0563133347 0.0486172227 0.01899919076 @@ -3257,9 +3151,9 @@ iw : 11 -0.004281257612 0.005922876392 0.01586228226 0.0007046579906 0.003084150956 -0.005608576667 0.007109735864 0.001415942827 -0.00148908955 -0.0002151157959 -0.001383326665 0.002304253007 -0.002992207007 -0.001477599033 -0.001382356943 0.0003669950931 -0.0002846611775 -0.002969113675 --0.0006781129266 -0.0008391892157 0.001751169431 -0.001729822495 -0.001362609216 0.0002126433976 +-0.0006781129266 -0.0008391892156 0.001751169431 -0.001729822495 -0.001362609216 0.0002126433976 -0.0002080272904 0.0005426427483 -0.0008450199431 0.0004272937848 0.0003953846579 0.0003887715026 -7.362468117e-05 -6.201758895e-05 0.0007944942516 +7.362468118e-05 -6.201758895e-05 0.0007944942516 iw : 12 -0.0006254705773 -0.01832366871 -0.06914329103 -0.1025894857 -0.08623702361 -0.03991099378 0.00535861748 0.01637986073 0.008345991355 0.0008135973883 -0.002076976557 -0.002455035958 @@ -3269,8 +3163,8 @@ iw : 12 -0.06409905098 -0.01719756241 0.0171139577 -0.02144902222 -0.004394333948 0.001409295962 0.004508055166 0.001691610523 -0.003534677309 0.008349362912 0.002363747173 -0.002841565488 0.004597257527 0.001040920821 -0.0007653596477 0.0003865520683 -0.0004272583468 0.0009867399876 --0.002425559289 -0.000815811324 0.001063178035 -0.00186458132 0.0003480679744 0.08071336988 --0.03553040848 0.0004316091401 0.02545647408 0.004902334232 0.1233645123 -0.02333122299 +-0.002425559289 -0.000815811324 0.001063178035 -0.00186458132 0.0003480679745 0.08071336988 +-0.03553040848 0.0004316091402 0.02545647408 0.004902334232 0.1233645123 -0.02333122299 0.006078963163 0.0142823802 0.01683623846 0.05848590224 0.03935897877 0.02087717246 -0.02793099319 0.03101588812 -0.005314484467 0.06422985444 0.03846013883 -0.03464805337 0.03920699157 -0.02589834233 0.04256618977 0.0486172227 -0.0075319319 0.03078778251 @@ -3281,6 +3175,112 @@ iw : 12 -0.001098867503 -0.001595236376 0.002706413289 -0.001362609216 -0.003097033236 0.0003445840805 -0.0004987887426 0.0007891241635 0.0004272937848 -0.0004162831895 0.0006407123865 -0.0001034745359 -0.0002899538634 0.0007944942516 0.0007351596654 +ad : 2 2.994710688 +iw : 13 +0.1094382488 0.1575099926 -0.02459546763 -0.0508569595 0.0002926803081 0.02332622509 +-0.00360130772 -0.00655977431 -0.001973517693 0.006303685187 -0.001904204983 -0.0003169001607 +-0.001441148875 -0.05745273438 -0.04577479802 0.08548654953 0.1597212682 -0.06966520345 +0.1301029851 0.0441752957 -0.009715468275 0.01814408574 -0.03897089457 0.01906583483 +-0.03560632715 -0.02857176241 0.006929313561 -0.01294081312 0.02309654229 -0.007837146018 +0.01463623217 0.00481358905 -0.002386663459 0.004457204244 -0.003496098051 0.002616345266 +-0.004886145627 -0.008354644821 0.001889854826 -0.003529391174 0.006880970101 -0.001768759164 +0.003303239434 -0.0008194335424 -0.0003870357075 0.0007228070599 0.001298942118 0.0002676873288 +-0.0004999184503 -0.003619927512 0.000645977325 -0.001206392491 -0.1637853047 0.01340839325 +-0.0250407937 -0.02632353745 -0.03952233277 0.02483839534 -0.07121893202 0.133004645 +-0.0441145415 -0.06623386362 0.04921561958 -0.03875068902 0.07236870155 -0.01623295749 +-0.02437226945 0.003295118256 0.01126944275 -0.02104620484 0.008553108285 0.0128416932 +-0.02592382237 0.01902095603 -0.03552251391 0.007583641673 0.01138612964 0.005293274612 +-0.005563289975 0.01038970098 -0.002716260779 -0.004078211852 0.00491760791 -0.006060757042 +0.01131874371 -0.00314392438 -0.004720308803 0.003590136987 -0.0002493641115 0.0004656989958 +0.0006079792487 0.0009128240547 -0.007677284944 0.005086979612 -0.009500169381 0.001866205697 +0.002801933545 0.003077258277 -0.001680266385 0.003137975081 -0.0004985903474 -0.0007485868366 +-0.0007736067429 -0.0006446383622 0.001203891916 -0.0006166047202 -0.0009257743946 0.002464602417 +-0.0007840497724 0.001464249163 -8.76707953e-06 -1.316295104e-05 -0.00301044952 0.001517487246 +-0.002833977521 0.0003999460821 0.000600481686 +iw : 14 +-0.07805128981 0.04438574193 -0.01689634263 -0.1150433099 0.01280796168 0.04798892139 +0.001097066025 -0.02315033109 0.003648383794 0.005587971415 0.002396866693 -0.005742608522 +0.001687957962 0.05509401628 0.009590932949 -0.01791151026 0.09111739188 -0.0543387266 +0.1014800817 0.1115807815 -0.01938140774 0.03619567413 -0.1232117092 0.04603145757 +-0.0859658731 -0.04005800039 0.01445276311 -0.02699120265 0.03193770748 -0.01748707055 +0.03265791194 0.03180944982 -0.006957805228 0.01299402263 -0.02403822509 0.006469596767 +-0.01208227078 -0.002647603537 0.003092042997 -0.005774533111 0.0009549232064 -0.00283918864 +0.00530231592 0.009787624909 -0.001356308927 0.002532969567 -0.008248719308 0.001206979136 +-0.002254089283 0.003634108808 0.0003472372567 -0.0006484816149 0.000671576495 -0.008469179681 +0.01581658422 -0.00574268557 -0.008622105998 -0.002536087349 -0.07494826227 0.1399693415 +-0.05266551533 -0.07907235213 0.1256230485 -0.08543915352 0.1595615654 -0.0320671528 +-0.04814583475 -0.01864511055 0.03614893461 -0.06750980501 0.02107735033 0.03164567282 +-0.04205766482 0.03956009054 -0.07388029627 0.01835363633 0.02755627067 -0.007492977994 +-0.005835556999 0.01089817223 -0.005688416177 -0.008540625573 0.02834688615 -0.02019640844 +0.03771772558 -0.007873602193 -0.01182147827 -0.007780434107 0.005409959169 -0.01010334862 +0.002068332403 0.003105407915 -0.001796867218 0.004863759824 -0.009083296117 0.002990827802 +0.004490448592 -0.005918706394 0.001265014608 -0.002362473208 -0.000408567266 -0.0006134255884 +0.008882422962 -0.004948939125 0.009242372395 -0.001507932335 -0.002264019555 -0.004512872635 +0.001657709583 -0.003095849212 0.0001704543083 0.0002559212229 0.002624712969 5.358821452e-05 +-0.0001000784657 0.0006085122316 0.0009136242787 +iw : 15 +-0.004545672418 -0.06877397602 -0.1835538537 0.03494519556 0.1310550381 -0.01267537866 +-0.04699393957 0.005142732784 0.009092585479 0.003402550796 -0.006645107351 0.001987917847 +0.001240892351 0.1211630605 -0.006160226999 0.01150450845 0.1639612736 0.0326434296 +-0.0609631125 -0.2441143057 0.09995823109 -0.1866766134 -0.1121622462 0.01154769922 +-0.02156586166 0.09772161583 -0.04851856148 0.09061065452 0.06882273853 -0.01278737087 +0.02388100571 -0.04253291319 0.01498988191 -0.02799429682 -0.01270782141 0.005170711279 +-0.009656542136 0.007326888721 -0.005150690898 0.009619153149 0.00707240553 -0.0005993654672 +0.001119342693 -0.005875683304 0.0009226642998 -0.001723118195 0.002255503651 0.0002700151912 +-0.000504265841 -0.003826901625 0.0001568843624 -0.0002929887928 0.1089403244 -0.07691946149 +0.143650647 -0.005527436805 -0.008298930082 0.2877736783 -0.07112011294 0.1328200958 +0.02831787667 0.04251664684 0.03018849468 0.09936614344 -0.1855708624 0.07229739117 +0.10854778 -0.1633853195 0.09522686935 -0.1778405768 0.02780280792 0.04174331922 +-0.007149848035 -0.03226047354 0.06024792437 -0.02415265859 -0.03626296093 0.05106732201 +-0.04092848132 0.07643582925 -0.01625988053 -0.02441269189 0.001285185104 0.01116069183 +-0.02084310748 0.007583725325 0.01138625523 -0.011078604 0.007104089419 -0.01326721511 +0.002792116324 0.004192101868 -0.003765708755 0.001840968029 -0.003438092824 0.0001429935033 +0.0002146913892 0.006100525677 -0.005579410727 0.01041980723 -0.002248944218 -0.003376579684 +-0.0009844616613 0.001759548094 -0.003286037334 0.000757208787 0.001136878268 -0.001931194564 +0.001341534508 -0.002505377656 0.0007298340214 0.001095777614 0.0009115452495 -0.000646517436 +0.001207401173 -0.0004539112214 -0.0006815053022 +iw : 16 +0.00241407523 0.06036541995 0.05886394865 -0.02749628531 -0.04721388286 0.01029462959 +0.01631601107 -0.002516640137 -0.003741296909 -0.0004847163211 0.001912575853 -0.0003258214838 +-0.0008741630731 -0.006160226999 0.0474853722 0.008542457234 0.0326434296 0.09873240331 +0.05305108317 0.09995823109 -0.02202329612 0.07142875844 0.01154769922 -0.03904073167 +-0.001989793053 -0.04851856148 0.001662003973 -0.03720405108 -0.01278737087 0.01915885033 +-0.004551941463 0.01498988191 -0.005878183679 0.009988793304 0.005170711279 -0.001174048821 +0.003685145955 -0.005150690898 -0.00114813302 -0.00432124275 -0.0005993654672 0.002570049244 +0.0002558508428 0.0009226642998 -0.001777871507 0.0002174592927 0.0002700151912 0.001207579461 +0.000548514419 0.0001568843624 -0.001531514479 -0.0003079662366 -0.01048608132 -0.00263517492 +-0.008298930082 -0.035564874 0.05546119183 0.01435886696 0.1025244512 0.04251664684 +-0.08818493555 0.09350161812 0.06043140474 0.04027264672 0.10854778 -0.06184683165 +0.01065049333 0.0280639618 -0.057189315 0.04174331922 0.009355427881 -0.04218815292 +-0.02010944851 -0.009618358826 -0.03626296093 0.02120496938 -0.004317245154 -0.01516343752 +0.01534357142 -0.02441269189 0.003109557928 0.01268838614 0.006401458555 0.00361541629 +0.01138625523 -0.006058813905 0.0005184884287 0.002610264924 -0.00452974173 0.004192101868 +-0.0004898372422 -0.002240458087 0.00025866534 -0.0009583702671 0.0002146913892 0.0008334995496 +-0.001313885112 -0.00209039849 0.001401217655 -0.003376579684 0.0004774689373 0.001688789202 +0.00069375681 0.0002898385403 0.001136878268 -0.0002299371509 -0.0004719933852 0.0006386930007 +-0.001061621762 0.001095777614 -0.0004276220525 -0.0001672203798 -0.0003813358731 0.0006693573272 +-0.0006815053022 0.0003751329123 -4.848501498e-05 +iw : 17 +-0.004508396993 -0.1127352099 -0.1099311429 0.05135058281 0.08817410694 -0.01922569624 +-0.03047090427 0.004699941694 0.00698704478 0.0009052301176 -0.003571823742 0.0006084866698 +0.001632539915 0.01150450845 0.008542457234 0.03610609992 -0.0609631125 0.05305108317 +0.02806389382 -0.1866766134 0.07142875844 -0.1171724164 -0.02156586166 -0.001989793053 +-0.03639015979 0.09061065452 -0.03720405108 0.05122093246 0.02388100571 -0.004551941463 +0.02522241961 -0.02799429682 0.009988793304 -0.01918409738 -0.009656542136 0.003685145955 +-0.006082973509 0.009619153149 -0.00432124275 0.004608126157 0.001119342693 0.0002558508428 +0.00222923438 -0.001723118195 0.0002174592927 -0.002067545594 -0.000504265841 0.000548514419 +0.0004769120721 -0.0002929887928 -0.0003079662366 -0.001121277522 0.01958324119 -0.008298930082 +0.00841969869 -0.0542702865 -0.02319216187 -0.02681584726 0.04251664684 0.04588869783 +-0.08576488754 -0.007805464502 -0.1128584395 0.10854778 -0.1043221356 0.0007448043595 +0.05654271171 -0.05241074486 0.04174331922 -0.1127949308 0.04487435093 0.03726323378 +0.03755532391 -0.03626296093 0.03868695835 0.0004825595755 -0.01863485638 0.02831841992 +-0.02441269189 0.04786333248 -0.01469850101 -0.01777419505 -0.01195501952 0.01138625523 +-0.01155203436 0.0006548947019 0.00613185428 -0.004874790307 0.004192101868 -0.01011397438 +0.002583372536 0.003072815192 -0.0004830694696 0.0002146913892 -0.001244357274 0.001287506847 +0.0005594469681 0.00390391573 -0.003376579684 0.00589910609 -0.001969237637 -0.002436203272 +-0.001295622886 0.001136878268 -0.001224579034 0.0005699592838 0.0007878632016 -0.001192788678 +0.001095777614 -0.002521289805 0.0002721866829 0.0006629078332 0.0007121623561 -0.0006815053022 +0.00157717977 -2.238480383e-05 -0.0003611572413 ad : 3 3.303653192 iw : 18 0.0007678190344 0.0008537167489 -0.0004079583757 -0.0002091374471 0.0001307220421 8.867290606e-05 @@ -3293,7 +3293,7 @@ iw : 18 1.592914066e-05 -0.002175190689 3.17592886e-05 -1.75914133e-05 0.001961592603 -6.470918642e-06 3.584230293e-06 -0.001946369979 -1.827123955e-07 1.012040699e-07 -0.002102686285 0.2099517603 -0.1162919055 0.0005554570192 -0.0008876748049 -0.001108854348 0.04224377827 -0.02339875343 -0.0007417984509 -0.001185466692 7.690029919e-05 -0.02009767036 0.01113206376 6.1098499e-05 +0.0007417984509 -0.001185466692 7.69002992e-05 -0.02009767036 0.01113206376 6.1098499e-05 -9.764139494e-05 0.0003321396057 -0.01407637703 0.007796880128 -0.0002128660256 0.0003401807903 -6.335068127e-05 0.01251871268 -0.006934092619 -2.386372917e-05 3.813658016e-05 -7.892398472e-05 -0.00332010089 0.00183899796 9.427333548e-05 -0.000150658038 7.708535971e-07 0.001469375728 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/pdm_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/pdm_ref.dat index 2cd0f43a04..8ce3b611ef 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/pdm_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/pdm_ref.dat @@ -1,29 +1,29 @@ -1.13050345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.7036994203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1036197127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001913561905 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001818701482 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002572536776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001408538786 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0009139486516 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004759916665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002858020775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.042287419e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.611984234e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.716760041e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.7175504312 0.01068672956 -0.005317799783 0.01068672956 0.854129585 0.007286349321 -0.005317799783 0.007286349321 0.8146378334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.6578631548 -0.006235296288 0.003116089609 -0.006235296288 0.6066070851 -0.00314370873 0.003116089609 -0.00314370873 0.6294976124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3000643894 -0.006404584573 0.003316714497 -0.006404584573 0.2272137767 -0.003810901617 0.003316714497 -0.003810901617 0.2492978267 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08683608602 -0.002367635196 0.001342815845 -0.002367635196 0.05309469643 -0.001549313542 0.001342815845 -0.001549313542 0.06109765676 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.03167466688 -0.0003246881475 0.0002285806023 -0.0003246881475 0.02376346593 -0.0002924848139 0.0002285806023 -0.0002924848139 0.02486141122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01108774729 2.834492841e-05 5.718337856e-06 2.834492841e-05 0.009971362435 -1.329181809e-05 5.718337856e-06 -1.329181809e-05 0.009903665711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.007645058246 9.281742033e-05 -5.551493635e-05 9.281742033e-05 0.00872587346 6.512474873e-05 -5.551493635e-05 6.512474873e-05 0.008380799225 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003488247976 -5.6118382e-05 1.555020345e-05 -5.6118382e-05 0.003361926968 -1.798839782e-05 1.555020345e-05 -1.798839782e-05 0.003536589039 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002679589591 -4.877096784e-05 1.728499989e-05 -4.877096784e-05 0.002470633991 -2.149633614e-05 1.728499989e-05 -2.149633614e-05 0.002615177222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0008582229021 -2.904210586e-05 1.59202032e-05 -2.904210586e-05 0.0005280902387 -1.80770981e-05 1.59202032e-05 -1.80770981e-05 0.0006242949399 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006038208781 -7.130510951e-07 2.121304642e-06 -7.130510951e-07 0.0005205872272 -2.829149496e-06 2.121304642e-06 -2.829149496e-06 0.0005234415259 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001029319215 -1.198442221e-06 1.129483412e-06 -1.198442221e-06 6.244060128e-05 -1.209993843e-06 1.129483412e-06 -1.209993843e-06 6.777096128e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001121597827 2.998183863e-06 -1.553874233e-06 2.998183863e-06 0.0001378106881 1.86089121e-06 -1.553874233e-06 1.86089121e-06 0.0001267879895 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.13050345 +0.7036994203 +0.1036197127 +0.001913561905 +0.001818701482 +0.002572536776 +0.001408538786 +0.0009139486516 +0.0004759916665 +0.0002858020775 +7.042287419e-05 +2.611984234e-05 +2.716760041e-06 +0.7175504312 0.01068672956 -0.005317799783 0.01068672956 0.854129585 0.007286349321 -0.005317799783 0.007286349321 0.8146378334 +0.6578631548 -0.006235296288 0.003116089609 -0.006235296288 0.6066070851 -0.00314370873 0.003116089609 -0.00314370873 0.6294976124 +0.3000643894 -0.006404584573 0.003316714497 -0.006404584573 0.2272137767 -0.003810901617 0.003316714497 -0.003810901617 0.2492978267 +0.08683608602 -0.002367635196 0.001342815845 -0.002367635196 0.05309469643 -0.001549313542 0.001342815845 -0.001549313542 0.06109765676 +0.03167466688 -0.0003246881475 0.0002285806023 -0.0003246881475 0.02376346593 -0.0002924848139 0.0002285806023 -0.0002924848139 0.02486141122 +0.01108774729 2.834492841e-05 5.718337856e-06 2.834492841e-05 0.009971362435 -1.329181809e-05 5.718337856e-06 -1.329181809e-05 0.009903665711 +0.007645058246 9.281742033e-05 -5.551493635e-05 9.281742033e-05 0.00872587346 6.512474873e-05 -5.551493635e-05 6.512474873e-05 0.008380799225 +0.003488247976 -5.6118382e-05 1.555020345e-05 -5.6118382e-05 0.003361926968 -1.798839782e-05 1.555020345e-05 -1.798839782e-05 0.003536589039 +0.002679589591 -4.877096784e-05 1.728499989e-05 -4.877096784e-05 0.002470633991 -2.149633614e-05 1.728499989e-05 -2.149633614e-05 0.002615177222 +0.0008582229021 -2.904210586e-05 1.59202032e-05 -2.904210586e-05 0.0005280902387 -1.80770981e-05 1.59202032e-05 -1.80770981e-05 0.0006242949399 +0.0006038208781 -7.130510951e-07 2.121304642e-06 -7.130510951e-07 0.0005205872272 -2.829149496e-06 2.121304642e-06 -2.829149496e-06 0.0005234415259 +0.0001029319215 -1.198442221e-06 1.129483412e-06 -1.198442221e-06 6.244060128e-05 -1.209993843e-06 1.129483412e-06 -1.209993843e-06 6.777096128e-05 +0.0001121597827 2.998183863e-06 -1.553874233e-06 2.998183863e-06 0.0001378106881 1.86089121e-06 -1.553874233e-06 1.86089121e-06 0.0001267879895 0.04445038643 -0.0008406958958 0.0007227064945 -0.00339133664 -0.0009397295315 -0.0008406958958 0.02092096862 0.0004644066886 0.03204413781 -0.0006916219952 0.0007227064945 0.0004644066886 0.02097559119 0.0007325695969 -0.02864988168 -0.00339133664 0.03204413781 0.0007325695969 0.04918494469 -0.001092247914 -0.0009397295315 -0.0006916219952 -0.02864988168 -0.001092247914 0.03913292776 0.05502675898 0.001158008758 0.0002408357441 -0.001076768635 -0.0002868706647 0.001158008758 0.01825479439 4.238563045e-05 0.02808072319 -9.605552408e-05 0.0002408357441 4.238563045e-05 0.02055900755 8.056968629e-05 -0.02837480986 -0.001076768635 0.02808072319 8.056968629e-05 0.04334865097 -0.0001738520517 -0.0002868706647 -9.605552408e-05 -0.02837480986 -0.0001738520517 0.03916333209 0.02840958238 0.001512170824 -0.0001824336712 0.0006805993754 0.0002563310704 0.001512170824 0.005751952676 -0.0001826610267 0.008955369913 0.0002520236678 -0.0001824336712 -0.0001826610267 0.007506475078 -0.0002849206537 -0.01061307782 0.0006805993754 0.008955369913 -0.0002849206537 0.01404395781 0.0003921236184 0.0002563310704 0.0002520236678 -0.01061307782 0.0003921236184 0.01500631064 @@ -37,32 +37,32 @@ 6.937661858e-06 5.111421669e-07 -1.358472062e-07 3.858168856e-07 2.010853579e-07 5.111421669e-07 5.034337865e-07 -1.030358423e-07 7.733865529e-07 1.436791705e-07 -1.358472062e-07 -1.030358423e-07 9.059804212e-07 -1.563055881e-07 -1.290275412e-06 3.858168856e-07 7.733865529e-07 -1.563055881e-07 1.212950366e-06 2.172543217e-07 2.010853579e-07 1.436791705e-07 -1.290275412e-06 2.172543217e-07 1.83777311e-06 7.488678236e-07 -1.781612548e-07 9.592039082e-08 -2.891304177e-07 -1.27847065e-07 -1.781612548e-07 1.319906699e-06 8.26747018e-08 1.977313563e-06 -1.176086473e-07 9.592039082e-08 8.26747018e-08 1.226665293e-06 1.281578912e-07 -1.617519346e-06 -2.891304177e-07 1.977313563e-06 1.281578912e-07 2.962930137e-06 -1.817814705e-07 -1.27847065e-07 -1.176086473e-07 -1.617519346e-06 -1.817814705e-07 2.132977195e-06 8.492124139e-07 -1.619535993e-07 4.26295023e-08 -2.919330171e-07 -5.859028764e-08 -1.619535993e-07 5.158222133e-07 3.773463719e-08 8.027006808e-07 -5.213746217e-08 4.26295023e-08 3.773463719e-08 2.787220916e-07 5.647643647e-08 -3.911607533e-07 -2.919330171e-07 8.027006808e-07 5.647643647e-08 1.251235569e-06 -7.805562084e-08 -5.859028764e-08 -5.213746217e-08 -3.911607533e-07 -7.805562084e-08 5.489623396e-07 -0.8913448505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.8028823542 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3833976383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09781774195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01369271898 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002659234652 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004337654806 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0005795982341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003659155549 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006196497858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000120858033 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001052217953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.763730526e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.8318460787 0.01941221711 -0.00503769042 0.01941221711 0.53736407 0.004284599852 -0.00503769042 0.004284599852 0.5152074925 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.167006288 -0.006497901312 0.002670994257 -0.006497901312 0.1116158065 -0.001255803223 0.002670994257 -0.001255803223 0.1208781654 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.07348669622 0.00128196498 0.0002231198562 0.00128196498 0.007728894494 -0.0001058647342 0.0002231198562 -0.0001058647342 0.008169650089 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.05886841128 0.0009057433774 0.0002466015512 0.0009057433774 1.818445079e-05 2.045214421e-06 0.0002466015512 2.045214421e-06 1.634214084e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.007722130075 0.0001769258378 1.239225085e-05 0.0001769258378 0.0004382458515 1.893333699e-05 1.239225085e-05 1.893333699e-05 0.0003304408184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0009247315691 5.269841953e-05 -8.814575441e-06 5.269841953e-05 0.000171774535 6.567447062e-06 -8.814575441e-06 6.567447062e-06 0.0001159933852 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0009796941212 2.523738237e-05 8.026050338e-07 2.523738237e-05 9.207744352e-06 2.824715293e-07 8.026050338e-07 2.824715293e-07 6.108657313e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002309217175 3.461359193e-06 1.304696407e-07 3.461359193e-06 7.074028644e-05 5.651625269e-07 1.304696407e-07 5.651625269e-07 6.976018751e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003498436318 1.856861639e-05 -4.667105532e-06 1.856861639e-05 0.0001083291885 2.922406416e-06 -4.667105532e-06 2.922406416e-06 9.087989867e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.940858828e-05 1.002283199e-05 -2.40704261e-06 1.002283199e-05 2.480553046e-05 1.145315209e-06 -2.40704261e-06 1.145315209e-06 1.593139379e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.600918798e-06 2.381011309e-06 -9.714556348e-07 2.381011309e-06 3.460316877e-05 6.955566489e-07 -9.714556348e-07 6.955566489e-07 2.938483916e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.383957981e-05 3.939412138e-06 -9.490065322e-07 3.939412138e-06 2.998789741e-05 6.257658055e-07 -9.490065322e-07 6.257658055e-07 2.622130284e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.846555982e-05 3.616319968e-06 -1.279524462e-06 3.616319968e-06 2.622029275e-05 7.682298099e-07 -1.279524462e-06 7.682298099e-07 2.135679097e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.8913448505 +0.8028823542 +0.3833976383 +0.09781774195 +0.01369271898 +0.002659234652 +0.0004337654806 +0.0005795982341 +0.0003659155549 +0.0006196497858 +0.000120858033 +0.0001052217953 +1.763730526e-05 +0.8318460787 0.01941221711 -0.00503769042 0.01941221711 0.53736407 0.004284599852 -0.00503769042 0.004284599852 0.5152074925 +0.167006288 -0.006497901312 0.002670994257 -0.006497901312 0.1116158065 -0.001255803223 0.002670994257 -0.001255803223 0.1208781654 +0.07348669622 0.00128196498 0.0002231198562 0.00128196498 0.007728894494 -0.0001058647342 0.0002231198562 -0.0001058647342 0.008169650089 +0.05886841128 0.0009057433774 0.0002466015512 0.0009057433774 1.818445079e-05 2.045214421e-06 0.0002466015512 2.045214421e-06 1.634214084e-05 +0.007722130075 0.0001769258378 1.239225085e-05 0.0001769258378 0.0004382458515 1.893333699e-05 1.239225085e-05 1.893333699e-05 0.0003304408184 +0.0009247315691 5.269841953e-05 -8.814575441e-06 5.269841953e-05 0.000171774535 6.567447062e-06 -8.814575441e-06 6.567447062e-06 0.0001159933852 +0.0009796941212 2.523738237e-05 8.026050338e-07 2.523738237e-05 9.207744352e-06 2.824715293e-07 8.026050338e-07 2.824715293e-07 6.108657313e-06 +0.0002309217175 3.461359193e-06 1.304696407e-07 3.461359193e-06 7.074028644e-05 5.651625269e-07 1.304696407e-07 5.651625269e-07 6.976018751e-05 +0.0003498436318 1.856861639e-05 -4.667105532e-06 1.856861639e-05 0.0001083291885 2.922406416e-06 -4.667105532e-06 2.922406416e-06 9.087989867e-05 +8.940858828e-05 1.002283199e-05 -2.40704261e-06 1.002283199e-05 2.480553046e-05 1.145315209e-06 -2.40704261e-06 1.145315209e-06 1.593139379e-05 +3.600918798e-06 2.381011309e-06 -9.714556348e-07 2.381011309e-06 3.460316877e-05 6.955566489e-07 -9.714556348e-07 6.955566489e-07 2.938483916e-05 +9.383957981e-05 3.939412138e-06 -9.490065322e-07 3.939412138e-06 2.998789741e-05 6.257658055e-07 -9.490065322e-07 6.257658055e-07 2.622130284e-05 +2.846555982e-05 3.616319968e-06 -1.279524462e-06 3.616319968e-06 2.622029275e-05 7.682298099e-07 -1.279524462e-06 7.682298099e-07 2.135679097e-05 0.304846749 -0.004041481039 -0.0008540097562 -0.002959326779 0.001044873911 -0.004041481039 0.4706021333 0.003560347285 0.1150998893 -0.0003423080457 -0.0008540097562 0.003560347285 0.4629272144 0.0005551832753 -0.08805929501 -0.002959326779 0.1150998893 0.0005551832753 0.02816420569 -2.9463122e-05 0.001044873911 -0.0003423080457 -0.08805929501 -2.9463122e-05 0.01675371913 0.1109958152 -0.01016948249 0.002543316277 -0.002825399326 -0.0003331396129 -0.01016948249 0.1850172175 -0.001883185038 0.02946335705 0.0007419331454 0.002543316277 -0.001883185038 0.2022752167 -0.0009075530965 -0.02442333474 -0.002825399326 0.02946335705 -0.0009075530965 0.004707035454 0.0001915198159 -0.0003331396129 0.0007419331454 -0.02442333474 0.0001915198159 0.002950385612 0.004713726904 -0.001384527912 0.0001248284928 -5.742636439e-05 -2.544629246e-05 -0.001384527912 0.02701639688 -0.000547327246 -3.159109428e-05 0.0001633240206 0.0001248284928 -0.000547327246 0.03013495366 -0.0001956184978 0.0005770799633 -5.742636439e-05 -3.159109428e-05 -0.0001956184978 4.156241542e-06 -3.084199308e-06 -2.544629246e-05 0.0001633240206 0.0005770799633 -3.084199308e-06 1.244730618e-05 @@ -76,32 +76,32 @@ 8.068408405e-06 -7.028775988e-07 -2.101116517e-07 -2.481261324e-07 5.891126812e-08 -7.028775988e-07 3.878230456e-05 2.746346091e-07 9.870039525e-06 -1.110470315e-08 -2.101116517e-07 2.746346091e-07 3.754734611e-05 2.613966851e-08 -7.585636832e-06 -2.481261324e-07 9.870039525e-06 2.613966851e-08 2.512560973e-06 5.865439768e-09 5.891126812e-08 -1.110470315e-08 -7.585636832e-06 5.865439768e-09 1.532623879e-06 4.075928529e-05 1.575441449e-06 -4.288052406e-07 7.498304668e-08 2.138456687e-07 1.575441449e-06 2.798970103e-05 6.565171636e-07 9.227431454e-06 -1.635009272e-07 -4.288052406e-07 6.565171636e-07 2.524378844e-05 2.128370647e-07 -6.884688771e-06 7.498304668e-08 9.227431454e-06 2.128370647e-07 3.046904405e-06 -5.3941102e-08 2.138456687e-07 -1.635009272e-07 -6.884688771e-06 -5.3941102e-08 1.877933534e-06 2.974086761e-06 6.674939998e-07 -5.603426919e-07 2.104117401e-07 1.655258879e-07 6.674939998e-07 2.440835763e-05 7.619184689e-07 7.611803452e-06 -1.927413668e-07 -5.603426919e-07 7.619184689e-07 2.011348567e-05 2.504228426e-07 -5.012608149e-06 2.104117401e-07 7.611803452e-06 2.504228426e-07 2.373778916e-06 -6.327194909e-08 1.655258879e-07 -1.927413668e-07 -5.012608149e-06 -6.327194909e-08 1.249456717e-06 -0.924429513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.7833495581 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2586420805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0327777028 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.004807430796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001568633798 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00128959996 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001803513219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0005810489513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002862070846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.931926907e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.225947187e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.515965152e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4043660874 0.1030342377 -0.001693427302 0.1030342377 0.7802389995 0.004829533972 -0.001693427302 0.004829533972 0.4185110402 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.07313322052 0.03841064428 0.0004506604323 0.03841064428 0.1419884271 -0.00184275247 0.0004506604323 -0.00184275247 0.04604551902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.009861846778 0.02874236534 -3.1386719e-05 0.02874236534 0.08795732921 -6.689184848e-05 -3.1386719e-05 -6.689184848e-05 0.0003477191025 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00352713921 0.007831429852 -9.38667537e-06 0.007831429852 0.02282916693 -9.735191093e-05 -9.38667537e-06 -9.735191093e-05 0.0004981483377 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002378297384 0.0004538433207 -1.934914525e-06 0.0004538433207 0.001838300959 1.011555758e-05 -1.934914525e-06 1.011555758e-05 0.0002172009605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001400565766 0.0002310551576 -5.918088861e-06 0.0002310551576 0.000812825804 1.319401427e-05 -5.918088861e-06 1.319401427e-05 0.0001563294358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001334687902 0.0002526256297 -1.136285674e-06 0.0002526256297 0.0009560747513 1.139468842e-05 -1.136285674e-06 1.139468842e-05 9.278568112e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.037732829e-05 5.495454546e-05 -1.968934743e-07 5.495454546e-05 0.0001863519596 8.767784785e-07 -1.968934743e-07 8.767784785e-07 1.541870197e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.472745507e-05 -2.212048493e-05 -6.541539128e-07 -2.212048493e-05 3.231353102e-05 1.587730933e-06 -6.541539128e-07 1.587730933e-06 8.310419846e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.779073292e-05 3.719569976e-05 -6.162729349e-07 3.719569976e-05 0.0002154213989 4.440064791e-06 -6.162729349e-07 4.440064791e-06 5.40647762e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.645042498e-05 6.28198582e-06 -4.385827406e-07 6.28198582e-06 7.682325125e-05 3.414624189e-06 -4.385827406e-07 3.414624189e-06 3.066584386e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.566450099e-05 -4.29846418e-06 -3.819226939e-07 -4.29846418e-06 2.401714704e-05 1.693105322e-06 -3.819226939e-07 1.693105322e-06 2.61655999e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.899629492e-05 5.965042273e-06 -2.944200232e-07 5.965042273e-06 5.875392288e-05 1.42815164e-06 -2.944200232e-07 1.42815164e-06 2.670441322e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.924429513 +0.7833495581 +0.2586420805 +0.0327777028 +0.004807430796 +0.001568633798 +0.00128959996 +0.001803513219 +0.0005810489513 +0.0002862070846 +4.931926907e-05 +5.225947187e-05 +1.515965152e-05 +0.4043660874 0.1030342377 -0.001693427302 0.1030342377 0.7802389995 0.004829533972 -0.001693427302 0.004829533972 0.4185110402 +0.07313322052 0.03841064428 0.0004506604323 0.03841064428 0.1419884271 -0.00184275247 0.0004506604323 -0.00184275247 0.04604551902 +0.009861846778 0.02874236534 -3.1386719e-05 0.02874236534 0.08795732921 -6.689184848e-05 -3.1386719e-05 -6.689184848e-05 0.0003477191025 +0.00352713921 0.007831429852 -9.38667537e-06 0.007831429852 0.02282916693 -9.735191093e-05 -9.38667537e-06 -9.735191093e-05 0.0004981483377 +0.0002378297384 0.0004538433207 -1.934914525e-06 0.0004538433207 0.001838300959 1.011555758e-05 -1.934914525e-06 1.011555758e-05 0.0002172009605 +0.0001400565766 0.0002310551576 -5.918088861e-06 0.0002310551576 0.000812825804 1.319401427e-05 -5.918088861e-06 1.319401427e-05 0.0001563294358 +0.0001334687902 0.0002526256297 -1.136285674e-06 0.0002526256297 0.0009560747513 1.139468842e-05 -1.136285674e-06 1.139468842e-05 9.278568112e-05 +3.037732829e-05 5.495454546e-05 -1.968934743e-07 5.495454546e-05 0.0001863519596 8.767784785e-07 -1.968934743e-07 8.767784785e-07 1.541870197e-05 +5.472745507e-05 -2.212048493e-05 -6.541539128e-07 -2.212048493e-05 3.231353102e-05 1.587730933e-06 -6.541539128e-07 1.587730933e-06 8.310419846e-05 +3.779073292e-05 3.719569976e-05 -6.162729349e-07 3.719569976e-05 0.0002154213989 4.440064791e-06 -6.162729349e-07 4.440064791e-06 5.40647762e-05 +1.645042498e-05 6.28198582e-06 -4.385827406e-07 6.28198582e-06 7.682325125e-05 3.414624189e-06 -4.385827406e-07 3.414624189e-06 3.066584386e-05 +1.566450099e-05 -4.29846418e-06 -3.819226939e-07 -4.29846418e-06 2.401714704e-05 1.693105322e-06 -3.819226939e-07 1.693105322e-06 2.61655999e-05 +1.899629492e-05 5.965042273e-06 -2.944200232e-07 5.965042273e-06 5.875392288e-05 1.42815164e-06 -2.944200232e-07 1.42815164e-06 2.670441322e-05 0.2520511442 0.1464236888 3.545790671e-05 -0.1887823307 -0.003198253923 0.1464236888 0.3786309789 9.421852489e-05 0.09425166671 -0.001540814132 3.545790671e-05 9.421852489e-05 0.01112468808 -0.0001619493729 0.07587983185 -0.1887823307 0.09425166671 -0.0001619493729 0.283046763 0.001342912246 -0.003198253923 -0.001540814132 0.07587983185 0.001342912246 0.5176139884 0.0558975612 0.05337989203 0.0003627813462 -0.0361726509 0.002373283911 0.05337989203 0.1256214623 7.116153554e-05 0.01503008692 0.0005286959494 0.0003627813462 7.116153554e-05 0.006467340428 -0.0003348535423 0.02784161591 -0.0361726509 0.01503008692 -0.0003348535423 0.05633181039 -0.00233386617 0.002373283911 0.0005286959494 0.02784161591 -0.00233386617 0.119873213 0.005527387624 -0.001800622873 1.971930451e-05 -0.009224649179 7.213056777e-05 -0.001800622873 0.01332674381 1.101097991e-05 0.008815932342 0.0001130261929 1.971930451e-05 1.101097991e-05 0.001195245005 1.699531131e-06 0.002522892893 -0.009224649179 0.008815932342 1.699531131e-06 0.01806456729 -4.810365636e-06 7.213056777e-05 0.0001130261929 0.002522892893 -4.810365636e-06 0.005326679527 @@ -115,32 +115,32 @@ 1.337259926e-05 8.575426307e-06 -8.656630404e-08 -7.852927171e-06 -1.625027895e-06 8.575426307e-06 1.03049306e-05 -1.203577197e-08 -1.626848517e-06 -3.770405241e-07 -8.656630404e-08 -1.203577197e-08 2.621564363e-07 7.102047024e-08 2.933081722e-06 -7.852927171e-06 -1.626848517e-06 7.102047024e-08 7.030157633e-06 1.307054742e-06 -1.625027895e-06 -3.770405241e-07 2.933081722e-06 1.307054742e-06 3.285518637e-05 1.719004259e-05 1.253365748e-05 -4.941471792e-08 -9.726457975e-06 -8.314837785e-07 1.253365748e-05 1.942888082e-05 -8.654620892e-09 2.791177265e-07 -2.602280917e-07 -4.941471792e-08 -8.654620892e-09 4.904513565e-07 3.628200594e-08 4.398457139e-06 -9.726457975e-06 2.791177265e-07 3.628200594e-08 1.078649837e-05 6.162407315e-07 -8.314837785e-07 -2.602280917e-07 4.398457139e-06 6.162407315e-07 3.945618734e-05 1.830708712e-05 4.977407758e-06 -3.611469325e-08 -1.605536936e-05 -8.409244544e-07 4.977407758e-06 1.965406377e-05 -1.075581155e-08 9.223655744e-06 -1.919654421e-07 -3.611469325e-08 -1.075581155e-08 2.991525065e-07 2.166124628e-08 3.226774208e-06 -1.605536936e-05 9.223655744e-06 2.166124628e-08 2.41774869e-05 6.622430645e-07 -8.409244544e-07 -1.919654421e-07 3.226774208e-06 6.622430645e-07 3.481711208e-05 -0.9133660356 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.7920859277 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2892329877 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04432582998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005725684903 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001427271592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0008702629023 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001594513193 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006418294882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004024110325 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.890598857e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.743628621e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.550085001e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4304101667 -0.04901838302 -0.09484434597 -0.04901838302 0.5457220903 0.15144847 -0.09484434597 0.15144847 0.692031604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09191718664 -0.01970267043 -0.0337837648 -0.01970267043 0.07149681977 0.03234968296 -0.0337837648 0.03234968296 0.1235141765 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01231705533 -0.01470086289 -0.02646965631 -0.01470086289 0.02101551034 0.03573508598 -0.02646965631 0.03573508598 0.06540006701 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005180987084 -0.005691422978 -0.01028586887 -0.005691422978 0.007382993651 0.01284892132 -0.01028586887 0.01284892132 0.02374560566 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001559839789 -0.0001285159681 -0.0002366096485 -0.0001285159681 0.0004918853469 0.0004317682412 -0.0002366096485 0.0004317682412 0.0009350704784 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001425066873 -7.539764123e-05 -0.0001613898281 -7.539764123e-05 0.0003440239191 0.0002016028949 -0.0001613898281 0.0002016028949 0.0004992721237 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001840681034 -0.0002039415499 -0.0003622268784 -0.0002039415499 0.0003934056769 0.0005389088578 -0.0003622268784 0.0005389088578 0.0009839874358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.415257894e-05 -9.750710394e-06 -1.849096625e-05 -9.750710394e-06 3.371149104e-05 2.373254333e-05 -1.849096625e-05 2.373254333e-05 5.720798668e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.538998571e-05 1.719108993e-05 2.821100612e-05 1.719108993e-05 8.919945556e-05 -2.702362203e-05 2.821100612e-05 -2.702362203e-05 4.034601397e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.814873193e-05 -2.889308678e-05 -5.203235664e-05 -2.889308678e-05 0.0001142423139 9.825603334e-05 -5.203235664e-05 9.825603334e-05 0.0002034079588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.298535209e-05 2.118768599e-06 2.394242811e-06 2.118768599e-06 4.228000143e-05 8.783978758e-06 2.394242811e-06 8.783978758e-06 3.290239829e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.733703755e-05 2.019698989e-06 2.368203456e-06 2.019698989e-06 3.393734849e-05 2.683538224e-06 2.368203456e-06 2.683538224e-06 2.584724162e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.855796741e-05 -3.797475562e-06 -7.508361172e-06 -3.797475562e-06 4.087182411e-05 1.797784536e-05 -7.508361172e-06 1.797784536e-05 5.250896896e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.9133660356 +0.7920859277 +0.2892329877 +0.04432582998 +0.005725684903 +0.001427271592 +0.0008702629023 +0.001594513193 +0.0006418294882 +0.0004024110325 +5.890598857e-05 +4.743628621e-05 +1.550085001e-05 +0.4304101667 -0.04901838302 -0.09484434597 -0.04901838302 0.5457220903 0.15144847 -0.09484434597 0.15144847 0.692031604 +0.09191718664 -0.01970267043 -0.0337837648 -0.01970267043 0.07149681977 0.03234968296 -0.0337837648 0.03234968296 0.1235141765 +0.01231705533 -0.01470086289 -0.02646965631 -0.01470086289 0.02101551034 0.03573508598 -0.02646965631 0.03573508598 0.06540006701 +0.005180987084 -0.005691422978 -0.01028586887 -0.005691422978 0.007382993651 0.01284892132 -0.01028586887 0.01284892132 0.02374560566 +0.0001559839789 -0.0001285159681 -0.0002366096485 -0.0001285159681 0.0004918853469 0.0004317682412 -0.0002366096485 0.0004317682412 0.0009350704784 +0.0001425066873 -7.539764123e-05 -0.0001613898281 -7.539764123e-05 0.0003440239191 0.0002016028949 -0.0001613898281 0.0002016028949 0.0004992721237 +0.0001840681034 -0.0002039415499 -0.0003622268784 -0.0002039415499 0.0003934056769 0.0005389088578 -0.0003622268784 0.0005389088578 0.0009839874358 +2.415257894e-05 -9.750710394e-06 -1.849096625e-05 -9.750710394e-06 3.371149104e-05 2.373254333e-05 -1.849096625e-05 2.373254333e-05 5.720798668e-05 +5.538998571e-05 1.719108993e-05 2.821100612e-05 1.719108993e-05 8.919945556e-05 -2.702362203e-05 2.821100612e-05 -2.702362203e-05 4.034601397e-05 +3.814873193e-05 -2.889308678e-05 -5.203235664e-05 -2.889308678e-05 0.0001142423139 9.825603334e-05 -5.203235664e-05 9.825603334e-05 0.0002034079588 +1.298535209e-05 2.118768599e-06 2.394242811e-06 2.118768599e-06 4.228000143e-05 8.783978758e-06 2.394242811e-06 8.783978758e-06 3.290239829e-05 +1.733703755e-05 2.019698989e-06 2.368203456e-06 2.019698989e-06 3.393734849e-05 2.683538224e-06 2.368203456e-06 2.683538224e-06 2.584724162e-05 +1.855796741e-05 -3.797475562e-06 -7.508361172e-06 -3.797475562e-06 4.087182411e-05 1.797784536e-05 -7.508361172e-06 1.797784536e-05 5.250896896e-05 0.2668033768 -0.06963387889 -0.132503982 0.08427212726 -0.1600608533 -0.06963387889 0.09290715239 0.1430804294 -0.04109519639 -0.07734910289 -0.132503982 0.1430804294 0.275768261 0.07842414558 -0.04604356314 0.08427212726 -0.04109519639 0.07842414558 0.4491992289 0.11368441 -0.1600608533 -0.07734910289 -0.04604356314 0.11368441 0.3287629287 0.06950076946 -0.03169854282 -0.05618933577 0.02501720741 -0.0305799873 -0.03169854282 0.03808289961 0.05352425608 -0.02137440729 -0.02143294093 -0.05618933577 0.05352425608 0.1059666443 0.02119763912 -0.004572757389 0.02501720741 -0.02137440729 0.02119763912 0.1157160551 0.02796877593 -0.0305799873 -0.02143294093 -0.004572757389 0.02796877593 0.07208330438 0.006080583698 -0.001110271113 -0.001769819712 0.004171278734 -0.00618692418 -0.001110271113 0.005052941786 0.005656209763 -0.001697877402 -0.003976361401 -0.001769819712 0.005656209763 0.01188265234 0.003722923046 -0.002923788025 0.004171278734 -0.001697877402 0.003722923046 0.009529783989 -0.002311377703 -0.00618692418 -0.003976361401 -0.002923788025 -0.002311377703 0.01183005081 @@ -154,32 +154,32 @@ 1.46048195e-05 -4.658666202e-06 -9.483331446e-06 7.971068129e-08 -7.702283684e-06 -4.658666202e-06 2.676067924e-06 4.031948139e-06 -3.622024121e-06 -7.951092432e-07 -9.483331446e-06 4.031948139e-06 8.026244505e-06 7.433817334e-07 3.679413271e-06 7.971068129e-08 -3.622024121e-06 7.433817334e-07 2.541757111e-05 1.518916382e-05 -7.702283684e-06 -7.951092432e-07 3.679413271e-06 1.518916382e-05 1.496006353e-05 2.021966351e-05 -4.407184767e-06 -8.864541668e-06 4.89290783e-06 -1.253205892e-05 -4.407184767e-06 5.357186379e-06 8.5524371e-06 -2.487422025e-06 -4.861420934e-06 -8.864541668e-06 8.5524371e-06 1.638903973e-05 4.713156277e-06 -2.705567833e-06 4.89290783e-06 -2.487422025e-06 4.713156277e-06 3.360427284e-05 1.090128776e-05 -1.253205892e-05 -4.861420934e-06 -2.705567833e-06 1.090128776e-05 2.500712235e-05 1.696840607e-05 -1.732145394e-06 -3.892760857e-06 4.981097699e-06 -1.282861019e-05 -1.732145394e-06 3.716703165e-06 6.100850404e-06 -8.490211033e-07 -4.715421156e-06 -3.892760857e-06 6.100850404e-06 1.153814037e-05 4.598101877e-06 -4.311393815e-06 4.981097699e-06 -8.490211033e-07 4.598101877e-06 2.868450371e-05 7.410223201e-06 -1.282861019e-05 -4.715421156e-06 -4.311393815e-06 7.410223201e-06 2.408777483e-05 -0.9081279987 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.7958186014 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.3060299943 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.05179900183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.006452370744 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001463395799 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006919037203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001425663026 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006436676917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004703900621 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.597024404e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.87731872e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.623013613e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.4404721354 -0.04784431607 0.089478133 -0.04784431607 0.5578697117 -0.1438909094 0.089478133 -0.1438909094 0.7064906923 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1010852819 -0.01884765947 0.03325525987 -0.01884765947 0.07813426263 -0.03032982363 0.03325525987 -0.03032982363 0.1233671307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01298403057 -0.0143807561 0.02585235108 -0.0143807561 0.02106093676 -0.03470084214 0.02585235108 -0.03470084214 0.0641199842 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005805836351 -0.006600572036 0.01189764718 -0.006600572036 0.008457431596 -0.01484551467 0.01189764718 -0.01484551467 0.02708236001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000179247916 -0.000159647719 0.000289865785 -0.000159647719 0.0005398881756 -0.0004845266146 0.000289865785 -0.0004845266146 0.001074588381 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001291257152 -5.122195605e-05 0.0001053271335 -5.122195605e-05 0.0003138857586 -0.0001261237767 0.0001053271335 -0.0001261237767 0.000408087954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001959867892 -0.0002295865625 0.000407382618 -0.0002295865625 0.000398524844 -0.0005873485051 0.000407382618 -0.0005873485051 0.001078144376 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.50291111e-05 -6.626328395e-06 1.273061394e-05 -6.626328395e-06 3.186309186e-05 -1.515440517e-05 1.273061394e-05 -1.515440517e-05 4.728104374e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.630816383e-05 1.771692243e-05 -3.07031826e-05 1.771692243e-05 9.742535997e-05 2.747499881e-05 -3.07031826e-05 2.747499881e-05 5.139843367e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.547001694e-05 -3.048655787e-05 5.393496234e-05 -3.048655787e-05 0.0001097233837 -9.974137591e-05 5.393496234e-05 -9.974137591e-05 0.0002116278191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.242039165e-05 3.816977925e-06 -6.08513134e-06 3.816977925e-06 3.663706529e-05 -1.206850265e-06 -6.08513134e-06 -1.206850265e-06 2.614854483e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.855539912e-05 8.647513125e-07 -1.042706851e-06 8.647513125e-07 3.49934403e-05 -4.172891291e-06 -1.042706851e-06 -4.172891291e-06 3.275201661e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.755928333e-05 -3.650499391e-06 6.708232588e-06 -3.650499391e-06 3.989943342e-05 -1.686745907e-05 6.708232588e-06 -1.686745907e-05 5.363736623e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.9081279987 +0.7958186014 +0.3060299943 +0.05179900183 +0.006452370744 +0.001463395799 +0.0006919037203 +0.001425663026 +0.0006436676917 +0.0004703900621 +6.597024404e-05 +4.87731872e-05 +1.623013613e-05 +0.4404721354 -0.04784431607 0.089478133 -0.04784431607 0.5578697117 -0.1438909094 0.089478133 -0.1438909094 0.7064906923 +0.1010852819 -0.01884765947 0.03325525987 -0.01884765947 0.07813426263 -0.03032982363 0.03325525987 -0.03032982363 0.1233671307 +0.01298403057 -0.0143807561 0.02585235108 -0.0143807561 0.02106093676 -0.03470084214 0.02585235108 -0.03470084214 0.0641199842 +0.005805836351 -0.006600572036 0.01189764718 -0.006600572036 0.008457431596 -0.01484551467 0.01189764718 -0.01484551467 0.02708236001 +0.000179247916 -0.000159647719 0.000289865785 -0.000159647719 0.0005398881756 -0.0004845266146 0.000289865785 -0.0004845266146 0.001074588381 +0.0001291257152 -5.122195605e-05 0.0001053271335 -5.122195605e-05 0.0003138857586 -0.0001261237767 0.0001053271335 -0.0001261237767 0.000408087954 +0.0001959867892 -0.0002295865625 0.000407382618 -0.0002295865625 0.000398524844 -0.0005873485051 0.000407382618 -0.0005873485051 0.001078144376 +2.50291111e-05 -6.626328395e-06 1.273061394e-05 -6.626328395e-06 3.186309186e-05 -1.515440517e-05 1.273061394e-05 -1.515440517e-05 4.728104374e-05 +5.630816383e-05 1.771692243e-05 -3.07031826e-05 1.771692243e-05 9.742535997e-05 2.747499881e-05 -3.07031826e-05 2.747499881e-05 5.139843367e-05 +3.547001694e-05 -3.048655787e-05 5.393496234e-05 -3.048655787e-05 0.0001097233837 -9.974137591e-05 5.393496234e-05 -9.974137591e-05 0.0002116278191 +1.242039165e-05 3.816977925e-06 -6.08513134e-06 3.816977925e-06 3.663706529e-05 -1.206850265e-06 -6.08513134e-06 -1.206850265e-06 2.614854483e-05 +1.855539912e-05 8.647513125e-07 -1.042706851e-06 8.647513125e-07 3.49934403e-05 -4.172891291e-06 -1.042706851e-06 -4.172891291e-06 3.275201661e-05 +1.755928333e-05 -3.650499391e-06 6.708232588e-06 -3.650499391e-06 3.989943342e-05 -1.686745907e-05 6.708232588e-06 -1.686745907e-05 5.363736623e-05 0.2673587463 -0.07017884741 0.1336997809 0.0845924116 0.154058489 -0.07017884741 0.09017980414 -0.1395218089 -0.04146144349 0.07516343506 0.1336997809 -0.1395218089 0.2691660903 -0.0745378444 -0.04376557577 0.0845924116 -0.04146144349 -0.0745378444 0.4488262604 -0.1187566133 0.154058489 0.07516343506 -0.04376557577 -0.1187566133 0.3196849721 0.07415751787 -0.03326978607 0.06012807046 0.02358191491 0.03288793944 -0.03326978607 0.0396562418 -0.05599762751 -0.02185044299 0.02275429222 0.06012807046 -0.05599762751 0.1110683927 -0.02247502174 -0.004659443176 0.02358191491 -0.02185044299 -0.02247502174 0.1189978482 -0.03126250096 0.03288793944 0.02275429222 -0.004659443176 -0.03126250096 0.0771792864 0.006657165399 -0.002143791304 0.00367814976 0.003795605035 0.005728734231 -0.002143791304 0.005474109757 -0.005864340724 -0.002775464485 0.003362648342 0.00367814976 -0.005864340724 0.01262756532 -0.003106497016 -0.001006921576 0.003795605035 -0.002775464485 -0.003106497016 0.01019760019 0.0005657695989 0.005728734231 0.003362648342 -0.001006921576 0.0005657695989 0.01076457441 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/psialpha_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/phialpha_ref.dat similarity index 99% rename from tests/deepks/604_NO_deepks_ut_CH4_gamma/psialpha_ref.dat rename to tests/deepks/604_NO_deepks_ut_CH4_gamma/phialpha_ref.dat index a3cdcc0ece..a1cb9ed2df 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/psialpha_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/phialpha_ref.dat @@ -929,7 +929,7 @@ iw : 0 6.207409128e-05 4.125655865e-06 1.214945561e-06 0.005040972909 0.0001709253043 2.464431444e-05 1.637945209e-06 4.823510067e-07 0.001956341665 6.633407885e-05 9.564165493e-06 6.356670657e-07 1.871946921e-07 -0.002593366414 -8.793380791e-05 -1.267845285e-05 -8.426532278e-07 -2.48149102e-07 --2.63829267e-06 -8.94571317e-08 -1.289808839e-08 -8.572509547e-10 -2.5244792e-10 -0.001218606244 +-2.63829267e-06 -8.94571317e-08 -1.289808839e-08 -8.572509547e-10 -2.524479199e-10 -0.001218606244 -4.131953233e-05 -5.957523676e-06 -3.959573469e-07 -1.166036714e-07 0.0008951925984 3.035347939e-05 4.376418655e-06 2.908717135e-07 8.565748296e-08 iw : 1 @@ -1604,118 +1604,12 @@ iw : 32 0.004304957209 4.044671612e-05 -5.78789118e-05 0.0009112630705 0.009366400349 -0.008775948668 -0.0001804076845 5.670256363e-05 0.01399342311 -0.00917603485 -0.0008468178822 2.145114011e-05 2.978464256e-05 -0.004937983695 -0.00481997463 0.002399108628 1.90805991e-05 -3.442012454e-05 -0.001067730046 0.005570123149 -0.0003943854652 8.834828398e-06 1.314850626e-05 -0.002112759376 +0.001067730046 0.005570123149 -0.0003943854652 8.834828398e-06 1.314850626e-05 -0.002112759377 -0.002127790068 -0.0001492843046 -1.73974511e-05 -8.000502557e-06 0.002556710737 0.001294701431 -0.0003328455763 8.681435361e-06 1.186338656e-05 -0.001981346896 -0.001919822343 0.000733766008 -7.939863149e-07 -1.46754602e-05 0.001399403931 0.002374893226 -0.000639575435 1.17523491e-06 1.309393772e-05 -0.001297955229 -0.002118959376 -ad : 2 3.113220902 -iw : 13 -0.4453780656 -0.04248099671 -0.05300508346 -0.006997596528 0.02632106263 -0.0127711382 -0.004689370718 -0.006458479976 0.008186629169 -0.006705924414 0.005096701564 -0.004843979269 -0.004820582158 0.4156524308 0.3576329182 0.0007500149687 0.05047467781 0.04342908878 -9.107793216e-05 -0.04319071679 -0.03716187116 -7.793454746e-05 -0.02468757222 -0.02124151777 --4.454695157e-05 0.02415558817 0.02078379157 4.358702455e-05 -0.006681456978 -0.005748815067 --1.205620941e-05 0.003732703952 0.003211668471 6.735396283e-06 -0.007653635344 -0.006585290353 --1.381043547e-05 0.007873595917 0.006774547376 1.420733853e-05 -0.005495328052 -0.004728253853 --9.915924919e-06 0.004472531143 0.003848225695 8.070361332e-06 -0.004676287001 -0.004023539963 --8.438024148e-06 0.004523200162 0.003891821997 8.161789939e-06 0.1609272551 0.3807722104 -0.0007985418649 0.1638100342 0.0006870761152 0.04947683461 0.1170678246 0.000245510456 -0.05036314058 0.0002112404844 -0.01061893516 -0.02512560977 -5.269253043e-05 -0.01080915803 --4.533735888e-05 -0.01520972766 -0.03598794757 -7.547263688e-05 -0.01548218794 -6.493766756e-05 -0.007159666468 0.01694058614 3.552719153e-05 0.007287921544 3.05680714e-05 -7.098321269e-06 --1.679543641e-05 -3.522278872e-08 -7.225477434e-06 -3.030615914e-08 0.001370981629 0.003243898648 -6.802988258e-06 0.001395540783 5.853382208e-06 -0.003414253239 -0.008078511946 -1.69419664e-05 --0.003475414651 -1.457709479e-05 0.002709530728 0.006411058238 1.344504211e-05 0.002758068055 -1.156829429e-05 -0.001604544236 -0.003796534373 -7.96195614e-06 -0.001633287327 -6.850573695e-06 -0.001561170333 0.00369390678 7.746729222e-06 0.001589136443 6.665389572e-06 -0.001750954049 --0.004142956662 -8.688460578e-06 -0.00178231986 -7.475667844e-06 0.001584803463 0.003749825455 -7.863999867e-06 0.001613192926 6.766290806e-06 -iw : 14 --0.4488809511 0.07256955794 -0.1503891001 0.06003264112 -0.001313432831 0.02317466715 --0.03549746761 0.02526030952 -0.01735345527 0.01699997008 -0.01731798903 0.01537389874 --0.01333755785 -0.1887064165 -0.1623655281 -0.00034050718 0.1184091511 0.1018808194 -0.0002136608116 -0.142083839 -0.122250838 -0.0002563800863 0.009116400631 0.007843873196 -1.644989041e-05 0.003949655291 0.003398336309 7.126869398e-06 0.03126765751 0.02690311128 -5.642024304e-05 -0.03132851012 -0.02695546968 -5.65300472e-05 0.01735230475 0.0149301554 -3.131098807e-05 -0.01324261306 -0.01139412164 -2.389534449e-05 0.01499628536 0.01290300476 -2.705972023e-05 -0.01452471925 -0.01249726297 -2.620881305e-05 0.01217845536 0.0104785061 -2.197514832e-05 -0.01084991834 -0.009335415048 -1.957789865e-05 0.00825326135 0.01952815616 -4.095375085e-05 0.008401106597 3.523715572e-05 0.08282597614 0.195975691 0.0004109932119 -0.08430968378 0.0003536240638 -0.041972557 -0.09931184931 -0.0002082732594 -0.04272443469 --0.0001792011017 -0.0177223145 -0.04193301415 -8.794041794e-05 -0.01803978414 -7.566511335e-05 -0.001995433358 0.004721422546 9.901598546e-06 0.002031178662 8.519467999e-06 0.01362991905 -0.03224994052 6.763342214e-05 0.01387407935 5.819270221e-05 -0.008458664639 -0.02001416373 --4.197298855e-05 -0.008610189389 -3.611412148e-05 0.002907544201 0.006879580664 1.442761058e-05 -0.002959628653 1.241370937e-05 -0.003427798662 -0.008110561959 -1.700918054e-05 -0.00348920272 --1.463492674e-05 0.004776574463 0.01130191909 2.370198061e-05 0.00486213989 2.039350155e-05 --0.00412768004 -0.009766560996 -2.048208251e-05 -0.004201621462 -1.76230581e-05 0.00314342179 -0.007437693898 1.55980657e-05 0.003199731648 1.342078463e-05 -0.00290123245 -0.006864646342 --1.439629086e-05 -0.002953203836 -1.238676146e-05 -iw : 15 --0.004048104822 -0.2074303041 0.0704182421 0.08366575838 -0.0182791772 -0.0314242787 -0.01040363384 0.002408491651 0.001726673523 -0.004759049263 0.003817998795 -0.002712242921 -0.002393966844 -0.0415893015 -0.1004615398 -0.0002106843492 -0.1699789917 -0.2292463684 --0.0004807672869 -0.07771057144 0.001069342308 2.242586453e-06 0.1031395822 0.07665558536 -0.0001607593528 0.01294748188 0.01844705884 3.868651221e-05 -0.02237171618 -0.0338047795 --7.089417487e-05 -0.00779001731 0.006048801057 1.26853293e-05 0.01054927099 -0.0004929080823 --1.033709206e-06 -0.004135083845 0.004788165648 1.004156979e-05 0.003033292895 -0.005167105586 --1.083626908e-05 -0.004061441963 0.003608238953 7.567069718e-06 0.004012177493 -0.002983676973 --6.257260665e-06 -0.003005106711 0.00329385878 6.90776286e-06 0.1750159528 0.01272320181 -2.66826439e-05 -0.07390394433 -0.0003099787825 -0.004528059057 -0.2274740421 -0.0004770504276 --0.140726767 -0.000590256884 -0.09456572434 -0.1450507261 -0.0003041951963 -0.04683735592 --0.0001964521203 0.02061431372 0.08502539764 0.0001783122238 0.04374702824 0.0001834902138 -0.01805850348 0.03882869296 8.143014654e-05 0.01593307183 6.682883102e-05 0.0009169799059 --0.01433457335 -3.006195469e-05 -0.009430672292 -3.955551144e-05 -0.009537286536 -0.01283218749 --2.691120479e-05 -0.003595455897 -1.508058943e-05 0.004692936429 0.006016252129 1.261706885e-05 -0.00158206658 6.635736111e-06 -0.001628280528 0.001171936792 2.457743937e-06 0.001497841112 -6.282465277e-06 0.001955415397 -0.0003799328082 -7.967815007e-07 -0.001153564322 -4.838448978e-06 --0.002386185987 -0.001284397013 -2.693591492e-06 0.0003099915271 1.300212012e-06 0.002224321495 -0.001510865899 3.168533941e-06 -9.203737545e-05 -3.860366837e-07 -0.001921112456 -0.001088885366 --2.283571457e-06 0.000215148108 9.024058076e-07 -iw : 16 --0.003483043604 -0.1784758117 0.0605887986 0.07198713902 -0.01572764887 -0.02703787025 -0.00895142589 0.002072298473 0.001485653024 -0.004094749722 0.003285057297 -0.002333650133 -0.002059801135 -0.1004615398 -0.01126813693 -0.0001812756357 -0.2292463684 -0.1007881663 --0.0004136586125 0.001069342308 -0.07803331888 1.929551419e-06 0.07665558536 0.08000349823 -0.0001383195001 0.01844705884 0.007379815806 3.328639322e-05 -0.0338047795 -0.01216880385 --6.099829752e-05 0.006048801057 -0.009615658173 1.091462722e-05 -0.0004929080823 0.01069803984 --8.894172451e-07 0.004788165648 -0.005580241454 8.639901133e-06 -0.005167105586 0.004592821638 --9.323671045e-06 0.003608238953 -0.00515047571 6.510808128e-06 -0.002983676973 0.004912706797 --5.383830877e-06 0.00329385878 -0.003999254664 5.943531678e-06 -0.1689963899 0.06663607673 --0.0003099787825 0.1209230757 0.0001202400162 -0.1764805025 -0.1656479884 -0.000590256884 --0.0214414876 -0.000298899902 -0.01870262051 -0.1357229319 -0.0001964521203 -0.07647798547 --0.000244902286 0.04659876333 0.06812765295 0.0001834902138 0.02097708493 0.0001229314584 -0.01243276994 0.03394979088 6.682883102e-05 0.01550170577 6.125996014e-05 -0.01235170972 --0.01004382678 -3.955551144e-05 -0.000527494962 -1.812336431e-05 -0.0004557004669 -0.01239151653 --1.508058943e-05 -0.007568221163 -2.235960191e-05 -1.301881484e-05 0.005882351006 6.635736111e-06 -0.003700010339 1.061428005e-05 0.002599620958 0.0003112226115 6.282465277e-06 -0.001020993786 -5.615788574e-07 -0.002303845493 0.0003677356365 -4.838448978e-06 0.001308955589 6.635525536e-07 -0.001419593729 -0.001710247988 1.300212012e-06 -0.001738243482 -3.086019704e-06 -0.001073612868 -0.001820547362 -3.860366837e-07 0.00164561422 3.285047005e-06 0.001099263313 -0.001416478827 -9.024058076e-07 -0.001403875295 -2.555934344e-06 -iw : 17 --7.304514508e-06 -0.0003742930908 0.000127064662 0.000150968854 -3.298346286e-05 -5.670285474e-05 -1.877261031e-05 4.345950261e-06 3.115658402e-06 -8.587362708e-06 6.889304704e-06 -4.894047619e-06 -4.31974129e-06 -0.0002106843492 -0.0001812756357 0.0751699372 -0.0004807672869 -0.0004136586125 -0.09645761177 2.242586453e-06 1.929551419e-06 -0.07895339127 0.0001607593528 0.0001383195001 -0.01404829604 3.868651221e-05 3.328639322e-05 -0.008492210866 -7.089417487e-05 -6.099829752e-05 -0.01691715324 1.26853293e-05 1.091462722e-05 -0.01482010472 -1.033709206e-06 -8.894172451e-07 -0.01112214269 1.004156979e-05 8.639901133e-06 -0.009700025184 -1.083626908e-05 -9.323671045e-06 -0.009038648932 7.567069718e-06 6.510808128e-06 -0.008255039175 -6.257260665e-06 -5.383830877e-06 -0.007479891133 6.90776286e-06 5.943531678e-06 -0.006833322407 -0.0003544131864 -0.0003099787825 -0.2144439654 -0.0005203042735 0.1845104598 -0.0003701085997 -0.000590256884 0.1158055456 --0.0004628963733 0.09964064236 -3.9222467e-05 -0.0001964521203 -0.04204822001 -8.642395319e-06 --0.03617885164 9.77252603e-05 0.0001834902138 -0.01936640352 0.0001138843506 -0.01666311295 -2.607356058e-05 6.682883102e-05 0.002083647218 2.499054526e-05 0.001792797972 -2.590356398e-05 --3.955551144e-05 0.0088175178 -3.292769854e-05 0.007586710406 -9.556787254e-07 -1.508058943e-05 --0.005200604739 2.896318772e-06 -0.004474669968 -2.730259298e-08 6.635736111e-06 0.002718217846 --2.050078277e-06 0.002338791039 5.451832123e-06 6.282465277e-06 -0.002684459612 7.546685151e-06 --0.002309745002 -4.831542393e-06 -4.838448978e-06 0.002674864279 -6.908142849e-06 0.00230148905 -2.977121211e-06 1.300212012e-06 -0.002330231043 4.764096986e-06 -0.002004961997 -2.251542519e-06 --3.860366837e-07 0.002004622113 -3.783272974e-06 0.001724803714 2.305335715e-06 9.024058076e-07 --0.001846775043 3.7205957e-06 -0.00158898998 -ad : 3 2.100474535 +ad : 2 2.100474535 iw : 0 0.5976484872 0.2143416338 -0.006476841211 -0.02618081526 0.005941372732 -0.006471353698 -0.001375196134 -0.006013554874 0.004441167267 -0.001430583562 0.003014199785 -0.002640190528 @@ -1989,6 +1883,112 @@ iw : 12 6.80053623e-07 -8.925026383e-07 7.168635038e-05 -1.337926195e-06 0.004173500659 1.506658365e-07 -3.187688417e-07 -8.911429719e-05 -5.275809518e-07 -0.003972938759 2.04200265e-07 -3.191556949e-08 0.0002263193198 4.914090849e-08 0.004065104473 +ad : 3 3.113220902 +iw : 13 +0.4453780656 -0.04248099671 -0.05300508346 -0.006997596528 0.02632106263 -0.0127711382 +0.004689370718 -0.006458479976 0.008186629169 -0.006705924414 0.005096701564 -0.004843979269 +0.004820582158 0.4156524308 0.3576329182 0.0007500149687 0.05047467781 0.04342908878 +9.107793216e-05 -0.04319071679 -0.03716187116 -7.793454746e-05 -0.02468757222 -0.02124151777 +-4.454695157e-05 0.02415558817 0.02078379157 4.358702455e-05 -0.006681456978 -0.005748815067 +-1.205620941e-05 0.003732703952 0.003211668471 6.735396283e-06 -0.007653635344 -0.006585290353 +-1.381043547e-05 0.007873595917 0.006774547376 1.420733853e-05 -0.005495328052 -0.004728253853 +-9.915924919e-06 0.004472531143 0.003848225695 8.070361332e-06 -0.004676287001 -0.004023539963 +-8.438024148e-06 0.004523200162 0.003891821997 8.161789939e-06 0.1609272551 0.3807722104 +0.0007985418649 0.1638100342 0.0006870761152 0.04947683461 0.1170678246 0.000245510456 +0.05036314058 0.0002112404844 -0.01061893516 -0.02512560977 -5.269253043e-05 -0.01080915803 +-4.533735888e-05 -0.01520972766 -0.03598794757 -7.547263688e-05 -0.01548218794 -6.493766756e-05 +0.007159666468 0.01694058614 3.552719153e-05 0.007287921544 3.05680714e-05 -7.098321269e-06 +-1.679543641e-05 -3.522278872e-08 -7.225477434e-06 -3.030615914e-08 0.001370981629 0.003243898648 +6.802988258e-06 0.001395540783 5.853382208e-06 -0.003414253239 -0.008078511946 -1.69419664e-05 +-0.003475414651 -1.457709479e-05 0.002709530728 0.006411058238 1.344504211e-05 0.002758068055 +1.156829429e-05 -0.001604544236 -0.003796534373 -7.96195614e-06 -0.001633287327 -6.850573695e-06 +0.001561170333 0.00369390678 7.746729222e-06 0.001589136443 6.665389572e-06 -0.001750954049 +-0.004142956662 -8.688460578e-06 -0.00178231986 -7.475667844e-06 0.001584803463 0.003749825455 +7.863999867e-06 0.001613192926 6.766290806e-06 +iw : 14 +-0.4488809511 0.07256955794 -0.1503891001 0.06003264112 -0.001313432831 0.02317466715 +-0.03549746761 0.02526030952 -0.01735345527 0.01699997008 -0.01731798903 0.01537389874 +-0.01333755785 -0.1887064165 -0.1623655281 -0.00034050718 0.1184091511 0.1018808194 +0.0002136608116 -0.142083839 -0.122250838 -0.0002563800863 0.009116400631 0.007843873196 +1.644989041e-05 0.003949655291 0.003398336309 7.126869398e-06 0.03126765751 0.02690311128 +5.642024304e-05 -0.03132851012 -0.02695546968 -5.65300472e-05 0.01735230475 0.0149301554 +3.131098807e-05 -0.01324261306 -0.01139412164 -2.389534449e-05 0.01499628536 0.01290300476 +2.705972023e-05 -0.01452471925 -0.01249726297 -2.620881305e-05 0.01217845536 0.0104785061 +2.197514832e-05 -0.01084991834 -0.009335415048 -1.957789865e-05 0.00825326135 0.01952815616 +4.095375085e-05 0.008401106597 3.523715572e-05 0.08282597614 0.195975691 0.0004109932119 +0.08430968378 0.0003536240638 -0.041972557 -0.09931184931 -0.0002082732594 -0.04272443469 +-0.0001792011017 -0.0177223145 -0.04193301415 -8.794041794e-05 -0.01803978414 -7.566511335e-05 +0.001995433358 0.004721422546 9.901598546e-06 0.002031178662 8.519467999e-06 0.01362991905 +0.03224994052 6.763342214e-05 0.01387407935 5.819270221e-05 -0.008458664639 -0.02001416373 +-4.197298855e-05 -0.008610189389 -3.611412148e-05 0.002907544201 0.006879580664 1.442761058e-05 +0.002959628653 1.241370937e-05 -0.003427798662 -0.008110561959 -1.700918054e-05 -0.00348920272 +-1.463492674e-05 0.004776574463 0.01130191909 2.370198061e-05 0.00486213989 2.039350155e-05 +-0.00412768004 -0.009766560996 -2.048208251e-05 -0.004201621462 -1.76230581e-05 0.00314342179 +0.007437693898 1.55980657e-05 0.003199731648 1.342078463e-05 -0.00290123245 -0.006864646342 +-1.439629086e-05 -0.002953203836 -1.238676146e-05 +iw : 15 +-0.004048104822 -0.2074303041 0.0704182421 0.08366575838 -0.0182791772 -0.0314242787 +0.01040363384 0.002408491651 0.001726673523 -0.004759049263 0.003817998795 -0.002712242921 +0.002393966844 -0.0415893015 -0.1004615398 -0.0002106843492 -0.1699789917 -0.2292463684 +-0.0004807672869 -0.07771057144 0.001069342308 2.242586453e-06 0.1031395822 0.07665558536 +0.0001607593528 0.01294748188 0.01844705884 3.868651221e-05 -0.02237171618 -0.0338047795 +-7.089417487e-05 -0.00779001731 0.006048801057 1.26853293e-05 0.01054927099 -0.0004929080823 +-1.033709206e-06 -0.004135083845 0.004788165648 1.004156979e-05 0.003033292895 -0.005167105586 +-1.083626908e-05 -0.004061441963 0.003608238953 7.567069718e-06 0.004012177493 -0.002983676973 +-6.257260665e-06 -0.003005106711 0.00329385878 6.90776286e-06 0.1750159528 0.01272320181 +2.66826439e-05 -0.07390394433 -0.0003099787825 -0.004528059057 -0.2274740421 -0.0004770504276 +-0.140726767 -0.000590256884 -0.09456572434 -0.1450507261 -0.0003041951963 -0.04683735592 +-0.0001964521203 0.02061431372 0.08502539764 0.0001783122238 0.04374702824 0.0001834902138 +0.01805850348 0.03882869296 8.143014654e-05 0.01593307183 6.682883102e-05 0.0009169799059 +-0.01433457335 -3.006195469e-05 -0.009430672292 -3.955551144e-05 -0.009537286536 -0.01283218749 +-2.691120479e-05 -0.003595455897 -1.508058943e-05 0.004692936429 0.006016252129 1.261706885e-05 +0.00158206658 6.635736111e-06 -0.001628280528 0.001171936792 2.457743937e-06 0.001497841112 +6.282465277e-06 0.001955415397 -0.0003799328082 -7.967815007e-07 -0.001153564322 -4.838448978e-06 +-0.002386185987 -0.001284397013 -2.693591492e-06 0.0003099915271 1.300212012e-06 0.002224321495 +0.001510865899 3.168533941e-06 -9.203737545e-05 -3.860366837e-07 -0.001921112456 -0.001088885366 +-2.283571457e-06 0.000215148108 9.024058076e-07 +iw : 16 +-0.003483043604 -0.1784758117 0.0605887986 0.07198713902 -0.01572764887 -0.02703787025 +0.00895142589 0.002072298473 0.001485653024 -0.004094749722 0.003285057297 -0.002333650133 +0.002059801135 -0.1004615398 -0.01126813693 -0.0001812756357 -0.2292463684 -0.1007881663 +-0.0004136586125 0.001069342308 -0.07803331888 1.929551419e-06 0.07665558536 0.08000349823 +0.0001383195001 0.01844705884 0.007379815806 3.328639322e-05 -0.0338047795 -0.01216880385 +-6.099829752e-05 0.006048801057 -0.009615658173 1.091462722e-05 -0.0004929080823 0.01069803984 +-8.894172451e-07 0.004788165648 -0.005580241454 8.639901133e-06 -0.005167105586 0.004592821638 +-9.323671045e-06 0.003608238953 -0.00515047571 6.510808128e-06 -0.002983676973 0.004912706797 +-5.383830877e-06 0.00329385878 -0.003999254664 5.943531678e-06 -0.1689963899 0.06663607673 +-0.0003099787825 0.1209230757 0.0001202400162 -0.1764805025 -0.1656479884 -0.000590256884 +-0.0214414876 -0.000298899902 -0.01870262051 -0.1357229319 -0.0001964521203 -0.07647798547 +-0.000244902286 0.04659876333 0.06812765295 0.0001834902138 0.02097708493 0.0001229314584 +0.01243276994 0.03394979088 6.682883102e-05 0.01550170577 6.125996014e-05 -0.01235170972 +-0.01004382678 -3.955551144e-05 -0.000527494962 -1.812336431e-05 -0.0004557004669 -0.01239151653 +-1.508058943e-05 -0.007568221163 -2.235960191e-05 -1.301881484e-05 0.005882351006 6.635736111e-06 +0.003700010339 1.061428005e-05 0.002599620958 0.0003112226115 6.282465277e-06 -0.001020993786 +5.615788574e-07 -0.002303845493 0.0003677356365 -4.838448978e-06 0.001308955589 6.635525536e-07 +0.001419593729 -0.001710247988 1.300212012e-06 -0.001738243482 -3.086019704e-06 -0.001073612868 +0.001820547362 -3.860366837e-07 0.00164561422 3.285047005e-06 0.001099263313 -0.001416478827 +9.024058076e-07 -0.001403875295 -2.555934344e-06 +iw : 17 +-7.304514508e-06 -0.0003742930908 0.000127064662 0.000150968854 -3.298346286e-05 -5.670285474e-05 +1.877261031e-05 4.345950261e-06 3.115658402e-06 -8.587362708e-06 6.889304704e-06 -4.894047619e-06 +4.31974129e-06 -0.0002106843492 -0.0001812756357 0.0751699372 -0.0004807672869 -0.0004136586125 +0.09645761177 2.242586453e-06 1.929551419e-06 -0.07895339127 0.0001607593528 0.0001383195001 +0.01404829604 3.868651221e-05 3.328639322e-05 -0.008492210866 -7.089417487e-05 -6.099829752e-05 +0.01691715324 1.26853293e-05 1.091462722e-05 -0.01482010472 -1.033709206e-06 -8.894172451e-07 +0.01112214269 1.004156979e-05 8.639901133e-06 -0.009700025184 -1.083626908e-05 -9.323671045e-06 +0.009038648932 7.567069718e-06 6.510808128e-06 -0.008255039175 -6.257260665e-06 -5.383830877e-06 +0.007479891133 6.90776286e-06 5.943531678e-06 -0.006833322407 -0.0003544131864 -0.0003099787825 +0.2144439654 -0.0005203042735 0.1845104598 -0.0003701085997 -0.000590256884 0.1158055456 +-0.0004628963733 0.09964064236 -3.9222467e-05 -0.0001964521203 -0.04204822001 -8.642395319e-06 +-0.03617885164 9.77252603e-05 0.0001834902138 -0.01936640352 0.0001138843506 -0.01666311295 +2.607356058e-05 6.682883102e-05 0.002083647218 2.499054526e-05 0.001792797972 -2.590356398e-05 +-3.955551144e-05 0.0088175178 -3.292769854e-05 0.007586710406 -9.556787254e-07 -1.508058943e-05 +-0.005200604739 2.896318772e-06 -0.004474669968 -2.730259298e-08 6.635736111e-06 0.002718217846 +-2.050078277e-06 0.002338791039 5.451832123e-06 6.282465277e-06 -0.002684459612 7.546685151e-06 +-0.002309745002 -4.831542393e-06 -4.838448978e-06 0.002674864279 -6.908142849e-06 0.00230148905 +2.977121211e-06 1.300212012e-06 -0.002330231043 4.764096986e-06 -0.002004961997 -2.251542519e-06 +-3.860366837e-07 0.002004622113 -3.783272974e-06 0.001724803714 2.305335715e-06 9.024058076e-07 +-0.001846775043 3.7205957e-06 -0.00158898998 ad : 4 0 iw : 18 0.7016715766 0.5568491988 0.3605676112 0.2008865566 0.1283858359 0.07214010379 @@ -2390,7 +2390,7 @@ iw : 8 -0.00115040682 0.001865352438 0.004420000159 -0.0007855402515 -0.001407378377 -0.0009543042031 0.001547377536 -0.005214771366 4.984137911e-05 8.929609792e-05 -0.0006459168546 0.001047336088 0.004158506969 0.0002853515496 0.000511237457 0.000323176322 -0.0005240213543 -0.003661344526 -0.0002737241339 0.0004904057131 0.0001820630792 -0.0002952101836 0.003698606175 -9.072517738e-06 +0.0002737241339 0.0004904057131 0.0001820630792 -0.0002952101836 0.003698606175 -9.072517737e-06 -1.625437431e-05 0.000255545396 -0.0004143597021 iw : 9 -0.00954114146 -0.07033101232 -0.1021619708 -0.06535135892 -0.01602862952 0.009704621985 @@ -2411,7 +2411,7 @@ iw : 9 -0.002564071874 0.001881906005 -0.0007855402515 0.004637732686 -0.0008879610299 -0.0009909241791 0.001320660771 4.984137911e-05 -0.004951186538 -0.0008387899606 0.0001421167154 0.0007218504475 0.0002853515496 0.004088633963 0.0002928065285 0.0003625920191 -0.0004529610134 0.0002737241339 --0.0036781319 0.0001187628348 0.0003621687246 -0.0002885976412 -9.072517738e-06 0.003596451143 +-0.0036781319 0.0001187628348 0.0003621687246 -0.0002885976412 -9.072517737e-06 0.003596451143 0.0003274990892 -4.134530075e-05 -0.0002887366425 iw : 10 -0.01709396323 -0.1260054412 -0.1830339671 -0.1170838658 -0.0287169837 0.01738685587 @@ -2901,113 +2901,7 @@ iw : 27 0.0008297991562 -9.531324709e-08 -8.023907425e-07 0.001437411698 1.703098136e-06 -0.001581530665 5.865587613e-10 -1.005157494e-05 -0.002739292434 2.133476576e-05 0.001320539631 -1.257580711e-08 7.619833968e-06 0.002287262503 -1.617332347e-05 -ad : 1 2.994710688 -iw : 13 -0.4618296698 -0.01983845694 -0.05784050779 -0.01418320604 0.02704279533 -0.009440522344 -0.003729195507 -0.007321860876 0.008116666485 -0.005813476843 0.004669683268 -0.004854795578 -0.004671268024 0.4377513731 -0.1582168909 0.2954773514 0.0785307557 -0.02838344497 -0.05300739444 -0.04112291276 0.01486309308 -0.02775751281 -0.03276588219 0.01184260365 --0.0221166093 0.02235075184 -0.008078253282 0.01508651112 -0.003359508602 0.001214230357 --0.002267631274 0.004255697906 -0.001538140901 0.002872549175 -0.008899414232 0.003216523665 --0.006007006507 0.007432513208 -0.002686340246 0.005016864486 -0.004725112291 0.001707801784 --0.003189398711 0.004494644833 -0.001624503714 0.003033835717 -0.004849640949 0.001752810294 --0.003273454182 0.004357623112 -0.001574979824 0.002941347566 0.1932083919 -0.1711066935 -0.319549653 -0.07692462002 -0.115495132 0.07224253016 -0.06397848635 0.1194827783 --0.02876287685 -0.04318477304 -0.007096296377 0.006284529347 -0.01173664882 0.002825342611 -0.004241988034 -0.0208230528 0.01844104015 -0.03443949423 0.008290558235 0.01244749882 -0.005778831398 -0.005117773213 0.009557677853 -0.002300802802 -0.003454440505 0.001285006802 --0.001138010947 0.002125288005 -0.000511616804 -0.0007681448445 0.002503425739 -0.002217051218 -0.00414044555 -0.0009967220981 -0.001496485133 -0.004300462524 0.003808519473 -0.007112586023 -0.001712200192 0.002570708663 0.002512801226 -0.002225354214 0.004155951779 -0.001000454885 --0.001502089564 -0.001533700803 0.001358256081 -0.002536605966 0.0006106326457 0.0009168078824 -0.00195166258 -0.001728405933 0.003227877911 -0.0007770413124 -0.001166654952 -0.002052741579 -0.001817922196 -0.003395053667 0.0008172852349 0.001227077443 0.001685772487 -0.00149293182 -0.002788119129 -0.0006711789623 -0.001007712522 -iw : 14 --0.4605970413 0.07882405509 -0.1543645507 0.04361199608 0.002312109565 0.02986569374 --0.03627372673 0.02199476514 -0.01630758382 0.01771967951 -0.01723662572 0.01460020066 --0.01298184981 -0.1940975235 0.07015285068 -0.1310136888 0.1408257077 -0.05089876812 -0.09505580036 -0.1378077445 0.04980798285 -0.09301870847 -0.009861140093 0.003564121148 --0.006656160862 0.0001673486762 -6.048498959e-05 0.0001129585117 0.03910286449 -0.01413298513 -0.0263940025 -0.02986179204 0.01079297561 -0.02015638046 0.01459540813 -0.005275232104 -0.009851739603 -0.01404644655 0.0050768204 -0.009481196583 0.01640778246 -0.005930280262 -0.01107507229 -0.01434988841 0.005186493679 -0.009686016497 0.01167312925 -0.004219030095 -0.00787923357 -0.01092547414 0.003948804406 -0.007374574613 0.01155722942 -0.01023516263 -0.01911463895 -0.00460143306 -0.006908621951 0.1132973285 -0.1003369009 0.1873837967 --0.04510856833 -0.06772630205 -0.03788624082 0.03355231795 -0.06266050347 0.01508415163 -0.02264744476 -0.02882061078 0.02552373303 -0.04766675031 0.01147473208 0.01722823844 --0.003395549115 0.003007121875 -0.005615938993 0.001351915012 0.002029774117 0.01830415365 --0.01621028557 0.03027345702 -0.007287675502 -0.01094176407 -0.00720312282 0.006379135587 --0.01191333035 0.00286787484 0.004305846203 0.002172839928 -0.001924282128 0.003593685752 --0.0008651015838 -0.001298869225 -0.004802934939 0.004253512533 -0.007943631114 0.001912256199 -0.002871074073 0.005836470284 -0.005168818611 0.00965300749 -0.002323751336 -0.003488895586 --0.004281837806 0.003792025293 -0.007081782379 0.001704784885 0.002559575273 0.003432815595 --0.003040125328 0.005677574466 -0.00136675241 -0.002052051085 -0.003490247078 0.003090987048 --0.005772561077 0.001389618368 0.002086382185 -iw : 15 --0.005073078158 -0.2336014763 0.0491966638 0.09780007595 -0.001009597449 -0.03758685702 -0.004401544771 0.004328156148 0.002993045877 -0.00490165018 0.003218147564 -0.002583309213 -0.002800360277 -0.04086018253 0.04473996941 -0.0835539593 -0.1875294194 0.1092634707 --0.2040545781 -0.1163853721 0.01394296568 -0.0260391324 0.1034272791 -0.034467196 -0.06436908049 0.0328555944 -0.0156919863 0.02930550919 -0.02026579052 0.01437040296 --0.02683739126 -0.01383426174 -0.000455171876 0.0008500545018 0.009291118933 0.000686827262 --0.001282681635 -0.001910752313 -0.00297519772 0.005556319159 0.003004869397 0.002326435128 --0.004344725053 -0.004565719929 -0.001427844854 0.002666566214 0.004134209459 0.001290207346 --0.00240952181 -0.003052690044 -0.001457902181 0.002722699661 0.1781411353 -0.006083639499 -0.01136147775 0.03454108549 0.05186021361 -0.01465469995 0.107674657 -0.2010873952 -0.07167960469 0.1076202313 -0.1192528325 0.08456139285 -0.1579223068 0.0328432562 -0.04931108152 0.01366549102 -0.02993915048 0.05591274634 -0.01784329979 -0.02679004801 -0.02701117232 -0.02495324158 0.04660133117 -0.0114718659 -0.01722393514 0.005455210008 -0.001952151316 -0.003645732748 0.002544672887 0.003820588659 -0.012648132 0.008346693952 --0.01558783647 0.003050902215 0.004580644712 0.00407966559 -0.001963770163 0.003667431482 --0.0004775510671 -0.0007169983224 -0.001424309716 -0.0007248062619 0.001353609171 -0.0008139686977 --0.001222097972 0.0025338903 -0.0003496008811 0.0006528957926 0.0003083970168 0.0004630293155 --0.002651995372 0.0007722464915 -0.001442205991 -4.022486086e-05 -6.039387145e-05 0.001996082087 --0.0004081314223 0.0007622042817 0.0001506488552 0.000226185185 -0.001727710572 0.0002616574878 --0.0004886574437 -0.0001940869103 -0.0002914033675 -iw : 16 -0.001833567415 0.08443080153 -0.01778119651 -0.03534797353 0.0003648997566 0.01358505312 --0.001590854471 -0.001564329551 -0.001081779389 0.001771608039 -0.001163138104 0.0009336878812 --0.001012136852 0.04473996941 0.0667550731 0.03019898617 0.1092634707 0.07528739702 -0.07375163826 0.01394296568 -0.08284766888 0.00941134814 -0.034467196 0.02052163216 --0.02326497737 -0.0156919863 -0.004889114405 -0.01059191778 0.01437040296 0.01430004867 -0.009699863589 -0.000455171876 -0.01492910911 -0.0003072359989 0.000686827262 0.01094317843 -0.0004636008308 -0.00297519772 -0.009067142168 -0.002008225665 0.002326435128 0.008600758583 -0.001570318067 -0.001427844854 -0.008000185599 -0.0009637795372 0.001290207346 0.007237608839 -0.0008708757363 -0.001457902181 -0.006559454085 -0.0009840679018 0.07922699785 0.2016379714 -0.05186021361 -0.09539905734 0.136103408 0.09495683755 0.08559674096 0.1076202313 --0.0776725535 0.0577768566 0.02317139531 -0.058240847 0.04931108152 -0.0003638232856 --0.03931192973 -0.02182741941 -0.01263232158 -0.02679004801 0.01619957834 -0.008526677819 --0.01073975117 0.00766197733 -0.01722393514 0.004710403386 0.005171750238 0.00445088822 -0.008213641749 0.003820588659 -0.004627795983 0.005544117641 0.001868660019 -0.00677016354 -0.004580644712 0.0004577523551 -0.004569785761 8.698372315e-05 0.002878269292 -0.0007169983224 --0.0007289313477 0.001942800044 -0.001365765198 -0.002349613738 -0.001222097972 0.001379932292 --0.001585963373 0.0008778533125 0.002617291703 0.0004630293155 -0.001147045664 0.001766643048 --0.0005340302524 -0.002351852258 -6.039387145e-05 0.0008762588641 -0.001587474349 0.0005658594653 -0.001935229627 0.000226185185 -0.0007976752152 0.001306258666 -0.0005765096052 -0.001762375951 --0.0002914033675 0.0007635222453 -0.00118958434 -iw : 17 --0.003424271836 -0.1576784215 0.03320720576 0.0660139732 -0.0006814671493 -0.02537071416 -0.002970994202 0.00292145769 0.002020272974 -0.00330855984 0.002172214132 -0.001743705243 -0.001890212318 -0.0835539593 0.03019898617 0.02652748086 -0.2040545781 0.07375163826 --0.02295599477 -0.0260391324 0.00941134814 -0.09538437701 0.06436908049 -0.02326497737 -0.05151254085 0.02930550919 -0.01059191778 0.009220211878 -0.02683739126 0.009699863589 -0.00137901367 0.0008500545018 -0.0003072359989 -0.01451984489 -0.001282681635 0.0004636008308 -0.01032562309 0.005556319159 -0.002008225665 -0.006392016497 -0.004344725053 0.001570318067 -0.006508962703 0.002666566214 -0.0009637795372 -0.006716350108 -0.00240952181 0.0008708757363 -0.006077529034 0.002722699661 -0.0009840679018 -0.005248592785 -0.1479600778 0.05186021361 -0.1325558005 -0.1315324419 -0.04790976776 -0.17733628 0.1076202313 -0.05776246842 --0.0482911951 0.02087714335 -0.04327365096 0.04931108152 -0.1239273594 0.04365821501 -0.04479118219 0.0407637139 -0.02679004801 0.023054278 0.006165399426 -0.008332529403 -0.02005698136 -0.01722393514 0.03060570914 -0.006689870172 -0.01106185027 -0.008312239326 -0.003820588659 0.003124295975 -0.005207370448 -0.001129217236 -0.003489808894 0.004580644712 --0.01287196797 0.004973524395 0.004652327502 -0.0001624461206 -0.0007169983224 0.003833371426 --0.002005996372 -0.001385499044 0.002550629589 -0.001222097972 -0.0007216763423 0.001478247495 -0.0002608361599 -0.001639431607 0.0004630293155 0.002000497669 -0.001725831583 -0.0007230417559 -0.0009973261619 -6.039387145e-05 -0.002271402537 0.001582151226 0.0008209551573 -0.001056768687 -0.000226185185 0.001633931917 -0.001286322674 -0.000590553551 0.001076658315 -0.0002914033675 --0.00137420213 0.001163900008 0.0004966791697 -ad : 2 1.950638213 +ad : 1 1.950638213 iw : 0 0.6151578218 0.2563762461 0.01430294219 -0.0240433331 0.005728253865 -0.003403419439 -0.0007520211535 -0.007518590258 0.002354958447 -0.001568752394 0.003294153623 -0.0021315164 @@ -3281,6 +3175,112 @@ iw : 12 0.0002469217438 0.0002437152261 -0.000588928331 0.0005418153135 0.004455159055 0.0002407072168 0.0002632177466 -0.0007274292674 0.0006944753591 -0.003186864196 0.000452962496 0.0003328908887 -0.0003974202646 0.000253208381 0.004236408994 +ad : 2 2.994710688 +iw : 13 +0.4618296698 -0.01983845694 -0.05784050779 -0.01418320604 0.02704279533 -0.009440522344 +0.003729195507 -0.007321860876 0.008116666485 -0.005813476843 0.004669683268 -0.004854795578 +0.004671268024 0.4377513731 -0.1582168909 0.2954773514 0.0785307557 -0.02838344497 +0.05300739444 -0.04112291276 0.01486309308 -0.02775751281 -0.03276588219 0.01184260365 +-0.0221166093 0.02235075184 -0.008078253282 0.01508651112 -0.003359508602 0.001214230357 +-0.002267631274 0.004255697906 -0.001538140901 0.002872549175 -0.008899414232 0.003216523665 +-0.006007006507 0.007432513208 -0.002686340246 0.005016864486 -0.004725112291 0.001707801784 +-0.003189398711 0.004494644833 -0.001624503714 0.003033835717 -0.004849640949 0.001752810294 +-0.003273454182 0.004357623112 -0.001574979824 0.002941347566 0.1932083919 -0.1711066935 +0.319549653 -0.07692462002 -0.115495132 0.07224253016 -0.06397848635 0.1194827783 +-0.02876287685 -0.04318477304 -0.007096296377 0.006284529347 -0.01173664882 0.002825342611 +0.004241988034 -0.0208230528 0.01844104015 -0.03443949423 0.008290558235 0.01244749882 +0.005778831398 -0.005117773213 0.009557677853 -0.002300802802 -0.003454440505 0.001285006802 +-0.001138010947 0.002125288005 -0.000511616804 -0.0007681448445 0.002503425739 -0.002217051218 +0.00414044555 -0.0009967220981 -0.001496485133 -0.004300462524 0.003808519473 -0.007112586023 +0.001712200192 0.002570708663 0.002512801226 -0.002225354214 0.004155951779 -0.001000454885 +-0.001502089564 -0.001533700803 0.001358256081 -0.002536605966 0.0006106326457 0.0009168078824 +0.00195166258 -0.001728405933 0.003227877911 -0.0007770413124 -0.001166654952 -0.002052741579 +0.001817922196 -0.003395053667 0.0008172852349 0.001227077443 0.001685772487 -0.00149293182 +0.002788119129 -0.0006711789623 -0.001007712522 +iw : 14 +-0.4605970413 0.07882405509 -0.1543645507 0.04361199608 0.002312109565 0.02986569374 +-0.03627372673 0.02199476514 -0.01630758382 0.01771967951 -0.01723662572 0.01460020066 +-0.01298184981 -0.1940975235 0.07015285068 -0.1310136888 0.1408257077 -0.05089876812 +0.09505580036 -0.1378077445 0.04980798285 -0.09301870847 -0.009861140093 0.003564121148 +-0.006656160862 0.0001673486762 -6.048498959e-05 0.0001129585117 0.03910286449 -0.01413298513 +0.0263940025 -0.02986179204 0.01079297561 -0.02015638046 0.01459540813 -0.005275232104 +0.009851739603 -0.01404644655 0.0050768204 -0.009481196583 0.01640778246 -0.005930280262 +0.01107507229 -0.01434988841 0.005186493679 -0.009686016497 0.01167312925 -0.004219030095 +0.00787923357 -0.01092547414 0.003948804406 -0.007374574613 0.01155722942 -0.01023516263 +0.01911463895 -0.00460143306 -0.006908621951 0.1132973285 -0.1003369009 0.1873837967 +-0.04510856833 -0.06772630205 -0.03788624082 0.03355231795 -0.06266050347 0.01508415163 +0.02264744476 -0.02882061078 0.02552373303 -0.04766675031 0.01147473208 0.01722823844 +-0.003395549115 0.003007121875 -0.005615938993 0.001351915012 0.002029774117 0.01830415365 +-0.01621028557 0.03027345702 -0.007287675502 -0.01094176407 -0.00720312282 0.006379135587 +-0.01191333035 0.00286787484 0.004305846203 0.002172839928 -0.001924282128 0.003593685752 +-0.0008651015838 -0.001298869225 -0.004802934939 0.004253512533 -0.007943631114 0.001912256199 +0.002871074073 0.005836470284 -0.005168818611 0.00965300749 -0.002323751336 -0.003488895586 +-0.004281837806 0.003792025293 -0.007081782379 0.001704784885 0.002559575273 0.003432815595 +-0.003040125328 0.005677574466 -0.00136675241 -0.002052051085 -0.003490247078 0.003090987048 +-0.005772561077 0.001389618368 0.002086382185 +iw : 15 +-0.005073078158 -0.2336014763 0.0491966638 0.09780007595 -0.001009597449 -0.03758685702 +0.004401544771 0.004328156148 0.002993045877 -0.00490165018 0.003218147564 -0.002583309213 +0.002800360277 -0.04086018253 0.04473996941 -0.0835539593 -0.1875294194 0.1092634707 +-0.2040545781 -0.1163853721 0.01394296568 -0.0260391324 0.1034272791 -0.034467196 +0.06436908049 0.0328555944 -0.0156919863 0.02930550919 -0.02026579052 0.01437040296 +-0.02683739126 -0.01383426174 -0.000455171876 0.0008500545018 0.009291118933 0.000686827262 +-0.001282681635 -0.001910752313 -0.00297519772 0.005556319159 0.003004869397 0.002326435128 +-0.004344725053 -0.004565719929 -0.001427844854 0.002666566214 0.004134209459 0.001290207346 +-0.00240952181 -0.003052690044 -0.001457902181 0.002722699661 0.1781411353 -0.006083639499 +0.01136147775 0.03454108549 0.05186021361 -0.01465469995 0.107674657 -0.2010873952 +0.07167960469 0.1076202313 -0.1192528325 0.08456139285 -0.1579223068 0.0328432562 +0.04931108152 0.01366549102 -0.02993915048 0.05591274634 -0.01784329979 -0.02679004801 +0.02701117232 -0.02495324158 0.04660133117 -0.0114718659 -0.01722393514 0.005455210008 +0.001952151316 -0.003645732748 0.002544672887 0.003820588659 -0.012648132 0.008346693952 +-0.01558783647 0.003050902215 0.004580644712 0.00407966559 -0.001963770163 0.003667431482 +-0.0004775510671 -0.0007169983224 -0.001424309716 -0.0007248062619 0.001353609171 -0.0008139686977 +-0.001222097972 0.0025338903 -0.0003496008811 0.0006528957926 0.0003083970168 0.0004630293155 +-0.002651995372 0.0007722464915 -0.001442205991 -4.022486086e-05 -6.039387145e-05 0.001996082087 +-0.0004081314223 0.0007622042817 0.0001506488552 0.000226185185 -0.001727710572 0.0002616574878 +-0.0004886574437 -0.0001940869103 -0.0002914033675 +iw : 16 +0.001833567415 0.08443080153 -0.01778119651 -0.03534797353 0.0003648997566 0.01358505312 +-0.001590854471 -0.001564329551 -0.001081779389 0.001771608039 -0.001163138104 0.0009336878812 +-0.001012136852 0.04473996941 0.0667550731 0.03019898617 0.1092634707 0.07528739702 +0.07375163826 0.01394296568 -0.08284766888 0.00941134814 -0.034467196 0.02052163216 +-0.02326497737 -0.0156919863 -0.004889114405 -0.01059191778 0.01437040296 0.01430004867 +0.009699863589 -0.000455171876 -0.01492910911 -0.0003072359989 0.000686827262 0.01094317843 +0.0004636008308 -0.00297519772 -0.009067142168 -0.002008225665 0.002326435128 0.008600758583 +0.001570318067 -0.001427844854 -0.008000185599 -0.0009637795372 0.001290207346 0.007237608839 +0.0008708757363 -0.001457902181 -0.006559454085 -0.0009840679018 0.07922699785 0.2016379714 +0.05186021361 -0.09539905734 0.136103408 0.09495683755 0.08559674096 0.1076202313 +-0.0776725535 0.0577768566 0.02317139531 -0.058240847 0.04931108152 -0.0003638232856 +-0.03931192973 -0.02182741941 -0.01263232158 -0.02679004801 0.01619957834 -0.008526677819 +-0.01073975117 0.00766197733 -0.01722393514 0.004710403386 0.005171750238 0.00445088822 +0.008213641749 0.003820588659 -0.004627795983 0.005544117641 0.001868660019 -0.00677016354 +0.004580644712 0.0004577523551 -0.004569785761 8.698372315e-05 0.002878269292 -0.0007169983224 +-0.0007289313477 0.001942800044 -0.001365765198 -0.002349613738 -0.001222097972 0.001379932292 +-0.001585963373 0.0008778533125 0.002617291703 0.0004630293155 -0.001147045664 0.001766643048 +-0.0005340302524 -0.002351852258 -6.039387145e-05 0.0008762588641 -0.001587474349 0.0005658594653 +0.001935229627 0.000226185185 -0.0007976752152 0.001306258666 -0.0005765096052 -0.001762375951 +-0.0002914033675 0.0007635222453 -0.00118958434 +iw : 17 +-0.003424271836 -0.1576784215 0.03320720576 0.0660139732 -0.0006814671493 -0.02537071416 +0.002970994202 0.00292145769 0.002020272974 -0.00330855984 0.002172214132 -0.001743705243 +0.001890212318 -0.0835539593 0.03019898617 0.02652748086 -0.2040545781 0.07375163826 +-0.02295599477 -0.0260391324 0.00941134814 -0.09538437701 0.06436908049 -0.02326497737 +0.05151254085 0.02930550919 -0.01059191778 0.009220211878 -0.02683739126 0.009699863589 +0.00137901367 0.0008500545018 -0.0003072359989 -0.01451984489 -0.001282681635 0.0004636008308 +0.01032562309 0.005556319159 -0.002008225665 -0.006392016497 -0.004344725053 0.001570318067 +0.006508962703 0.002666566214 -0.0009637795372 -0.006716350108 -0.00240952181 0.0008708757363 +0.006077529034 0.002722699661 -0.0009840679018 -0.005248592785 -0.1479600778 0.05186021361 +0.1325558005 -0.1315324419 -0.04790976776 -0.17733628 0.1076202313 -0.05776246842 +-0.0482911951 0.02087714335 -0.04327365096 0.04931108152 -0.1239273594 0.04365821501 +0.04479118219 0.0407637139 -0.02679004801 0.023054278 0.006165399426 -0.008332529403 +0.02005698136 -0.01722393514 0.03060570914 -0.006689870172 -0.01106185027 -0.008312239326 +0.003820588659 0.003124295975 -0.005207370448 -0.001129217236 -0.003489808894 0.004580644712 +-0.01287196797 0.004973524395 0.004652327502 -0.0001624461206 -0.0007169983224 0.003833371426 +-0.002005996372 -0.001385499044 0.002550629589 -0.001222097972 -0.0007216763423 0.001478247495 +0.0002608361599 -0.001639431607 0.0004630293155 0.002000497669 -0.001725831583 -0.0007230417559 +0.0009973261619 -6.039387145e-05 -0.002271402537 0.001582151226 0.0008209551573 -0.001056768687 +0.000226185185 0.001633931917 -0.001286322674 -0.000590553551 0.001076658315 -0.0002914033675 +-0.00137420213 0.001163900008 0.0004966791697 ad : 3 3.303653192 iw : 18 0.4185317553 -0.07502935227 -0.04092074563 0.002180941037 0.02280675225 -0.01691625763 @@ -3382,7 +3382,7 @@ iw : 22 -0.004304957209 -4.044671612e-05 5.78789118e-05 -0.0009112630705 -0.009366400349 0.008775948668 0.0001804076845 -5.670256363e-05 -0.01399342311 0.00917603485 0.0008468178822 -2.145114011e-05 -2.978464256e-05 0.004937983695 0.00481997463 -0.002399108628 -1.90805991e-05 3.442012454e-05 --0.001067730046 -0.005570123149 0.0003943854652 -8.834828398e-06 -1.314850626e-05 0.002112759376 +-0.001067730046 -0.005570123149 0.0003943854652 -8.834828398e-06 -1.314850626e-05 0.002112759377 0.002127790068 0.0001492843046 1.73974511e-05 8.000502557e-06 -0.002556710737 -0.001294701431 0.0003328455763 -8.681435361e-06 -1.186338656e-05 0.001981346896 0.001919822343 -0.000733766008 7.939863149e-07 1.46754602e-05 -0.001399403931 -0.002374893226 0.000639575435 -1.17523491e-06 diff --git a/tests/deepks/604_NO_deepks_ut_H2O_multik/dpsialpha_x_ref.dat b/tests/deepks/604_NO_deepks_ut_H2O_multik/dphialpha_x_ref.dat similarity index 100% rename from tests/deepks/604_NO_deepks_ut_H2O_multik/dpsialpha_x_ref.dat rename to tests/deepks/604_NO_deepks_ut_H2O_multik/dphialpha_x_ref.dat diff --git a/tests/deepks/604_NO_deepks_ut_H2O_multik/dpsialpha_y_ref.dat b/tests/deepks/604_NO_deepks_ut_H2O_multik/dphialpha_y_ref.dat similarity index 100% rename from tests/deepks/604_NO_deepks_ut_H2O_multik/dpsialpha_y_ref.dat rename to tests/deepks/604_NO_deepks_ut_H2O_multik/dphialpha_y_ref.dat diff --git a/tests/deepks/604_NO_deepks_ut_H2O_multik/dpsialpha_z_ref.dat b/tests/deepks/604_NO_deepks_ut_H2O_multik/dphialpha_z_ref.dat similarity index 100% rename from tests/deepks/604_NO_deepks_ut_H2O_multik/dpsialpha_z_ref.dat rename to tests/deepks/604_NO_deepks_ut_H2O_multik/dphialpha_z_ref.dat diff --git a/tests/deepks/604_NO_deepks_ut_H2O_multik/psialpha_ref.dat b/tests/deepks/604_NO_deepks_ut_H2O_multik/phialpha_ref.dat similarity index 100% rename from tests/deepks/604_NO_deepks_ut_H2O_multik/psialpha_ref.dat rename to tests/deepks/604_NO_deepks_ut_H2O_multik/phialpha_ref.dat diff --git a/tests/deepks/CASES1 b/tests/deepks/CASES1 index 54866fb456..b3ff1d3c7f 100644 --- a/tests/deepks/CASES1 +++ b/tests/deepks/CASES1 @@ -1,2 +1,2 @@ -604_NO_deepks_ut_H2O_multik 604_NO_deepks_ut_CH4_gamma +#604_NO_deepks_ut_H2O_multik diff --git a/tests/deepks/CMakeLists.txt b/tests/deepks/CMakeLists.txt index 2ba9bb6668..637c92e8e5 100644 --- a/tests/deepks/CMakeLists.txt +++ b/tests/deepks/CMakeLists.txt @@ -20,9 +20,9 @@ else() WORKING_DIRECTORY ${ABACUS_TEST_DIR}/deepks ) # TODO: I will rewrite the unit tests and remove 604 to module_deepks/test/ - #add_test( - # NAME deepks_test1 - # COMMAND ${BASH} Autotest1.sh -a ${CMAKE_CURRENT_BINARY_DIR}/../../source/module_hamilt_lcao/module_deepks/test/test_deepks - # WORKING_DIRECTORY ${ABACUS_TEST_DIR}/deepks - #) + add_test( + NAME deepks_test1 + COMMAND ${BASH} Autotest1.sh -a ${CMAKE_CURRENT_BINARY_DIR}/../../source/module_hamilt_lcao/module_deepks/test/test_deepks + WORKING_DIRECTORY ${ABACUS_TEST_DIR}/deepks + ) endif() From 35fe565e8668c2377afcf5833f85af51ffa87b9b Mon Sep 17 00:00:00 2001 From: Yu Liu <77716030+YuLiu98@users.noreply.github.com> Date: Sat, 4 Jan 2025 12:48:28 +0800 Subject: [PATCH 37/44] Refactor: update logic of init_chg (#5801) --- .../module_charge/charge_init.cpp | 119 +++++++++++------- 1 file changed, 74 insertions(+), 45 deletions(-) diff --git a/source/module_elecstate/module_charge/charge_init.cpp b/source/module_elecstate/module_charge/charge_init.cpp index 6a8e59bee8..9d104312b7 100644 --- a/source/module_elecstate/module_charge/charge_init.cpp +++ b/source/module_elecstate/module_charge/charge_init.cpp @@ -37,6 +37,7 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, this->pgrid = &pgrid; bool read_error = false; + bool read_kin_error = false; if (PARAM.inp.init_chg == "file" || PARAM.inp.init_chg == "auto") { GlobalV::ofs_running << " try to read charge from file" << std::endl; @@ -101,72 +102,100 @@ void Charge::init_rho(elecstate::efermi& eferm_iout, } } - if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) + if (read_error) { - GlobalV::ofs_running << " try to read kinetic energy density from file" << std::endl; - // try to read charge from binary file first, which is the same as QE - std::vector> kin_g_space(PARAM.inp.nspin * this->ngmc, {0.0, 0.0}); - std::vector*> kin_g; - for (int is = 0; is < PARAM.inp.nspin; is++) + const std::string warn_msg + = " WARNING: \"init_chg\" is enabled but ABACUS failed to read charge density from file.\n" + " Please check if there is SPINX_CHG.cube (X=1,...) or {suffix}-CHARGE-DENSITY.restart in the " + "directory.\n"; + std::cout << std::endl << warn_msg; + if (PARAM.inp.init_chg == "file") { - kin_g.push_back(kin_g_space.data() + is * this->ngmc); + ModuleBase::WARNING_QUIT("Charge::init_rho", + "Failed to read in charge density from file.\nIf you want to use atomic " + "charge initialization, \nplease set init_chg to atomic in INPUT."); } + } - std::stringstream binary; - binary << PARAM.globalv.global_readin_dir << PARAM.inp.suffix + "-TAU-DENSITY.restart"; - if (ModuleIO::read_rhog(binary.str(), rhopw, kin_g.data())) + if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) + { + // If the charge density is not read in, then the kinetic energy density is not read in either + if (!read_error) { - GlobalV::ofs_running << " Read in the kinetic energy density: " << binary.str() << std::endl; - for (int is = 0; is < PARAM.inp.nspin; ++is) + GlobalV::ofs_running << " try to read kinetic energy density from file" << std::endl; + // try to read charge from binary file first, which is the same as QE + std::vector> kin_g_space(PARAM.inp.nspin * this->ngmc, {0.0, 0.0}); + std::vector*> kin_g; + for (int is = 0; is < PARAM.inp.nspin; is++) { - rhopw->recip2real(kin_g[is], this->kin_r[is]); + kin_g.push_back(kin_g_space.data() + is * this->ngmc); } - } - else - { - for (int is = 0; is < PARAM.inp.nspin; is++) + + std::stringstream binary; + binary << PARAM.globalv.global_readin_dir << PARAM.inp.suffix + "-TAU-DENSITY.restart"; + if (ModuleIO::read_rhog(binary.str(), rhopw, kin_g.data())) { - std::stringstream ssc; - ssc << PARAM.globalv.global_readin_dir << "SPIN" << is + 1 << "_TAU.cube"; - // mohan update 2012-02-10, sunliang update 2023-03-09 - if (ModuleIO::read_vdata_palgrid( - pgrid, - (PARAM.inp.esolver_type == "sdft" ? GlobalV::RANK_IN_STOGROUP : GlobalV::MY_RANK), - GlobalV::ofs_running, - ssc.str(), - this->kin_r[is], - ucell.nat)) + GlobalV::ofs_running << " Read in the kinetic energy density: " << binary.str() << std::endl; + for (int is = 0; is < PARAM.inp.nspin; ++is) { - GlobalV::ofs_running << " Read in the kinetic energy density: " << ssc.str() << std::endl; + rhopw->recip2real(kin_g[is], this->kin_r[is]); } } + else + { + for (int is = 0; is < PARAM.inp.nspin; is++) + { + std::stringstream ssc; + ssc << PARAM.globalv.global_readin_dir << "SPIN" << is + 1 << "_TAU.cube"; + // mohan update 2012-02-10, sunliang update 2023-03-09 + if (ModuleIO::read_vdata_palgrid( + pgrid, + (PARAM.inp.esolver_type == "sdft" ? GlobalV::RANK_IN_STOGROUP : GlobalV::MY_RANK), + GlobalV::ofs_running, + ssc.str(), + this->kin_r[is], + ucell.nat)) + { + GlobalV::ofs_running << " Read in the kinetic energy density: " << ssc.str() << std::endl; + } + else + { + read_kin_error = true; + std::cout << " WARNING: \"init_chg\" is enabled but ABACUS failed to read kinetic energy " + "density from file.\n" + " Please check if there is SPINX_TAU.cube (X=1,...) or " + "{suffix}-TAU-DENSITY.restart in the directory.\n" + << std::endl; + break; + } + } + } + } + else + { + read_kin_error = true; } } } - if (read_error) + + if (PARAM.inp.init_chg == "atomic" || read_error) // mohan add 2007-10-17 { - const std::string warn_msg = " WARNING: \"init_chg\" is enabled but ABACUS failed to read charge density from file.\n" - " Please check if there is SPINX_CHG.cube (X=1,...) or {suffix}-CHARGE-DENSITY.restart in the directory.\n"; - std::cout << std::endl << warn_msg; - if (PARAM.inp.init_chg == "auto") + if (read_error) { - std::cout << " Charge::init_rho: use atomic initialization instead." << std::endl << std::endl; - } - else if (PARAM.inp.init_chg == "file") - { - ModuleBase::WARNING_QUIT("Charge::init_rho", "Failed to read in charge density from file.\nIf you want to use atomic charge initialization, \nplease set init_chg to atomic in INPUT."); + std::cout << " Charge::init_rho: use atomic initialization instead." << std::endl; } + this->atomic_rho(PARAM.inp.nspin, ucell.omega, rho, strucFac, ucell); } - if (PARAM.inp.init_chg == "atomic" || - (PARAM.inp.init_chg == "auto" && read_error)) // mohan add 2007-10-17 + // wenfei 2021-7-29 : initial tau = 3/5 rho^2/3, Thomas-Fermi + if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) { - this->atomic_rho(PARAM.inp.nspin, ucell.omega, rho, strucFac, ucell); - - // liuyu 2023-06-29 : move here from atomic_rho(), which will be called several times in charge extrapolation - // wenfei 2021-7-29 : initial tau = 3/5 rho^2/3, Thomas-Fermi - if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) + if (PARAM.inp.init_chg == "atomic" || read_kin_error) { + if (read_kin_error) + { + std::cout << " Charge::init_rho: init kinetic energy density from rho." << std::endl; + } const double pi = 3.141592653589790; const double fact = (3.0 / 5.0) * pow(3.0 * pi * pi, 2.0 / 3.0); for (int is = 0; is < PARAM.inp.nspin; ++is) From b5a50686f71b406e26690349eaffb486812b36d5 Mon Sep 17 00:00:00 2001 From: LUNASEA <33978601+maki49@users.noreply.github.com> Date: Sat, 4 Jan 2025 12:50:11 +0800 Subject: [PATCH 38/44] Fix: optimize lr_spectrum (#5805) * update the broadening function in lr_spectrum * optimize transition analysis and fix norm bug --- source/module_lr/esolver_lrtd_lcao.cpp | 2 +- source/module_lr/lr_spectrum.cpp | 9 +++++---- source/module_lr/lr_spectrum_velocity.cpp | 13 +++++++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/source/module_lr/esolver_lrtd_lcao.cpp b/source/module_lr/esolver_lrtd_lcao.cpp index 8c00ef2fdd..97842897b9 100644 --- a/source/module_lr/esolver_lrtd_lcao.cpp +++ b/source/module_lr/esolver_lrtd_lcao.cpp @@ -568,7 +568,7 @@ void LR::ESolver_LR::after_all_runners(UnitCell& ucell) { spectrum.optical_absorption_method1(freq, input.abs_broadening); // =============================================== for test ==================================================== - // spectrum.optical_absorption_method2(freq, input.abs_broadening, spin_types[is]); + // spectrum.optical_absorption_method2(freq, input.abs_broadening); // spectrum.test_transition_dipoles_velocity_ks(eig_ks.c); // spectrum.write_transition_dipole(PARAM.globalv.global_out_dir + "dipole_velocity_ks.dat"); // =============================================== for test ==================================================== diff --git a/source/module_lr/lr_spectrum.cpp b/source/module_lr/lr_spectrum.cpp index c6db92c67b..0a2c5735f6 100644 --- a/source/module_lr/lr_spectrum.cpp +++ b/source/module_lr/lr_spectrum.cpp @@ -148,7 +148,8 @@ template<> double LR::LR_Spectrum::cal_mean_squared_dipole(ModuleBase::V } template<> double LR::LR_Spectrum>::cal_mean_squared_dipole(ModuleBase::Vector3> dipole) { - return dipole.norm2().real() / 3.; + // return dipole.norm2().real() / 3.; // ModuleBase::Vector3::norm2 calculates x*x + y*y + z*z, but here we need x*x.conj() + y*y.conj() + z*z.conj() + return (std::norm(dipole.x) + std::norm(dipole.y) + std::norm(dipole.z)) / 3.; } template @@ -217,12 +218,12 @@ void LR::LR_Spectrum::transition_analysis(const std::string& spintype) ofs << std::setw(40) << spintype << std::endl; ofs << "==================================================================== " << std::endl; ofs << std::setw(8) << "State" << std::setw(30) << "Excitation Energy (Ry, eV)" << - std::setw(45) << "Transition dipole x, y, z (a.u.)" << std::setw(30) << "Oscillator strength(a.u.)" << std::endl; + std::setw(90) << "Transition dipole x, y, z (a.u.)" << std::setw(30) << "Oscillator strength(a.u.)" << std::endl; ofs << "------------------------------------------------------------------------------------ " << std::endl; for (int istate = 0;istate < nstate;++istate) ofs << std::setw(8) << istate << std::setw(15) << std::setprecision(6) << eig[istate] << std::setw(15) << eig[istate] * ModuleBase::Ry_to_eV - << std::setw(15) << transition_dipole_[istate].x << std::setw(15) << transition_dipole_[istate].y << std::setw(15) << transition_dipole_[istate].z - << std::setw(30) << oscillator_strength_[istate] << std::endl; + << std::setprecision(4) << std::setw(30) << transition_dipole_[istate].x << std::setw(30) << transition_dipole_[istate].y << std::setw(30) << transition_dipole_[istate].z + << std::setprecision(6) << std::setw(30) << oscillator_strength_[istate] << std::endl; ofs << "------------------------------------------------------------------------------------ " << std::endl; ofs << std::setw(8) << "State" << std::setw(20) << "Occupied orbital" << std::setw(20) << "Virtual orbital" << std::setw(30) << "Excitation amplitude" diff --git a/source/module_lr/lr_spectrum_velocity.cpp b/source/module_lr/lr_spectrum_velocity.cpp index 5a6927f74d..1c3778f973 100644 --- a/source/module_lr/lr_spectrum_velocity.cpp +++ b/source/module_lr/lr_spectrum_velocity.cpp @@ -23,9 +23,14 @@ namespace LR return vR; } - inline double lorentz_delta(const double freq_diff, const double eta) + inline double lorentz_delta(const double dfreq_au, const double eta_au) { - return eta / (freq_diff * freq_diff + eta * eta) / M_PI; + return eta_au / (dfreq_au * dfreq_au + eta_au * eta_au) / M_PI; + } + inline double gauss_delta(const double dfreq_au, const double eta_au) + { + const double c = eta_au / std::sqrt(2. * std::log(2.)); + return std::exp(-dfreq_au * dfreq_au / (2 * c * c)) / (std::sqrt(2 * M_PI) * c); } template inline ModuleBase::Vector3 convert_vector_to_vector3(const std::vector>& vec); @@ -109,13 +114,13 @@ namespace LR // 4*pi^2/V * mean_squared_dipole *delta(w-Omega_S) std::ofstream ofs(PARAM.globalv.global_out_dir + "absorption.dat"); if (GlobalV::MY_RANK == 0) { ofs << "Frequency (eV) | wave length(nm) | Absorption (a.u.)" << std::endl; } - const double fac = 4 * M_PI * M_PI / ucell.omega * ModuleBase::e2 / this->nk; // e2: Ry to Hartree in the denominator + const double fac = 4 * M_PI * M_PI / ucell.omega / this->nk; for (int f = 0;f < freq.size();++f) { double abs_value = 0.0; for (int i = 0;i < nstate;++i) { - abs_value += this->mean_squared_transition_dipole_[i] * lorentz_delta((freq[f] - eig[i]), eta); + abs_value += this->mean_squared_transition_dipole_[i] * lorentz_delta((freq[f] - eig[i]) / ModuleBase::e2, eta / ModuleBase::e2); // e2: Ry to Hartree } abs_value *= fac; if (GlobalV::MY_RANK == 0) { ofs << freq[f] * ModuleBase::Ry_to_eV << "\t" << 91.126664 / freq[f] << "\t" << abs_value << std::endl; } From 028e91d6c2e2b765536ef8d974e764eb11a9b4aa Mon Sep 17 00:00:00 2001 From: LUNASEA <33978601+maki49@users.noreply.github.com> Date: Sat, 4 Jan 2025 12:52:20 +0800 Subject: [PATCH 39/44] fix some warnings about esolver (#5807) --- source/module_esolver/esolver_gets.cpp | 2 +- source/module_esolver/esolver_ks.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/module_esolver/esolver_gets.cpp b/source/module_esolver/esolver_gets.cpp index cf51f6bbbe..842b0340e1 100644 --- a/source/module_esolver/esolver_gets.cpp +++ b/source/module_esolver/esolver_gets.cpp @@ -147,7 +147,7 @@ void ESolver_GetS::runner(UnitCell& ucell, const int istep) } void ESolver_GetS::after_all_runners(UnitCell& ucell) {}; -double ESolver_GetS::cal_energy() {}; +double ESolver_GetS::cal_energy() { return 0.0; }; void ESolver_GetS::cal_force(UnitCell& ucell, ModuleBase::matrix& force) {}; void ESolver_GetS::cal_stress(UnitCell& ucell, ModuleBase::matrix& stress) {}; diff --git a/source/module_esolver/esolver_ks.h b/source/module_esolver/esolver_ks.h index c20a53f555..16932bcc6a 100644 --- a/source/module_esolver/esolver_ks.h +++ b/source/module_esolver/esolver_ks.h @@ -43,7 +43,7 @@ class ESolver_KS : public ESolver_FP virtual void iter_init(UnitCell& ucell, const int istep, const int iter); //! Something to do after hamilt2density function in each iter loop. - virtual void iter_finish(UnitCell& ucell, const int istep, int& iter); + virtual void iter_finish(UnitCell& ucell, const int istep, int& iter) override; // calculate electron density from a specific Hamiltonian with ethr virtual void hamilt2density_single(UnitCell& ucell, const int istep, const int iter, const double ethr); From 414446ac18aa79385a143f9861f10e49575937ec Mon Sep 17 00:00:00 2001 From: liiutao <74701833+A-006@users.noreply.github.com> Date: Sat, 4 Jan 2025 17:33:07 +0800 Subject: [PATCH 40/44] Refactor:remove cal_tau from ElecStateLCAO (#5802) * modify the cal_tau in lcao * add template for cal_tau * updatea func for cal_tau --- source/module_elecstate/elecstate_lcao.cpp | 5 ++- source/module_elecstate/elecstate_lcao.h | 1 - .../elecstate_lcao_cal_tau.cpp | 39 +++++++++++++------ .../module_elecstate/elecstate_lcao_cal_tau.h | 21 ++++++++++ source/module_esolver/esolver_ks_lcao.cpp | 6 ++- source/module_rdmft/update_state_rdmft.cpp | 6 +-- 6 files changed, 58 insertions(+), 20 deletions(-) create mode 100644 source/module_elecstate/elecstate_lcao_cal_tau.h diff --git a/source/module_elecstate/elecstate_lcao.cpp b/source/module_elecstate/elecstate_lcao.cpp index 9b2c945fd9..748ef7a9b8 100644 --- a/source/module_elecstate/elecstate_lcao.cpp +++ b/source/module_elecstate/elecstate_lcao.cpp @@ -8,6 +8,7 @@ #include "module_hamilt_lcao/module_gint/grid_technique.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" #include "module_parameter/parameter.h" +#include "elecstate_lcao_cal_tau.h" #include @@ -64,7 +65,7 @@ void ElecStateLCAO>::psiToRho(const psi::Psical_tau(psi); + elecstate::lcao_cal_tau_k(gint_k, this->charge); } this->charge->renormalize_rho(); @@ -99,7 +100,7 @@ void ElecStateLCAO::psiToRho(const psi::Psi& psi) if (XC_Functional::get_func_type() == 3 || XC_Functional::get_func_type() == 5) { - this->cal_tau(psi); + elecstate::lcao_cal_tau_gamma(gint_gamma, this->charge); } this->charge->renormalize_rho(); diff --git a/source/module_elecstate/elecstate_lcao.h b/source/module_elecstate/elecstate_lcao.h index 4beeb017f0..c85f6e27e5 100644 --- a/source/module_elecstate/elecstate_lcao.h +++ b/source/module_elecstate/elecstate_lcao.h @@ -46,7 +46,6 @@ class ElecStateLCAO : public ElecState // virtual void psiToRho(const psi::Psi& psi) override; // return current electronic density rho, as a input for constructing Hamiltonian // const double* getRho(int spin) const override; - virtual void cal_tau(const psi::Psi& psi) override; // update charge density for next scf step // void getNewRho() override; diff --git a/source/module_elecstate/elecstate_lcao_cal_tau.cpp b/source/module_elecstate/elecstate_lcao_cal_tau.cpp index e6bd6561a0..c7d83bd1e9 100644 --- a/source/module_elecstate/elecstate_lcao_cal_tau.cpp +++ b/source/module_elecstate/elecstate_lcao_cal_tau.cpp @@ -1,41 +1,56 @@ #include "elecstate_lcao.h" - +#include "elecstate_lcao_cal_tau.h" #include "module_base/timer.h" namespace elecstate { // calculate the kinetic energy density tau, multi-k case -template <> -void ElecStateLCAO>::cal_tau(const psi::Psi>& psi) +void lcao_cal_tau_k(Gint_k* gint_k, + Charge* charge) { ModuleBase::timer::tick("ElecStateLCAO", "cal_tau"); for (int is = 0; is < PARAM.inp.nspin; is++) { - ModuleBase::GlobalFunc::ZEROS(this->charge->kin_r[is], this->charge->nrxx); + ModuleBase::GlobalFunc::ZEROS(charge->kin_r[is], charge->nrxx); } - Gint_inout inout1(this->charge->kin_r, Gint_Tools::job_type::tau, PARAM.inp.nspin); - this->gint_k->cal_gint(&inout1); + Gint_inout inout1(charge->kin_r, Gint_Tools::job_type::tau, PARAM.inp.nspin); + gint_k->cal_gint(&inout1); ModuleBase::timer::tick("ElecStateLCAO", "cal_tau"); return; } // calculate the kinetic energy density tau, gamma-only case -template <> -void ElecStateLCAO::cal_tau(const psi::Psi& psi) +void lcao_cal_tau_gamma(Gint_Gamma* gint_gamma, + Charge* charge) { ModuleBase::timer::tick("ElecStateLCAO", "cal_tau"); for (int is = 0; is < PARAM.inp.nspin; is++) { - ModuleBase::GlobalFunc::ZEROS(this->charge->kin_r[is], this->charge->nrxx); + ModuleBase::GlobalFunc::ZEROS(charge->kin_r[is], charge->nrxx); } - Gint_inout inout1(this->charge->kin_r, Gint_Tools::job_type::tau, PARAM.inp.nspin); - this->gint_gamma->cal_gint(&inout1); + Gint_inout inout1(charge->kin_r, Gint_Tools::job_type::tau, PARAM.inp.nspin); + gint_gamma->cal_gint(&inout1); ModuleBase::timer::tick("ElecStateLCAO", "cal_tau"); return; } -} \ No newline at end of file +template <> +void lcao_cal_tau(Gint_Gamma* gint_gamma, + Gint_k* gint_k, + Charge* charge) +{ + lcao_cal_tau_gamma(gint_gamma, charge); +} +template <> +void lcao_cal_tau>(Gint_Gamma* gint_gamma, + Gint_k* gint_k, + Charge* charge) +{ + lcao_cal_tau_k(gint_k, charge); +} + +} // namespace elecstate \ No newline at end of file diff --git a/source/module_elecstate/elecstate_lcao_cal_tau.h b/source/module_elecstate/elecstate_lcao_cal_tau.h new file mode 100644 index 0000000000..c0cfbc078a --- /dev/null +++ b/source/module_elecstate/elecstate_lcao_cal_tau.h @@ -0,0 +1,21 @@ +#ifndef ELECSTATE_LCAO_CAL_TAU_H +#define ELECSTATE_LCAO_CAL_TAU_H +#include "module_elecstate/module_charge/charge.h" +#include "module_hamilt_lcao/module_gint/gint_gamma.h" +#include "module_hamilt_lcao/module_gint/gint_k.h" +namespace elecstate +{ + + void lcao_cal_tau_k(Gint_k* gint_k, + Charge* charge); + + void lcao_cal_tau_gamma(Gint_Gamma* gint_gamma, + Charge* charge); + + template + void lcao_cal_tau(Gint_Gamma* gint_gamma, + Gint_k* gint_k, + Charge* charge); + +} +#endif \ No newline at end of file diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index 3ee810abc0..b9fb62e853 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -34,6 +34,7 @@ #include "module_base/global_function.h" #include "module_cell/module_neighbor/sltk_grid_driver.h" #include "module_elecstate/cal_ux.h" +#include "module_elecstate/elecstate_lcao_cal_tau.h" #include "module_elecstate/module_charge/symmetry_rho.h" #include "module_elecstate/occupy.h" #include "module_hamilt_lcao/hamilt_lcaodft/LCAO_domain.h" // need divide_HS_in_frag @@ -927,8 +928,9 @@ void ESolver_KS_LCAO::after_scf(UnitCell& ucell, const int istep) // 1) calculate the kinetic energy density tau, sunliang 2024-09-18 if (PARAM.inp.out_elf[0] > 0) { - assert(this->psi != nullptr); - this->pelec->cal_tau(*(this->psi)); + elecstate::lcao_cal_tau(&(this->GG), + &(this->GK), + this->pelec->charge); } //! 2) call after_scf() of ESolver_KS diff --git a/source/module_rdmft/update_state_rdmft.cpp b/source/module_rdmft/update_state_rdmft.cpp index abe56d71c3..dc0398e8c9 100644 --- a/source/module_rdmft/update_state_rdmft.cpp +++ b/source/module_rdmft/update_state_rdmft.cpp @@ -8,7 +8,7 @@ #include "module_elecstate/module_dm/cal_dm_psi.h" #include "module_elecstate/module_dm/density_matrix.h" #include "module_elecstate/module_charge/symmetry_rho.h" - +#include "module_elecstate/elecstate_lcao_cal_tau.h" namespace rdmft { @@ -118,7 +118,7 @@ void RDMFT::update_charge(UnitCell& ucell) // } // Gint_inout inout1(charge->kin_r, Gint_Tools::job_type::tau); // GG->cal_gint(&inout1); - this->pelec->cal_tau(wfc); + elecstate::lcao_cal_tau_gamma(GG, charge); } charge->renormalize_rho(); @@ -148,7 +148,7 @@ void RDMFT::update_charge(UnitCell& ucell) // } // Gint_inout inout1(charge->kin_r, Gint_Tools::job_type::tau); // GK->cal_gint(&inout1); - this->pelec->cal_tau(wfc); + elecstate::lcao_cal_tau_k(GK, charge); } charge->renormalize_rho(); From 9ab9150e278f9c97e57778c5a4854c0287841a3b Mon Sep 17 00:00:00 2001 From: Critsium Date: Sat, 4 Jan 2025 04:35:14 -0500 Subject: [PATCH 41/44] [Feature] Add some GPU kernels to blas_connector (#5799) * Initial commit * Modify CMakeLists * Complete CMakeLists in module_base * Add blas_connector.cpp definition * Fix module_base tests * Fix tests failure * fix opt_test * OPTFIX2 * Return all changes * Fix global_func_text * Fix MPI Bug * return base_math_chebyshev * Fix MPI bug * Finish * [pre-commit.ci lite] apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/module_base/blas_connector.cpp | 207 ++++++++++++++++-- source/module_base/test/CMakeLists.txt | 76 +++---- .../test/clebsch_gordan_coeff_test.cpp | 12 - .../module_base/test/complexmatrix_test.cpp | 6 - .../module_base/test/global_function_test.cpp | 10 +- .../module_base/test/inverse_matrix_test.cpp | 6 - .../module_base/test/math_chebyshev_test.cpp | 4 + source/module_base/test/math_ylmreal_test.cpp | 10 - source/module_base/test/opt_CG_test.cpp | 46 +++- source/module_base/test/opt_TN_test.cpp | 26 ++- source/module_base/test/opt_test_tools.cpp | 3 + 11 files changed, 291 insertions(+), 115 deletions(-) diff --git a/source/module_base/blas_connector.cpp b/source/module_base/blas_connector.cpp index 85ea4584e9..3bb91e2f01 100644 --- a/source/module_base/blas_connector.cpp +++ b/source/module_base/blas_connector.cpp @@ -5,32 +5,101 @@ #include "module_base/global_variable.h" #endif +#ifdef __CUDA +#include +#include +#include +#include +#include +#include "module_base/tool_quit.h" + +#include "cublas_v2.h" + +namespace BlasUtils{ + + static cublasHandle_t cublas_handle = nullptr; + + void createGpuBlasHandle(){ + if (cublas_handle == nullptr) { + cublasErrcheck(cublasCreate(&cublas_handle)); + } + } + + void destoryBLAShandle(){ + if (cublas_handle != nullptr) { + cublasErrcheck(cublasDestroy(cublas_handle)); + cublas_handle = nullptr; + } + } + + + cublasOperation_t judge_trans(bool is_complex, const char& trans, const char* name) + { + if (trans == 'N') + { + return CUBLAS_OP_N; + } + else if(trans == 'T') + { + return CUBLAS_OP_T; + } + else if(is_complex && trans == 'C') + { + return CUBLAS_OP_C; + } + return CUBLAS_OP_N; + } + +} // namespace BlasUtils + +#endif + void BlasConnector::axpy( const int n, const float alpha, const float *X, const int incX, float *Y, const int incY, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { saxpy_(&n, &alpha, X, &incX, Y, &incY); -} + } + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasErrcheck(cublasSaxpy(BlasUtils::cublas_handle, n, &alpha, X, incX, Y, incY)); +#endif + } } void BlasConnector::axpy( const int n, const double alpha, const double *X, const int incX, double *Y, const int incY, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { daxpy_(&n, &alpha, X, &incX, Y, &incY); -} + } + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasErrcheck(cublasDaxpy(BlasUtils::cublas_handle, n, &alpha, X, incX, Y, incY)); +#endif + } } void BlasConnector::axpy( const int n, const std::complex alpha, const std::complex *X, const int incX, std::complex *Y, const int incY, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { caxpy_(&n, &alpha, X, &incX, Y, &incY); -} + } + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasErrcheck(cublasCaxpy(BlasUtils::cublas_handle, n, (float2*)&alpha, (float2*)X, incX, (float2*)Y, incY)); +#endif + } } void BlasConnector::axpy( const int n, const std::complex alpha, const std::complex *X, const int incX, std::complex *Y, const int incY, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { zaxpy_(&n, &alpha, X, &incX, Y, &incY); -} + } + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasErrcheck(cublasZaxpy(BlasUtils::cublas_handle, n, (double2*)&alpha, (double2*)X, incX, (double2*)Y, incY)); +#endif + } } @@ -39,28 +108,48 @@ void BlasConnector::scal( const int n, const float alpha, float *X, const int i { if (device_type == base_device::AbacusDevice_t::CpuDevice) { sscal_(&n, &alpha, X, &incX); -} + } + else if (device_type == base_device::AbacusDevice_t::GpuDevice) { +#ifdef __CUDA + cublasErrcheck(cublasSscal(BlasUtils::cublas_handle, n, &alpha, X, incX)); +#endif + } } void BlasConnector::scal( const int n, const double alpha, double *X, const int incX, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { dscal_(&n, &alpha, X, &incX); -} + } + else if (device_type == base_device::AbacusDevice_t::GpuDevice) { +#ifdef __CUDA + cublasErrcheck(cublasDscal(BlasUtils::cublas_handle, n, &alpha, X, incX)); +#endif + } } void BlasConnector::scal( const int n, const std::complex alpha, std::complex *X, const int incX, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { cscal_(&n, &alpha, X, &incX); -} + } + else if (device_type == base_device::AbacusDevice_t::GpuDevice) { +#ifdef __CUDA + cublasErrcheck(cublasCscal(BlasUtils::cublas_handle, n, (float2*)&alpha, (float2*)X, incX)); +#endif + } } void BlasConnector::scal( const int n, const std::complex alpha, std::complex *X, const int incX, base_device::AbacusDevice_t device_type) { if (device_type == base_device::AbacusDevice_t::CpuDevice) { zscal_(&n, &alpha, X, &incX); -} + } + else if (device_type == base_device::AbacusDevice_t::GpuDevice) { +#ifdef __CUDA + cublasErrcheck(cublasZscal(BlasUtils::cublas_handle, n, (double2*)&alpha, (double2*)X, incX)); +#endif + } } @@ -70,6 +159,13 @@ float BlasConnector::dot( const int n, const float *X, const int incX, const flo if (device_type == base_device::AbacusDevice_t::CpuDevice) { return sdot_(&n, X, &incX, Y, &incY); } + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + float result = 0.0; + cublasErrcheck(cublasSdot(BlasUtils::cublas_handle, n, X, incX, Y, incY, &result)); + return result; +#endif + } return sdot_(&n, X, &incX, Y, &incY); } @@ -78,6 +174,13 @@ double BlasConnector::dot( const int n, const double *X, const int incX, const d if (device_type == base_device::AbacusDevice_t::CpuDevice) { return ddot_(&n, X, &incX, Y, &incY); } + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + double result = 0.0; + cublasErrcheck(cublasDdot(BlasUtils::cublas_handle, n, X, incX, Y, incY, &result)); + return result; +#endif + } return ddot_(&n, X, &incX, Y, &incY); } @@ -92,13 +195,20 @@ void BlasConnector::gemm(const char transa, const char transb, const int m, cons &alpha, b, &ldb, a, &lda, &beta, c, &ldc); } - #ifdef __DSP +#ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice){ sgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK); } - #endif +#endif + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); + cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); + cublasErrcheck(cublasSgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, m, k, &alpha, b, ldb, a, lda, &beta, c, ldc)); +#endif + } } void BlasConnector::gemm(const char transa, const char transb, const int m, const int n, const int k, @@ -110,13 +220,20 @@ void BlasConnector::gemm(const char transa, const char transb, const int m, cons &alpha, b, &ldb, a, &lda, &beta, c, &ldc); } - #ifdef __DSP +#ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice){ dgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK); } - #endif +#endif + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); + cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); + cublasErrcheck(cublasDgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, m, k, &alpha, b, ldb, a, lda, &beta, c, ldc)); +#endif + } } void BlasConnector::gemm(const char transa, const char transb, const int m, const int n, const int k, @@ -128,13 +245,20 @@ void BlasConnector::gemm(const char transa, const char transb, const int m, cons &alpha, b, &ldb, a, &lda, &beta, c, &ldc); } - #ifdef __DSP +#ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { cgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK); } - #endif +#endif + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); + cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); + cublasErrcheck(cublasCgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, m, k, (float2*)&alpha, (float2*)b, ldb, (float2*)a, lda, (float2*)&beta, (float2*)c, ldc)); +#endif + } } void BlasConnector::gemm(const char transa, const char transb, const int m, const int n, const int k, @@ -146,13 +270,20 @@ void BlasConnector::gemm(const char transa, const char transb, const int m, cons &alpha, b, &ldb, a, &lda, &beta, c, &ldc); } - #ifdef __DSP +#ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { zgemm_mth_(&transb, &transa, &n, &m, &k, &alpha, b, &ldb, a, &lda, &beta, c, &ldc, GlobalV::MY_RANK); } - #endif +#endif + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); + cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); + cublasErrcheck(cublasZgemm(BlasUtils::cublas_handle, cutransA, cutransB, n, m, k, (double2*)&alpha, (double2*)b, ldb, (double2*)a, lda, (double2*)&beta, (double2*)c, ldc)); +#endif + } } // Col-Major part @@ -165,13 +296,20 @@ void BlasConnector::gemm_cm(const char transa, const char transb, const int m, c &alpha, a, &lda, b, &ldb, &beta, c, &ldc); } - #ifdef __DSP +#ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice){ sgemm_mth_(&transb, &transa, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK); } - #endif +#endif + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); + cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); + cublasErrcheck(cublasSgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)); +#endif + } } void BlasConnector::gemm_cm(const char transa, const char transb, const int m, const int n, const int k, @@ -183,13 +321,20 @@ void BlasConnector::gemm_cm(const char transa, const char transb, const int m, c &alpha, a, &lda, b, &ldb, &beta, c, &ldc); } - #ifdef __DSP +#ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice){ dgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK); } - #endif +#endif + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); + cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); + cublasErrcheck(cublasDgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)); +#endif + } } void BlasConnector::gemm_cm(const char transa, const char transb, const int m, const int n, const int k, @@ -201,13 +346,20 @@ void BlasConnector::gemm_cm(const char transa, const char transb, const int m, c &alpha, a, &lda, b, &ldb, &beta, c, &ldc); } - #ifdef __DSP +#ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { cgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK); } - #endif +#endif + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); + cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); + cublasErrcheck(cublasCgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, n, k, (float2*)&alpha, (float2*)a, lda, (float2*)b, ldb, (float2*)&beta, (float2*)c, ldc)); +#endif + } } void BlasConnector::gemm_cm(const char transa, const char transb, const int m, const int n, const int k, @@ -219,13 +371,20 @@ void BlasConnector::gemm_cm(const char transa, const char transb, const int m, c &alpha, a, &lda, b, &ldb, &beta, c, &ldc); } - #ifdef __DSP +#ifdef __DSP else if (device_type == base_device::AbacusDevice_t::DspDevice) { zgemm_mth_(&transa, &transb, &m, &n, &k, &alpha, a, &lda, b, &ldb, &beta, c, &ldc, GlobalV::MY_RANK); } - #endif +#endif + else if (device_type == base_device::AbacusDevice_t::GpuDevice){ +#ifdef __CUDA + cublasOperation_t cutransA = BlasUtils::judge_trans(false, transa, "gemm_op"); + cublasOperation_t cutransB = BlasUtils::judge_trans(false, transb, "gemm_op"); + cublasErrcheck(cublasZgemm(BlasUtils::cublas_handle, cutransA, cutransB, m, n, k, (double2*)&alpha, (double2*)a, lda, (double2*)b, ldb, (double2*)&beta, (double2*)c, ldc)); +#endif + } } // Symm and Hemm part. Only col-major is supported. diff --git a/source/module_base/test/CMakeLists.txt b/source/module_base/test/CMakeLists.txt index 09b77c7404..0c8fd53461 100644 --- a/source/module_base/test/CMakeLists.txt +++ b/source/module_base/test/CMakeLists.txt @@ -2,8 +2,8 @@ remove_definitions(-D__MPI) install(DIRECTORY data DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) AddTest( TARGET base_blas_connector - LIBS parameter ${math_libs} - SOURCES blas_connector_test.cpp ../blas_connector.cpp + LIBS parameter ${math_libs} base device + SOURCES blas_connector_test.cpp ) AddTest( TARGET base_atom_in @@ -31,8 +31,8 @@ AddTest( ) ADDTest( TARGET base_global_function - LIBS parameter ${math_libs} - SOURCES global_function_test.cpp ../blas_connector.cpp ../global_function.cpp ../tool_quit.cpp ../global_variable.cpp ../global_file.cpp ../memory.cpp ../timer.cpp + LIBS parameter ${math_libs} + SOURCES global_function_test.cpp ../global_function.cpp ../tool_quit.cpp ../global_variable.cpp ../global_file.cpp ../memory.cpp ../timer.cpp ) AddTest( TARGET base_vector3 @@ -41,8 +41,8 @@ AddTest( ) AddTest( TARGET base_matrix3 - LIBS parameter ${math_libs} - SOURCES matrix3_test.cpp ../matrix3.cpp ../matrix.cpp ../tool_quit.cpp ../global_variable.cpp ../global_file.cpp ../global_function.cpp ../memory.cpp ../timer.cpp ../blas_connector.cpp + LIBS parameter ${math_libs} base device + SOURCES matrix3_test.cpp ) AddTest( TARGET base_intarray @@ -56,8 +56,8 @@ AddTest( ) AddTest( TARGET base_matrix - LIBS parameter ${math_libs} - SOURCES matrix_test.cpp ../blas_connector.cpp ../matrix.cpp ../tool_quit.cpp ../global_variable.cpp ../global_file.cpp ../global_function.cpp ../memory.cpp ../timer.cpp + LIBS parameter ${math_libs} base device + SOURCES matrix_test.cpp ) AddTest( TARGET base_complexarray @@ -66,8 +66,8 @@ AddTest( ) AddTest( TARGET base_complexmatrix - LIBS parameter ${math_libs} - SOURCES complexmatrix_test.cpp ../blas_connector.cpp ../complexmatrix.cpp ../matrix.cpp + LIBS parameter ${math_libs} base device + SOURCES complexmatrix_test.cpp ) AddTest( TARGET base_integral @@ -81,10 +81,8 @@ AddTest( ) AddTest( TARGET base_ylmreal - LIBS parameter ${math_libs} device - SOURCES math_ylmreal_test.cpp ../blas_connector.cpp ../math_ylmreal.cpp ../complexmatrix.cpp ../global_variable.cpp ../ylm.cpp ../realarray.cpp ../timer.cpp ../matrix.cpp ../vector3.h - ../parallel_reduce.cpp ../parallel_global.cpp ../parallel_comm.cpp ../parallel_common.cpp - ../memory.cpp ../libm/branred.cpp ../libm/sincos.cpp + LIBS parameter ${math_libs} base device + SOURCES math_ylmreal_test.cpp ../libm/branred.cpp ../libm/sincos.cpp ) AddTest( TARGET base_math_sphbes @@ -93,13 +91,13 @@ AddTest( ) AddTest( TARGET base_mathzone - LIBS parameter ${math_libs} - SOURCES mathzone_test.cpp ../matrix3.cpp ../matrix.cpp ../tool_quit.cpp ../global_variable.cpp ../global_file.cpp ../global_function.cpp ../memory.cpp ../timer.cpp ../blas_connector.cpp + LIBS parameter ${math_libs} base device + SOURCES mathzone_test.cpp ) AddTest( TARGET base_mathzone_add1 - LIBS parameter ${math_libs} - SOURCES mathzone_add1_test.cpp ../blas_connector.cpp ../mathzone_add1.cpp ../math_sphbes.cpp ../matrix3.cpp ../matrix.cpp ../tool_quit.cpp ../global_variable.cpp ../global_file.cpp ../global_function.cpp ../memory.cpp ../timer.cpp + LIBS parameter ${math_libs} base device + SOURCES mathzone_add1_test.cpp ) AddTest( TARGET base_math_polyint @@ -108,8 +106,8 @@ AddTest( ) AddTest( TARGET base_gram_schmidt_orth - LIBS parameter ${math_libs} - SOURCES gram_schmidt_orth_test.cpp ../blas_connector.cpp ../gram_schmidt_orth.h ../gram_schmidt_orth-inl.h ../global_function.h ../math_integral.cpp + LIBS parameter ${math_libs} base device + SOURCES gram_schmidt_orth_test.cpp ) AddTest( TARGET base_math_bspline @@ -118,8 +116,8 @@ AddTest( ) AddTest( TARGET base_inverse_matrix - LIBS parameter ${math_libs} - SOURCES inverse_matrix_test.cpp ../blas_connector.cpp ../inverse_matrix.cpp ../complexmatrix.cpp ../matrix.cpp ../timer.cpp + LIBS parameter ${math_libs} base device + SOURCES inverse_matrix_test.cpp ) AddTest( TARGET base_mymath @@ -134,26 +132,26 @@ AddTest( AddTest( TARGET base_math_chebyshev - LIBS parameter ${math_libs} device container - SOURCES math_chebyshev_test.cpp ../blas_connector.cpp ../math_chebyshev.cpp ../tool_quit.cpp ../global_variable.cpp ../timer.cpp ../global_file.cpp ../global_function.cpp ../memory.cpp ../parallel_reduce.cpp + LIBS parameter ${math_libs} base device container + SOURCES math_chebyshev_test.cpp ) AddTest( TARGET base_lapack_connector - LIBS parameter ${math_libs} - SOURCES lapack_connector_test.cpp ../blas_connector.cpp ../lapack_connector.h + LIBS parameter ${math_libs} base device + SOURCES lapack_connector_test.cpp ) AddTest( TARGET base_opt_CG - LIBS parameter ${math_libs} - SOURCES opt_CG_test.cpp opt_test_tools.cpp ../blas_connector.cpp ../opt_CG.cpp ../opt_DCsrch.cpp ../global_variable.cpp ../parallel_reduce.cpp + LIBS parameter ${math_libs} base device + SOURCES opt_CG_test.cpp opt_test_tools.cpp ) AddTest( TARGET base_opt_TN - LIBS parameter ${math_libs} - SOURCES opt_TN_test.cpp opt_test_tools.cpp ../blas_connector.cpp ../opt_CG.cpp ../opt_DCsrch.cpp ../global_variable.cpp ../parallel_reduce.cpp + LIBS parameter ${math_libs} base device + SOURCES opt_TN_test.cpp opt_test_tools.cpp ) AddTest( @@ -194,28 +192,26 @@ AddTest( AddTest( TARGET spherical_bessel_transformer - SOURCES spherical_bessel_transformer_test.cpp ../blas_connector.cpp ../spherical_bessel_transformer.cpp ../math_sphbes.cpp ../math_integral.cpp ../timer.cpp - LIBS parameter ${math_libs} + SOURCES spherical_bessel_transformer_test.cpp + LIBS parameter ${math_libs} base device ) AddTest( TARGET cubic_spline - SOURCES cubic_spline_test.cpp ../blas_connector.cpp ../cubic_spline.cpp - LIBS parameter ${math_libs} + SOURCES cubic_spline_test.cpp + LIBS parameter ${math_libs} base device ) AddTest( TARGET clebsch_gordan_coeff_test - SOURCES clebsch_gordan_coeff_test.cpp ../blas_connector.cpp ../clebsch_gordan_coeff.cpp ../intarray.cpp ../realarray.cpp ../complexmatrix.cpp ../matrix.cpp ../timer.cpp - ../math_ylmreal.cpp ../global_variable.cpp ../ylm.cpp ../timer.cpp ../vector3.h ../parallel_reduce.cpp ../parallel_global.cpp ../parallel_comm.cpp ../parallel_common.cpp - ../memory.cpp ../libm/branred.cpp ../libm/sincos.cpp ../inverse_matrix.cpp ../lapack_connector.h - LIBS parameter ${math_libs} device + SOURCES clebsch_gordan_coeff_test.cpp + LIBS parameter ${math_libs} base device ) AddTest( TARGET assoc_laguerre_test - SOURCES assoc_laguerre_test.cpp ../blas_connector.cpp ../assoc_laguerre.cpp ../tool_quit.cpp ../global_variable.cpp ../global_file.cpp ../global_function.cpp ../memory.cpp ../timer.cpp - LIBS parameter ${math_libs} + SOURCES assoc_laguerre_test.cpp + LIBS parameter ${math_libs} base device ) AddTest( diff --git a/source/module_base/test/clebsch_gordan_coeff_test.cpp b/source/module_base/test/clebsch_gordan_coeff_test.cpp index 16efa091b5..888249765f 100644 --- a/source/module_base/test/clebsch_gordan_coeff_test.cpp +++ b/source/module_base/test/clebsch_gordan_coeff_test.cpp @@ -16,18 +16,6 @@ * - functions: gen_rndm_r and compute_ap */ -namespace ModuleBase -{ -void WARNING_QUIT(const std::string& file, const std::string& description) -{ - return; -} -void WARNING(const std::string& file, const std::string& description) -{ - return; -} -} // namespace ModuleBase - TEST(ClebschGordanTest, ClebschGordanExit) { int lmaxkb = -2; diff --git a/source/module_base/test/complexmatrix_test.cpp b/source/module_base/test/complexmatrix_test.cpp index 0adc52363a..da11fafcfd 100644 --- a/source/module_base/test/complexmatrix_test.cpp +++ b/source/module_base/test/complexmatrix_test.cpp @@ -38,12 +38,6 @@ * */ -//a mock function of WARNING_QUIT, to avoid the uncorrected call by matrix.cpp at line 37. -namespace ModuleBase -{ - void WARNING_QUIT(const std::string &file,const std::string &description) {exit(1);} -} - inline void EXPECT_COMPLEX_EQ(const std::complex& a,const std::complex& b) { EXPECT_DOUBLE_EQ(a.real(),b.real()); diff --git a/source/module_base/test/global_function_test.cpp b/source/module_base/test/global_function_test.cpp index 013396d6b1..05d4d70877 100644 --- a/source/module_base/test/global_function_test.cpp +++ b/source/module_base/test/global_function_test.cpp @@ -4,7 +4,6 @@ #include "module_parameter/parameter.h" #undef private #include "../vector3.h" -#include "../blas_connector.h" #include "../tool_quit.h" #include #include @@ -692,6 +691,9 @@ TEST_F(GlobalFunctionTest,MemAvailable) TEST_F(GlobalFunctionTest,BlockHere) { +#ifdef __MPI +#undef __MPI +#endif std::string output2; std::string block_in="111"; GlobalV::MY_RANK=1; @@ -706,6 +708,9 @@ TEST_F(GlobalFunctionTest,BlockHere) TEST_F(GlobalFunctionTest,BlockHere2) { +#ifdef __MPI +#undef __MPI +#endif std::string output2; std::string block_in="111"; GlobalV::MY_RANK=0; @@ -724,6 +729,9 @@ TEST_F(GlobalFunctionTest,BlockHere2) TEST_F(GlobalFunctionTest,BlockHere3) { +#ifdef __MPI +#undef __MPI +#endif std::string output2; std::string block_in="111"; GlobalV::MY_RANK=0; diff --git a/source/module_base/test/inverse_matrix_test.cpp b/source/module_base/test/inverse_matrix_test.cpp index a871f906cd..b88e556af1 100644 --- a/source/module_base/test/inverse_matrix_test.cpp +++ b/source/module_base/test/inverse_matrix_test.cpp @@ -16,12 +16,6 @@ * - computes the inverse of a dim*dim real matrix */ -//a mock function of WARNING_QUIT, to avoid the uncorrected call by matrix.cpp at line 37. -namespace ModuleBase -{ - void WARNING_QUIT(const std::string &file,const std::string &description) {exit(1);} -} - TEST(InverseMatrixComplexTest, InverseMatrixComplex) { int dim = 10; diff --git a/source/module_base/test/math_chebyshev_test.cpp b/source/module_base/test/math_chebyshev_test.cpp index 125dbdaeaa..a7ea215266 100644 --- a/source/module_base/test/math_chebyshev_test.cpp +++ b/source/module_base/test/math_chebyshev_test.cpp @@ -336,6 +336,8 @@ TEST_F(MathChebyshevTest, tracepolyA) TEST_F(MathChebyshevTest, checkconverge) { +#ifdef __MPI +#undef __MPI const int norder = 100; p_chetest = new ModuleBase::Chebyshev(norder); auto fun_sigma_y @@ -377,6 +379,8 @@ TEST_F(MathChebyshevTest, checkconverge) delete[] v; delete p_chetest; +#define __MPI +#endif } TEST_F(MathChebyshevTest, recurs) diff --git a/source/module_base/test/math_ylmreal_test.cpp b/source/module_base/test/math_ylmreal_test.cpp index c973d8cd28..891c948f7e 100644 --- a/source/module_base/test/math_ylmreal_test.cpp +++ b/source/module_base/test/math_ylmreal_test.cpp @@ -36,16 +36,6 @@ * */ - - -//mock functions of WARNING_QUIT and WARNING -namespace ModuleBase -{ - void WARNING_QUIT(const std::string &file,const std::string &description) {exit(1);} - void WARNING(const std::string &file,const std::string &description) {return ;} -} - - class YlmRealTest : public testing::Test { protected: diff --git a/source/module_base/test/opt_CG_test.cpp b/source/module_base/test/opt_CG_test.cpp index 4b324c7cbb..b8abeb5760 100644 --- a/source/module_base/test/opt_CG_test.cpp +++ b/source/module_base/test/opt_CG_test.cpp @@ -1,3 +1,6 @@ +#ifdef __MPI +#undef __MPI +#endif #include "gtest/gtest.h" #include "../opt_CG.h" #include "../opt_DCsrch.h" @@ -18,10 +21,10 @@ class CG_test : public testing::Test double residual = 10.; double tol = 1e-5; int final_iter = 0; - char *task = NULL; - double *Ap = NULL; - double *p = NULL; - double *x = NULL; + char *task = nullptr; + double *Ap = nullptr; + double *p = nullptr; + double *x = nullptr; void SetUp() { @@ -65,7 +68,8 @@ class CG_test : public testing::Test tools.le.get_Ap(tools.le.A, p, Ap); int ifPD = 0; step = cg.step_length(Ap, p, ifPD); - for (int i = 0; i < 3; ++i) x[i] += step * p[i]; + for (int i = 0; i < 3; ++i) { x[i] += step * p[i]; +} residual = cg.get_residual(); } } @@ -102,14 +106,16 @@ class CG_test : public testing::Test { tools.dfuncdx(x, gradient, func_label); residual = 0; - for (int i = 0; i<3 ;++i) residual += gradient[i] * gradient[i]; + for (int i = 0; i<3 ;++i) { residual += gradient[i] * gradient[i]; +} if (residual < tol) { final_iter = iter; break; } cg.next_direct(gradient, cg_label, p); - for (int i = 0; i < 3; ++i) temp_x[i] = x[i]; + for (int i = 0; i < 3; ++i) { temp_x[i] = x[i]; +} task[0] = 'S'; task[1] = 'T'; task[2] = 'A'; task[3] = 'R'; task[4] = 'T'; while (true) { @@ -118,7 +124,8 @@ class CG_test : public testing::Test ds.dcSrch(f, g, step, task); if (task[0] == 'F' && task[1] == 'G') { - for (int j = 0; j < 3; ++j) temp_x[j] = x[j] + step * p[j]; + for (int j = 0; j < 3; ++j) { temp_x[j] = x[j] + step * p[j]; +} continue; } else if (task[0] == 'C' && task[1] == 'O') @@ -134,7 +141,8 @@ class CG_test : public testing::Test break; } } - for (int i = 0; i < 3; ++i) x[i] += step * p[i]; + for (int i = 0; i < 3; ++i) { x[i] += step * p[i]; +} } delete[] temp_x; delete[] gradient; @@ -143,51 +151,71 @@ class CG_test : public testing::Test TEST_F(CG_test, Stand_Solve_LinearEq) { +#ifdef __MPI +#undef __MPI CG_Solve_LinearEq(); EXPECT_NEAR(x[0], 0.5, DOUBLETHRESHOLD); EXPECT_NEAR(x[1], 1.6429086563584579739e-18, DOUBLETHRESHOLD); EXPECT_NEAR(x[2], 1.5, DOUBLETHRESHOLD); ASSERT_EQ(final_iter, 4); ASSERT_EQ(cg.get_iter(), 4); +#define __MPI +#endif } TEST_F(CG_test, PR_Solve_LinearEq) { +#ifdef __MPI +#undef __MPI Solve(1, 0); EXPECT_NEAR(x[0], 0.50000000000003430589, DOUBLETHRESHOLD); EXPECT_NEAR(x[1], -3.4028335704761047964e-14, DOUBLETHRESHOLD); EXPECT_NEAR(x[2], 1.5000000000000166533, DOUBLETHRESHOLD); ASSERT_EQ(final_iter, 3); ASSERT_EQ(cg.get_iter(), 3); +#define __MPI +#endif } TEST_F(CG_test, HZ_Solve_LinearEq) { +#ifdef __MPI +#undef __MPI Solve(2, 0); EXPECT_NEAR(x[0], 0.49999999999999944489, DOUBLETHRESHOLD); EXPECT_NEAR(x[1], -9.4368957093138305936e-16, DOUBLETHRESHOLD); EXPECT_NEAR(x[2], 1.5000000000000011102, DOUBLETHRESHOLD); ASSERT_EQ(final_iter, 3); ASSERT_EQ(cg.get_iter(), 3); +#define __MPI +#endif } TEST_F(CG_test, PR_Min_Func) { +#ifdef __MPI +#undef __MPI Solve(1, 1); EXPECT_NEAR(x[0], 4.0006805979150792396, DOUBLETHRESHOLD); EXPECT_NEAR(x[1], 2.0713759992720870429, DOUBLETHRESHOLD); EXPECT_NEAR(x[2], 9.2871067233169171118, DOUBLETHRESHOLD); ASSERT_EQ(final_iter, 18); ASSERT_EQ(cg.get_iter(), 18); +#define __MPI +#endif } TEST_F(CG_test, HZ_Min_Func) { +#ifdef __MPI +#undef __MPI Solve(2, 1); EXPECT_NEAR(x[0], 4.0006825378033568086, DOUBLETHRESHOLD); EXPECT_NEAR(x[1], 2.0691732100663737803, DOUBLETHRESHOLD); EXPECT_NEAR(x[2], 9.2780872787668311474, DOUBLETHRESHOLD); ASSERT_EQ(final_iter, 18); ASSERT_EQ(cg.get_iter(), 18); +#define __MPI +#endif } // g++ -std=c++11 ../opt_CG.cpp ../opt_DCsrch.cpp ./CG_test.cpp ./test_tools.cpp -lgtest -lpthread -lgtest_main -o test.exe \ No newline at end of file diff --git a/source/module_base/test/opt_TN_test.cpp b/source/module_base/test/opt_TN_test.cpp index db523b53e9..1fc5b7f2d6 100644 --- a/source/module_base/test/opt_TN_test.cpp +++ b/source/module_base/test/opt_TN_test.cpp @@ -17,9 +17,9 @@ class TN_test : public testing::Test double tol = 1e-5; int final_iter = 0; int flag = 0; - char *task = NULL; - double *p = NULL; - double *x = NULL; + char *task = nullptr; + double *p = nullptr; + double *x = nullptr; void SetUp() { @@ -61,7 +61,8 @@ class TN_test : public testing::Test { tools.dfuncdx(x, gradient, func_label); residual = 0; - for (int i = 0; i<3 ;++i) residual += gradient[i] * gradient[i]; + for (int i = 0; i<3 ;++i) { residual += gradient[i] * gradient[i]; +} if (residual < tol) { final_iter = iter; @@ -75,7 +76,8 @@ class TN_test : public testing::Test { tn.next_direct(x, gradient, flag, p, &(tools.mf), &ModuleESolver::ESolver_OF::dfuncdx); } - for (int i = 0; i < 3; ++i) temp_x[i] = x[i]; + for (int i = 0; i < 3; ++i) { temp_x[i] = x[i]; +} task[0] = 'S'; task[1] = 'T'; task[2] = 'A'; task[3] = 'R'; task[4] = 'T'; while (true) { @@ -84,7 +86,8 @@ class TN_test : public testing::Test ds.dcSrch(f, g, step, task); if (task[0] == 'F' && task[1] == 'G') { - for (int j = 0; j < 3; ++j) temp_x[j] = x[j] + step * p[j]; + for (int j = 0; j < 3; ++j) { temp_x[j] = x[j] + step * p[j]; +} continue; } else if (task[0] == 'C' && task[1] == 'O') @@ -100,7 +103,8 @@ class TN_test : public testing::Test break; } } - for (int i = 0; i < 3; ++i) x[i] += step * p[i]; + for (int i = 0; i < 3; ++i) { x[i] += step * p[i]; +} } delete[] temp_x; delete[] gradient; @@ -110,20 +114,28 @@ class TN_test : public testing::Test TEST_F(TN_test, TN_Solve_LinearEq) { +#ifdef __MPI +#undef __MPI Solve(0); EXPECT_NEAR(x[0], 0.50000000000003430589, DOUBLETHRESHOLD); EXPECT_NEAR(x[1], -3.4028335704761047964e-14, DOUBLETHRESHOLD); EXPECT_NEAR(x[2], 1.5000000000000166533, DOUBLETHRESHOLD); ASSERT_EQ(final_iter, 1); ASSERT_EQ(tn.get_iter(), 1); +#define __MPI +#endif } TEST_F(TN_test, TN_Min_Func) { +#ifdef __MPI +#undef __MPI Solve(1); EXPECT_NEAR(x[0], 4.0049968540891525137, DOUBLETHRESHOLD); EXPECT_NEAR(x[1], 2.1208751163987624722, DOUBLETHRESHOLD); EXPECT_NEAR(x[2], 9.4951527720891863993, DOUBLETHRESHOLD); ASSERT_EQ(final_iter, 6); ASSERT_EQ(tn.get_iter(), 6); +#define __MPI +#endif } \ No newline at end of file diff --git a/source/module_base/test/opt_test_tools.cpp b/source/module_base/test/opt_test_tools.cpp index 1c90b79bca..71e136b3ef 100644 --- a/source/module_base/test/opt_test_tools.cpp +++ b/source/module_base/test/opt_test_tools.cpp @@ -1,3 +1,6 @@ +#ifdef __MPI +#undef __MPI +#endif #include "./opt_test_tools.h" #include From 4ddec65e92f518c998e2d280a8eabe7939507de1 Mon Sep 17 00:00:00 2001 From: liiutao <74701833+A-006@users.noreply.github.com> Date: Sun, 5 Jan 2025 12:05:01 +0800 Subject: [PATCH 42/44] Refactor:Remove Ucell::update_pos_taud (#5794) * update the update_pos_taud * change func with vector3 update_pos_taud * modify the input format * add unittest for the update_pos_tau * update test for relax_new * add update_vel for ucell * [pre-commit.ci lite] apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/module_cell/atom_spec.h | 9 +- .../test/support/mock_unitcell.cpp | 5 +- source/module_cell/test/unitcell_test.cpp | 2 +- .../module_cell/test/unitcell_test_para.cpp | 36 +- source/module_cell/unitcell.cpp | 59 ---- source/module_cell/unitcell.h | 4 - source/module_cell/update_cell.cpp | 69 ++++ source/module_cell/update_cell.h | 42 +++ source/module_md/md_base.cpp | 5 +- source/module_md/run_md.cpp | 4 +- source/module_relax/relax_new/relax.cpp | 2 +- .../relax_new/test/relax_test.cpp | 84 +++-- .../module_relax/relax_new/test/relax_test.h | 17 - .../relax_new/test/support/result_ref.txt | 317 ------------------ 14 files changed, 220 insertions(+), 435 deletions(-) delete mode 100644 source/module_relax/relax_new/test/support/result_ref.txt diff --git a/source/module_cell/atom_spec.h b/source/module_cell/atom_spec.h index d2deffebf8..00ce14898e 100644 --- a/source/module_cell/atom_spec.h +++ b/source/module_cell/atom_spec.h @@ -22,7 +22,7 @@ class Atom std::vector iw2_new; int nw = 0; // number of local orbitals (l,n,m) of this type - void set_index(void); + void set_index(); int type = 0; // Index of atom type int na = 0; // Number of atoms in this type. @@ -34,8 +34,7 @@ class Atom std::string label = "\0"; // atomic symbol std::vector> tau; // Cartesian coordinates of each atom in this type. - std::vector> - dis; // direct displacements of each atom in this type in current step liuyu modift 2023-03-22 + std::vector> dis; // direct displacements of each atom in this type in current step liuyu modift 2023-03-22 std::vector> taud; // Direct coordinates of each atom in this type. std::vector> vel; // velocities of each atom in this type. std::vector> force; // force acting on each atom in this type. @@ -54,8 +53,8 @@ class Atom void print_Atom(std::ofstream& ofs); void update_force(ModuleBase::matrix& fcs); #ifdef __MPI - void bcast_atom(void); - void bcast_atom2(void); + void bcast_atom(); + void bcast_atom2(); #endif }; diff --git a/source/module_cell/test/support/mock_unitcell.cpp b/source/module_cell/test/support/mock_unitcell.cpp index c335a181a9..c619a1f90a 100644 --- a/source/module_cell/test/support/mock_unitcell.cpp +++ b/source/module_cell/test/support/mock_unitcell.cpp @@ -33,10 +33,7 @@ bool UnitCell::read_atom_positions(std::ifstream& ifpos, std::ofstream& ofs_warning) { return true; } -void UnitCell::update_pos_taud(double* posd_in) {} -void UnitCell::update_pos_taud(const ModuleBase::Vector3* posd_in) {} -void UnitCell::update_vel(const ModuleBase::Vector3* vel_in) {} -void UnitCell::bcast_atoms_tau() {} + bool UnitCell::judge_big_cell() const { return true; } void UnitCell::update_stress(ModuleBase::matrix& scs) {} void UnitCell::update_force(ModuleBase::matrix& fcs) {} diff --git a/source/module_cell/test/unitcell_test.cpp b/source/module_cell/test/unitcell_test.cpp index 90925df62d..738ee8714f 100644 --- a/source/module_cell/test/unitcell_test.cpp +++ b/source/module_cell/test/unitcell_test.cpp @@ -1021,7 +1021,7 @@ TEST_F(UcellTest, UpdateVel) { vel_in[iat].set(iat * 0.1, iat * 0.1, iat * 0.1); } - ucell->update_vel(vel_in); + unitcell::update_vel(vel_in,ucell->ntype,ucell->nat,ucell->atoms); for (int iat = 0; iat < ucell->nat; ++iat) { EXPECT_DOUBLE_EQ(vel_in[iat].x, 0.1 * iat); diff --git a/source/module_cell/test/unitcell_test_para.cpp b/source/module_cell/test/unitcell_test_para.cpp index 11f629d707..a69b7655aa 100644 --- a/source/module_cell/test/unitcell_test_para.cpp +++ b/source/module_cell/test/unitcell_test_para.cpp @@ -153,7 +153,7 @@ TEST_F(UcellTest, UpdatePosTau) } delete[] pos_in; } -TEST_F(UcellTest, UpdatePosTaud) +TEST_F(UcellTest, UpdatePosTaud_pointer) { double* pos_in = new double[ucell->nat * 3]; ModuleBase::Vector3* tmp = new ModuleBase::Vector3[ucell->nat]; @@ -167,7 +167,8 @@ TEST_F(UcellTest, UpdatePosTaud) ucell->iat2iait(iat, &ia, &it); tmp[iat] = ucell->atoms[it].taud[ia]; } - ucell->update_pos_taud(pos_in); + unitcell::update_pos_taud(ucell->lat,pos_in,ucell->ntype, + ucell->nat,ucell->atoms); for (int iat = 0; iat < ucell->nat; ++iat) { int it, ia; @@ -180,6 +181,37 @@ TEST_F(UcellTest, UpdatePosTaud) delete[] pos_in; } +//test update_pos_taud with ModuleBase::Vector3 version +TEST_F(UcellTest, UpdatePosTaud_Vector3) +{ + ModuleBase::Vector3* pos_in = new ModuleBase::Vector3[ucell->nat]; + ModuleBase::Vector3* tmp = new ModuleBase::Vector3[ucell->nat]; + ucell->set_iat2itia(); + for (int iat = 0; iat < ucell->nat; ++iat) + { + for (int ik = 0; ik < 3; ++ik) + { + pos_in[iat][ik] = 0.01; + } + int it=0; + int ia=0; + ucell->iat2iait(iat, &ia, &it); + tmp[iat] = ucell->atoms[it].taud[ia]; + } + unitcell::update_pos_taud(ucell->lat,pos_in,ucell->ntype, + ucell->nat,ucell->atoms); + for (int iat = 0; iat < ucell->nat; ++iat) + { + int it, ia; + ucell->iat2iait(iat, &ia, &it); + for (int ik = 0; ik < 3; ++ik) + { + EXPECT_DOUBLE_EQ(ucell->atoms[it].taud[ia][ik], tmp[iat][ik] + 0.01); + } + } + delete[] tmp; + delete[] pos_in; +} TEST_F(UcellTest, ReadPseudo) { PARAM.input.pseudo_dir = pp_dir; diff --git a/source/module_cell/unitcell.cpp b/source/module_cell/unitcell.cpp index 69ca76df23..3d383c565a 100755 --- a/source/module_cell/unitcell.cpp +++ b/source/module_cell/unitcell.cpp @@ -314,65 +314,6 @@ std::vector> UnitCell::get_constrain() const return constrain; } - - -void UnitCell::update_pos_taud(double* posd_in) { - int iat = 0; - for (int it = 0; it < this->ntype; it++) { - Atom* atom = &this->atoms[it]; - for (int ia = 0; ia < atom->na; ia++) { - for (int ik = 0; ik < 3; ++ik) { - atom->taud[ia][ik] += posd_in[3 * iat + ik]; - atom->dis[ia][ik] = posd_in[3 * iat + ik]; - } - iat++; - } - } - assert(iat == this->nat); - unitcell::periodic_boundary_adjustment(this->atoms,this->latvec, this->ntype); - this->bcast_atoms_tau(); -} - -// posd_in is atomic displacements here liuyu 2023-03-22 -void UnitCell::update_pos_taud(const ModuleBase::Vector3* posd_in) { - int iat = 0; - for (int it = 0; it < this->ntype; it++) { - Atom* atom = &this->atoms[it]; - for (int ia = 0; ia < atom->na; ia++) { - for (int ik = 0; ik < 3; ++ik) { - atom->taud[ia][ik] += posd_in[iat][ik]; - atom->dis[ia][ik] = posd_in[iat][ik]; - } - iat++; - } - } - assert(iat == this->nat); - unitcell::periodic_boundary_adjustment(this->atoms,this->latvec, this->ntype); - this->bcast_atoms_tau(); -} - -void UnitCell::update_vel(const ModuleBase::Vector3* vel_in) { - int iat = 0; - for (int it = 0; it < this->ntype; ++it) { - Atom* atom = &this->atoms[it]; - for (int ia = 0; ia < atom->na; ++ia) { - this->atoms[it].vel[ia] = vel_in[iat]; - ++iat; - } - } - assert(iat == this->nat); -} - - -void UnitCell::bcast_atoms_tau() { -#ifdef __MPI - MPI_Barrier(MPI_COMM_WORLD); - for (int i = 0; i < ntype; i++) { - atoms[i].bcast_atom(); // bcast tau array - } -#endif -} - //============================================================== // Calculate various lattice related quantities for given latvec //============================================================== diff --git a/source/module_cell/unitcell.h b/source/module_cell/unitcell.h index e6f2fa96f0..7b10a18767 100644 --- a/source/module_cell/unitcell.h +++ b/source/module_cell/unitcell.h @@ -200,10 +200,6 @@ class UnitCell { void print_cell(std::ofstream& ofs) const; void print_cell_xyz(const std::string& fn) const; - void update_pos_taud(const ModuleBase::Vector3* posd_in); - void update_pos_taud(double* posd_in); - void update_vel(const ModuleBase::Vector3* vel_in); - void bcast_atoms_tau(); bool judge_big_cell() const; void update_stress(ModuleBase::matrix& scs); // updates stress diff --git a/source/module_cell/update_cell.cpp b/source/module_cell/update_cell.cpp index c4c324ce45..759389b9d8 100644 --- a/source/module_cell/update_cell.cpp +++ b/source/module_cell/update_cell.cpp @@ -374,6 +374,75 @@ void update_pos_tau(const Lattice& lat, bcast_atoms_tau(atoms, ntype); } +void update_pos_taud(const Lattice& lat, + const double* posd_in, + const int ntype, + const int nat, + Atom* atoms) +{ + int iat = 0; + for (int it = 0; it < ntype; it++) + { + Atom* atom = &atoms[it]; + for (int ia = 0; ia < atom->na; ia++) + { + for (int ik = 0; ik < 3; ++ik) + { + atom->taud[ia][ik] += posd_in[3 * iat + ik]; + atom->dis[ia][ik] = posd_in[3 * iat + ik]; + } + iat++; + } + } + assert(iat == nat); + periodic_boundary_adjustment(atoms,lat.latvec,ntype); + bcast_atoms_tau(atoms, ntype); +} + +// posd_in is atomic displacements here liuyu 2023-03-22 +void update_pos_taud(const Lattice& lat, + const ModuleBase::Vector3* posd_in, + const int ntype, + const int nat, + Atom* atoms) +{ + int iat = 0; + for (int it = 0; it < ntype; it++) + { + Atom* atom = &atoms[it]; + for (int ia = 0; ia < atom->na; ia++) + { + for (int ik = 0; ik < 3; ++ik) + { + atom->taud[ia][ik] += posd_in[iat][ik]; + atom->dis[ia][ik] = posd_in[iat][ik]; + } + iat++; + } + } + assert(iat == nat); + periodic_boundary_adjustment(atoms,lat.latvec,ntype); + bcast_atoms_tau(atoms, ntype); +} + +void update_vel(const ModuleBase::Vector3* vel_in, + const int ntype, + const int nat, + Atom* atoms) +{ + int iat = 0; + for (int it = 0; it < ntype; ++it) + { + Atom* atom = &atoms[it]; + for (int ia = 0; ia < atom->na; ++ia) + { + atoms[it].vel[ia] = vel_in[iat]; + ++iat; + } + } + assert(iat == nat); +} + void periodic_boundary_adjustment(Atom* atoms, const ModuleBase::Matrix3& latvec, const int ntype) diff --git a/source/module_cell/update_cell.h b/source/module_cell/update_cell.h index d7105535dc..a13bf58546 100644 --- a/source/module_cell/update_cell.h +++ b/source/module_cell/update_cell.h @@ -48,6 +48,48 @@ namespace unitcell const int ntype, const int nat, Atom* atoms); + + /** + * @brief update the position and tau of the atoms + * + * @param lat: the lattice of the atoms [in] + * @param pos_in: the position of the atoms in direct coordinate system [in] + * @param ntype: the number of types of the atoms [in] + * @param nat: the number of atoms [in] + * @param atoms: the atoms to be updated [out] + */ + void update_pos_taud(const Lattice& lat, + const double* posd_in, + const int ntype, + const int nat, + Atom* atoms); + /** + * @brief update the velocity of the atoms + * + * @param lat: the lattice of the atoms [in] + * @param pos_in: the position of the atoms in direct coordinate system + * in ModuleBase::Vector3 version [in] + * @param ntype: the number of types of the atoms [in] + * @param nat: the number of atoms [in] + * @param atoms: the atoms to be updated [out] + */ + void update_pos_taud(const Lattice& lat, + const ModuleBase::Vector3* posd_in, + const int ntype, + const int nat, + Atom* atoms); + /** + * @brief update the velocity of the atoms + * + * @param vel_in: the velocity of the atoms [in] + * @param ntype: the number of types of the atoms [in] + * @param nat: the number of atoms [in] + * @param atoms: the atoms to be updated [out] + */ + void update_vel(const ModuleBase::Vector3* vel_in, + const int ntype, + const int nat, + Atom* atoms); } // #endif // UPDATE_CELL_H \ No newline at end of file diff --git a/source/module_md/md_base.cpp b/source/module_md/md_base.cpp index 30e344dbe2..8b330927d1 100644 --- a/source/module_md/md_base.cpp +++ b/source/module_md/md_base.cpp @@ -1,11 +1,10 @@ #include "md_base.h" - #include "md_func.h" #ifdef __MPI #include "mpi.h" #endif #include "module_io/print_info.h" - +#include "module_cell/update_cell.h" MD_base::MD_base(const Parameter& param_in, UnitCell& unit_in) : mdp(param_in.mdp), ucell(unit_in) { my_rank = param_in.globalv.myrank; @@ -112,7 +111,7 @@ void MD_base::update_pos() MPI_Bcast(pos, ucell.nat * 3, MPI_DOUBLE, 0, MPI_COMM_WORLD); #endif - ucell.update_pos_taud(pos); + unitcell::update_pos_taud(ucell.lat,pos,ucell.ntype,ucell.nat,ucell.atoms); return; } diff --git a/source/module_md/run_md.cpp b/source/module_md/run_md.cpp index 1f85525979..b82a0c3e69 100644 --- a/source/module_md/run_md.cpp +++ b/source/module_md/run_md.cpp @@ -10,7 +10,7 @@ #include "msst.h" #include "nhchain.h" #include "verlet.h" - +#include "module_cell/update_cell.h" namespace Run_MD { @@ -97,7 +97,7 @@ void md_line(UnitCell& unit_in, ModuleESolver::ESolver* p_esolver, const Paramet if ((mdrun->step_ + mdrun->step_rst_) % param_in.mdp.md_restartfreq == 0) { - unit_in.update_vel(mdrun->vel); + unitcell::update_vel(mdrun->vel,unit_in.ntype,unit_in.nat,unit_in.atoms); std::stringstream file; file << PARAM.globalv.global_stru_dir << "STRU_MD_" << mdrun->step_ + mdrun->step_rst_; // changelog 20240509 diff --git a/source/module_relax/relax_new/relax.cpp b/source/module_relax/relax_new/relax.cpp index 88800c88d8..b6f0560824 100644 --- a/source/module_relax/relax_new/relax.cpp +++ b/source/module_relax/relax_new/relax.cpp @@ -633,7 +633,7 @@ void Relax::move_cell_ions(UnitCell& ucell, const bool is_new_dir) ucell.symm.symmetrize_vec3_nat(move_ion); } - ucell.update_pos_taud(move_ion); + unitcell::update_pos_taud(ucell.lat,move_ion,ucell.ntype,ucell.nat,ucell.atoms); // Print the structure file. ucell.print_tau(); diff --git a/source/module_relax/relax_new/test/relax_test.cpp b/source/module_relax/relax_new/test/relax_test.cpp index 74328026a4..5db3ecde3f 100644 --- a/source/module_relax/relax_new/test/relax_test.cpp +++ b/source/module_relax/relax_new/test/relax_test.cpp @@ -1,4 +1,5 @@ #include "gtest/gtest.h" +#include #define private public #include "module_parameter/parameter.h" #undef private @@ -27,13 +28,13 @@ class Test_SETGRAD : public testing::Test force_in.create(nat,3); stress_in.create(3,3); - force_in(0,0) = 1; force_in(0,1) = 2; force_in(0,2)= 3; - force_in(1,0) = 4; force_in(1,1) = 5; force_in(1,2)= 6; - force_in(2,0) = 7; force_in(2,1) = 8; force_in(2,2)= 9; + force_in(0,0) = 0.1; force_in(0,1) = 0.1; force_in(0,2)= 0.1; + force_in(1,0) = 0; force_in(1,1) = 0.1; force_in(1,2)= 0.1; + force_in(2,0) = 0; force_in(2,1) = 0; force_in(2,2)= 0.1; - stress_in(0,0) = 1; stress_in(0,1) = 2; stress_in(0,2)= 3; - stress_in(1,0) = 4; stress_in(1,1) = 5; stress_in(1,2)= 6; - stress_in(2,0) = 7; stress_in(2,1) = 8; stress_in(2,2)= 9; + stress_in(0,0) = 1; stress_in(0,1) = 1; stress_in(0,2)= 1; + stress_in(1,0) = 0; stress_in(1,1) = 1; stress_in(1,2)= 1; + stress_in(2,0) = 0; stress_in(2,1) = 0; stress_in(2,2)= 1; ucell.ntype = 1; ucell.nat = nat; @@ -46,6 +47,8 @@ class Test_SETGRAD : public testing::Test ucell.iat2ia = new int[nat]; ucell.atoms[0].mbl.resize(nat); ucell.atoms[0].taud.resize(nat); + ucell.atoms[0].tau.resize(nat); + ucell.atoms[0].dis.resize(nat); ucell.lc = new int[3]; ucell.iat2it[0] = 0; @@ -136,14 +139,25 @@ TEST_F(Test_SETGRAD, relax_new) { std::vector result_ref = { - 0,0,0.1709672056,0,0.2849453427,0,0.3989234797,0,0,1.005319517, - 0.01063903455,0.01595855183,0.0212780691,1.026597586,0.03191710366, - 0.03723662093,0.04255613821,1.047875655,1.059181731,0,0,0,1.059181731, - 0,0,0,1.059181731,1.034363264,0.01301504537,0.01952256806, - 0.02603009074,1.060393355,0.03904513611,0.0455526588,0.05206018148, - 1.086423445,1,0,0,0,1,0,0,0,1 + 0, 0, 0.24293434145, + 0, 0.242934341453, 0, + 0, 0, 0, + //paramter for taud + 1.2267616333,0.2267616333,0.22676163333, + 0, 1.2267616333 ,0.2267616333, + 0, 0, 1.22676163333, + // paramter for fisrt time after relaxation + 1.3677603495, 0, 0, + 0, 1.36776034956, 0, + 0, 0, 1.36776034956, + // paramter for second time after relaxation + 1.3677603495 ,0.3633367476,0.36333674766, + 0, 1.3677603495 ,0.36333674766, + 0, 0, 1.3677603495 , + // paramter for third time after relaxation + 1,0,0,0,1,0,0,0,1 + // paramter for fourth time after relaxation }; - for(int i=0;i result_ref= + { + 0.5000000586,0.4999998876,0.009364595811, + 0.9999999281,1.901333279e-07,0.5476035454, + 3.782097706e-07,0.4999999285,0.4770375874, + 0.4999997826,2.072311863e-07,0.477037871, + 0.9999998523,0.9999997866,0.9349574003, + // paramter for taud after first relaxation + 4.006349654,-1.93128788e-07,5.793863639e-07, + -1.93128788e-07,4.006354579,-3.86257576e-07, + 6.757962549e-07,-4.505308366e-07,3.966870038, + // paramter for latvec after first relaxation + 0.5000000566,0.4999998916,0.009177239183, + 0.9999999308,1.832935626e-07,0.5467689737, + 3.647769323e-07,0.4999999311,0.4771204124, + 0.4999997903,1.998879545e-07,0.4771206859, + 0.9999998574,0.9999997943,0.9358136888, + // paramter for taud after second relaxation + 3.999761277,-1.656764727e-07,4.97029418e-07, + -1.656764727e-07,3.999765501,-3.313529453e-07, + 5.797351131e-07,-3.864900754e-07,4.010925071, + // paramter for latvec after second relaxation + 0.500000082,0.4999999574,0.01057784352, + 0.9999999149,1.939640249e-07,0.5455830599, + 3.795967781e-07,0.4999998795,0.4765373919, + 0.4999998037,2.756298268e-07,0.4765374602, + 0.9999998196,0.9999996936,0.9367652445, + // paramter for taud after third relaxation + 4.017733155,-1.420363309e-07,2.637046077e-07, + -1.420364243e-07,4.017735987,3.126225134e-07, + 3.479123171e-07,2.578467568e-07,4.011674933 + // paramter for latvec after third relaxation + }; for(int i=0;i> tmp; - EXPECT_NEAR(tmp,result[i],1e-8); + EXPECT_NEAR(result_ref[i],result[i],1e-8); } } \ No newline at end of file diff --git a/source/module_relax/relax_new/test/relax_test.h b/source/module_relax/relax_new/test/relax_test.h index d60d37adf9..d31da75f07 100644 --- a/source/module_relax/relax_new/test/relax_test.h +++ b/source/module_relax/relax_new/test/relax_test.h @@ -2,7 +2,6 @@ namespace GlobalC { - UnitCell ucell; Structure_Factor sf; ModulePW::PW_Basis* rhopw; } @@ -10,22 +9,6 @@ namespace GlobalC UnitCell::UnitCell(){}; UnitCell::~UnitCell(){}; -void UnitCell::update_pos_taud(double* posd_in) -{ - int iat = 0; - for (int it = 0; it < this->ntype; it++) - { - Atom* atom = &this->atoms[it]; - for (int ia = 0; ia < atom->na; ia++) - { - this->atoms[it].taud[ia].x += posd_in[iat*3]; - this->atoms[it].taud[ia].y += posd_in[iat*3 + 1]; - this->atoms[it].taud[ia].z += posd_in[iat*3 + 2]; - iat++; - } - } - assert(iat == this->nat); -} void UnitCell::print_stru_file(const std::string& fn, const int& nspin, diff --git a/source/module_relax/relax_new/test/support/result_ref.txt b/source/module_relax/relax_new/test/support/result_ref.txt deleted file mode 100644 index 26303ffbe7..0000000000 --- a/source/module_relax/relax_new/test/support/result_ref.txt +++ /dev/null @@ -1,317 +0,0 @@ - 0.5000000586 0.4999998876 0.009364595811 -7.186242751e-08 1.901333279e-07 - 0.5476035454 3.782097706e-07 0.4999999285 0.4770375874 0.4999997826 - 2.072311863e-07 0.477037871 -1.477100701e-07 -2.13401842e-07 0.9349574003 - 4.006349654 -1.93128788e-07 5.793863639e-07 -1.93128788e-07 4.006354579 - -3.86257576e-07 6.757962549e-07 -4.505308366e-07 3.966870038 0.5000000566 - 0.4999998916 0.009177239183 -6.91719752e-08 1.832935626e-07 0.5467689737 - 3.647769323e-07 0.4999999311 0.4771204124 0.4999997903 1.998879545e-07 - 0.4771206859 -1.426137623e-07 -2.057340692e-07 0.9358136888 3.999761277 - -1.656764727e-07 4.97029418e-07 -1.656764727e-07 3.999765501 -3.313529453e-07 - 5.797351131e-07 -3.864900754e-07 4.010925071 0.500000082 0.4999999574 - 0.01057784352 -8.506971788e-08 1.939640249e-07 0.5455830599 3.795967781e-07 - 0.4999998795 0.4765373919 0.4999998037 2.756298268e-07 0.4765374602 - -1.804105264e-07 -3.063789336e-07 0.9367652445 4.017733155 -1.420363309e-07 - 2.637046077e-07 -1.420364243e-07 4.017735987 3.126225134e-07 3.479123171e-07 - 2.578467568e-07 4.011674933 0.5000000796 0.4999999511 0.01044351025 - -8.354492136e-08 1.929267547e-07 0.545696802 3.781847144e-07 0.4999998844 - 0.4765933099 0.4999998025 2.683875221e-07 0.476593398 -1.768062132e-07 - -2.967527323e-07 0.9366739799 4.016009133 -1.443041027e-07 2.860871904e-07 - -1.443041871e-07 4.016012099 2.508466826e-07 3.701508133e-07 1.960362599e-07 - 4.011602999 0.5000000861 0.4999999815 0.01183052577 -9.146188782e-08 - 2.175518281e-07 0.5443392027 3.600200139e-07 0.499999867 0.4761361923 - 0.4999998175 2.782489662e-07 0.4761362171 -1.722823846e-07 -3.442702638e-07 - 0.9375588622 4.016074628 -1.145426559e-07 2.863757511e-07 -1.145427088e-07 - 4.01607746 4.947921784e-08 3.709660589e-07 -4.491248374e-09 4.002844696 - 0.5000000949 0.5000000225 0.01369772404 -1.020955161e-07 2.505380934e-07 - 0.5425116045 3.356207547e-07 0.4999998436 0.4755208212 0.4999998376 - 2.914645637e-07 0.4755207609 -1.662062891e-07 -4.08038247e-07 0.9387500893 - 4.016162605 -7.456531053e-08 2.867633631e-07 -7.456532115e-08 4.016165256 - -2.210095363e-07 3.720611453e-07 -2.738517231e-07 3.991080022 0.5000000661 - 0.4999999774 0.01340203962 -3.089174616e-08 3.177383018e-07 0.5422778256 - 2.937375994e-07 0.4999998377 0.4754148341 0.4999998455 2.282657485e-07 - 0.4754150023 -1.7467006e-07 -3.610444656e-07 0.9394912985 4.016759016 - -9.975790189e-08 7.459699521e-07 -9.975793698e-08 4.016761853 -4.168703121e-07 - 8.285055584e-07 -4.685699985e-07 3.990203221 0.5000000627 0.4999999719 - 0.01336607846 -2.223189517e-08 3.259068081e-07 0.5422493934 2.886471074e-07 - 0.4999998369 0.4754019439 0.4999998464 2.205817104e-07 0.4754021399 - -1.75709291e-07 -3.553268117e-07 0.9395814444 4.016831536 -1.028211535e-07 - 8.018064201e-07 -1.028211916e-07 4.016834395 -4.406856802e-07 8.840061642e-07 - -4.922464461e-07 3.990096608 0.50000006 0.499999967 0.01329728526 - -1.35745542e-08 3.325700456e-07 0.542252812 2.855644354e-07 0.4999998363 - 0.4754026764 0.4999998456 2.134130089e-07 0.4754028962 -1.777895118e-07 - -3.492874067e-07 0.9396453302 4.016804157 -1.028477628e-07 8.108087853e-07 - -1.028478008e-07 4.016807063 -4.402571272e-07 8.930425818e-07 -4.918722041e-07 - 3.9895892 0.500000052 0.4999999522 0.01309087941 1.239762237e-08 - 3.525598936e-07 0.5422630694 2.763163513e-07 0.4999998344 0.4754048742 - 0.4999998432 1.91906758e-07 0.4754051652 -1.840306532e-07 -3.311690833e-07 - 0.9398370119 4.016722021 -1.029275908e-07 8.37815881e-07 -1.029276285e-07 - 4.016725065 -4.389714685e-07 9.201518346e-07 -4.907494778e-07 3.988066978 - 0.5000000531 0.4999999535 0.01306045847 1.172010024e-08 3.505960318e-07 - 0.5422783814 2.730828384e-07 0.4999998344 0.4754320117 0.4999998465 - 1.942625467e-07 0.4754322931 -1.846534178e-07 -3.328413284e-07 0.9397978553 - 4.016722829 -1.029206516e-07 7.674399968e-07 -1.02920689e-07 4.016725862 - -4.050357177e-07 8.503420582e-07 -4.570894557e-07 3.987762366 0.5000000567 - 0.4999999574 0.0129691887 9.688331883e-09 3.447040629e-07 0.5423243211 - 2.633837151e-07 0.4999998345 0.4755134305 0.4999998566 2.013292303e-07 - 0.4755136831 -1.865237512e-07 -3.378570794e-07 0.9396803767 4.016725254 - -1.028998342e-07 5.56312344e-07 -1.028998706e-07 4.016728251 -3.032284652e-07 - 6.40912729e-07 -3.561093893e-07 3.98684853 0.5000000552 0.4999999717 - 0.01288725225 8.34868654e-09 3.578879491e-07 0.5422946246 2.590298072e-07 - 0.4999998131 0.4755527939 0.4999998599 2.281727391e-07 0.4755530395 - -1.827191497e-07 -3.7082805e-07 0.9397132898 4.016904763 -1.096986501e-07 - 4.707225379e-07 -1.096987293e-07 4.016907735 1.090554523e-08 5.560136738e-07 - -4.434198486e-08 3.986665638 0.5000000508 0.5000000146 0.01264143162 - 4.328047801e-09 3.974447551e-07 0.5422055312 2.459711622e-07 0.499999749 - 0.4756708894 0.49999987 3.086905038e-07 0.475671114 -1.713037695e-07 - -4.697442054e-07 0.9398120339 4.017443291 -1.300950978e-07 2.139531198e-07 - -1.300953053e-07 4.017446186 9.533075765e-07 3.013165083e-07 8.909602285e-07 - 3.986116964 0.5000000483 0.5000000154 0.01257168752 1.438416028e-09 - 4.057347929e-07 0.5421844767 2.439985135e-07 0.4999997474 0.4756947513 - 0.4999998723 3.147478061e-07 0.4756949759 -1.661820178e-07 -4.833308435e-07 - 0.9398551087 4.017340044 -1.223718377e-07 2.557105028e-07 -1.223720107e-07 - 4.017342988 6.23468119e-07 3.427644257e-07 5.637764569e-07 3.985668589 - 0.5000000408 0.5000000178 0.0123624317 -7.230049852e-09 4.306004018e-07 - 0.542121306 2.380796758e-07 0.4999997427 0.4757663451 0.4999998791 - 3.329260089e-07 0.4757665695 -1.508177022e-07 -5.240812825e-07 0.9399843477 - 4.017030304 -9.920205757e-08 3.80982652e-07 -9.920212672e-08 4.017033391 - -3.660502535e-07 4.67108178e-07 -4.177748579e-07 3.984323464 0.5000000434 - 0.5000000095 0.01229011791 2.269279068e-08 4.997711689e-07 0.5420674696 - 2.2477883e-07 0.4999996846 0.4757884582 0.4999998701 4.017236861e-07 - 0.4757886749 -1.611683166e-07 -5.95643903e-07 0.9400662794 4.017508039 - -8.577089195e-08 6.90160419e-07 -8.577101412e-08 4.017512645 4.0020643e-07 - 7.738336619e-07 3.421833968e-07 3.984223436 0.5000000468 0.4999999994 - 0.0122014875 5.936706817e-08 5.845496166e-07 0.5420014857 2.084771084e-07 - 0.4999996134 0.475815561 0.4999998592 4.860273209e-07 0.475815768 - -1.738602456e-07 -6.833599837e-07 0.9401666979 4.018093553 -6.930958019e-08 - 1.069090421e-06 -6.930976733e-08 4.018100022 1.339334911e-06 1.149758132e-06 - 1.273592488e-06 3.984100841 0.5000000494 0.4999999989 0.01215031965 - 7.686345089e-08 6.256089494e-07 0.5419774224 2.052617253e-07 0.4999995794 - 0.4758354969 0.4999998502 5.193014538e-07 0.4758356907 -1.818065319e-07 - -7.232284841e-07 0.9402020704 4.018196574 -6.65804403e-08 1.131800255e-06 - -6.658063704e-08 4.018203418 1.494869593e-06 1.212066529e-06 1.427968664e-06 - 3.983726502 0.5000000573 0.4999999975 0.01199680166 1.293523747e-07 - 7.487865539e-07 0.5419052257 1.956148942e-07 0.4999994775 0.4758953102 - 0.4999998233 6.191189854e-07 0.4758954646 -2.05646428e-07 -8.428349881e-07 - 0.9403081979 4.018505635 -5.839302062e-08 1.319929756e-06 -5.839324615e-08 - 4.018513609 1.96147364e-06 1.398991718e-06 1.891097193e-06 3.982603486 - 0.5000000559 0.4999999987 0.01197659032 1.316860624e-07 7.590833749e-07 - 0.5419126282 1.906164588e-07 0.4999994807 0.475906966 0.4999998253 - 6.150618164e-07 0.4759071025 -2.035657065e-07 -8.535272509e-07 0.9402977131 - 4.018252278 -6.443172211e-08 1.126561783e-06 -6.443190747e-08 4.018259412 - 1.478221425e-06 1.207420282e-06 1.41227732e-06 3.982125011 0.5000000541 - 0.5000000003 0.01195055674 1.346922942e-07 7.72346765e-07 0.5419221632 - 1.841792154e-07 0.4999994848 0.4759219794 0.4999998278 6.098379883e-07 - 0.4759220929 -2.008863915e-07 -8.673004409e-07 0.9402842079 4.017925976 - -7.22090477e-08 8.775205468e-07 -7.220918133e-08 4.017932028 8.558343374e-07 - 9.606928307e-07 7.955987076e-07 3.981508778 0.5000000483 0.5000000036 - 0.01192008315 1.324497574e-07 7.847436641e-07 0.5418970361 1.891088374e-07 - 0.4999994948 0.4759352623 0.4999998355 5.937214565e-07 0.4759353618 - -2.054364475e-07 -8.768321725e-07 0.9403132567 4.017937177 -7.400502708e-08 - 6.913073321e-07 -7.400511638e-08 4.017942351 3.865861539e-07 7.762155055e-07 - 3.306507004e-07 3.981300707 0.5000000308 0.5000000135 0.01182865758 - 1.257187058e-07 8.219255433e-07 0.5418216507 2.038994915e-07 0.4999995247 - 0.4759751132 0.4999998585 5.453765917e-07 0.4759751709 -2.190825771e-07 - -9.054172097e-07 0.9404004077 4.017970778 -7.939296524e-08 1.326676882e-07 - -7.939292154e-08 4.017973318 -1.021158397e-06 2.227835299e-07 -1.064193321e-06 - 3.980676494 0.500000036 0.5000000195 0.01179815344 1.287790209e-07 - 8.228239915e-07 0.5417966586 1.941065691e-07 0.499999496 0.4759876283 - 0.499999842 5.592279171e-07 0.4759877103 -2.009933836e-07 -8.97533492e-07 - 0.9404308493 4.018181454 -7.921316109e-08 2.607728813e-07 -7.921315181e-08 - 4.018184338 -7.549780172e-07 3.497160411e-07 -8.00575728e-07 3.980534532 - 0.500000043 0.5000000276 0.0117576448 1.328437232e-07 8.240191772e-07 - 0.5417634698 1.811024659e-07 0.4999994578 0.4760042481 0.49999982 - 5.776193708e-07 0.4760043623 -1.769748397e-07 -8.870677129e-07 0.940471275 - 4.018461216 -7.897439478e-08 4.30886885e-07 -7.897443121e-08 4.018464557 - -4.015106133e-07 5.182728119e-07 -4.505115099e-07 3.980346016 0.5000000355 - 0.5000000206 0.01173252464 1.233072045e-07 8.181156645e-07 0.5417596597 - 1.751327516e-07 0.4999994678 0.4760131211 0.4999998235 5.672244241e-07 - 0.4760132464 -1.576156695e-07 -8.736646886e-07 0.9404824482 4.018480418 - -8.412181517e-08 3.184493063e-07 -8.412183942e-08 4.018483841 -4.353464953e-07 - 4.06930207e-07 -4.840528446e-07 3.980103313 0.5000000133 0.4999999994 - 0.01165715956 9.469746849e-08 8.004051159e-07 0.5417482288 1.572244315e-07 - 0.4999994977 0.4760397415 0.4999998342 5.360399565e-07 0.4760399001 - -9.953750773e-08 -8.334555284e-07 0.94051597 4.018538024 -9.956407636e-08 - -1.886342981e-08 -9.956406405e-08 4.018541691 -5.368541413e-07 7.290239242e-08 - -5.846768489e-07 3.979375204 0.5000000114 0.5000000159 0.01163688389 - 9.055593083e-08 8.153191081e-07 0.5417309831 1.61065247e-07 0.4999994711 - 0.4760468025 0.499999837 5.628008356e-07 0.4760469616 -1.001041324e-07 - -8.650471858e-07 0.9405393689 4.018526774 -1.003729469e-07 8.014896787e-08 - -1.003729504e-07 4.018530304 -2.087782838e-07 1.709490836e-07 -2.5981345e-07 - 3.979251357 0.5000000055 0.5000000656 0.011576055 7.813254544e-08 - 8.60065394e-07 0.5416792445 1.725872089e-07 0.4999993911 0.476067986 - 0.4999998454 6.430819879e-07 0.4760681468 -1.01805724e-07 -9.598281014e-07 - 0.9406095676 4.018493024 -1.027995584e-07 3.771861609e-07 -1.027996094e-07 - 4.018496142 7.75449289e-07 4.650891572e-07 7.147767467e-07 3.978879815 - 0.5000000033 0.5000000659 0.01156048266 7.691301543e-08 8.710090828e-07 - 0.5416664437 1.696804069e-07 0.49999939 0.4760766756 0.4999998533 - 6.439033647e-07 0.4760768396 -1.033214917e-07 -9.706841102e-07 0.9406205584 - 4.018556377 -1.125767938e-07 3.435715847e-07 -1.125768244e-07 4.018559478 - 4.037920245e-07 4.318280994e-07 3.468252241e-07 3.978721777 0.499999999 - 0.5000000663 0.01153083993 7.459150642e-08 8.918375543e-07 0.5416420766 - 1.64147608e-07 0.4999993878 0.4760932168 0.4999998683 6.454683246e-07 - 0.4760933866 -1.062064982e-07 -9.913460033e-07 0.94064148 4.018676969 - -1.311875106e-07 2.795871014e-07 -1.311875024e-07 4.018680038 -3.03648044e-07 - 3.685165291e-07 -3.535610599e-07 3.978420957 0.4999999979 0.5000000657 - 0.01150798688 7.30245626e-08 8.926851176e-07 0.5416453953 1.63860371e-07 - 0.4999993959 0.4760975713 0.4999998703 6.359903293e-07 0.4760977566 - -1.052243633e-07 -9.901105408e-07 0.9406522899 4.018690234 -1.711227169e-07 - 3.07744471e-07 -1.711227365e-07 4.018693222 -4.102364133e-07 3.964059641e-07 - -4.590968096e-07 3.978235426 0.4999999946 0.5000000637 0.01143942454 - 6.832367754e-08 8.952280606e-07 0.5416553519 1.629985724e-07 0.49999942 - 0.4761106354 0.4999998763 6.075567812e-07 0.476110867 -1.022781935e-07 - -9.864033134e-07 0.9406847211 4.018730028 -2.909283358e-07 3.9221658e-07 - -2.909284389e-07 4.018732777 -7.30001521e-07 4.800742691e-07 -7.757040587e-07 - 3.977678834 0.4999999894 0.5000000655 0.01141610861 6.356603739e-08 - 8.976493407e-07 0.5416416365 1.631627244e-07 0.4999994244 0.4761177037 - 0.4999998852 5.917181069e-07 0.4761179466 -1.014112849e-07 -9.791862241e-07 - 0.9407076045 4.018781531 -2.921536594e-07 3.608710852e-07 -2.921537556e-07 - 4.018784222 -7.947338374e-07 4.490675039e-07 -8.398080826e-07 3.977551902 - 0.4999999738 0.5000000708 0.01134615858 4.929298255e-08 9.049124316e-07 - 0.5416004887 1.636553378e-07 0.4999994378 0.4761389094 0.499999912 - 5.442030312e-07 0.4761391863 -9.881006319e-08 -9.57534138e-07 0.9407762569 - 4.018936042 -2.958296302e-07 2.668346008e-07 -2.958297055e-07 4.018938558 - -9.889307865e-07 3.560472084e-07 -1.032120154e-06 3.977171103 0.4999999634 - 0.5000000696 0.01134597757 3.715015008e-08 9.014818778e-07 0.5415926279 - 1.767591318e-07 0.4999994422 0.4761422476 0.4999999433 5.436667826e-07 - 0.4761425168 -1.207159244e-07 -9.568155701e-07 0.9407776301 4.018921284 - -2.419935944e-07 2.999333276e-07 -2.419936518e-07 4.018923812 -8.597869936e-07 - 3.888015466e-07 -9.043179998e-07 3.977157751 0.4999999323 0.500000066 - 0.01134543454 7.217112542e-10 8.911909289e-07 0.5415690454 2.160705762e-07 - 0.4999994555 0.476152262 0.5000000372 5.420577119e-07 0.4761525084 - -1.864337829e-07 -9.546599888e-07 0.9407817496 4.018877009 -8.048548674e-08 - 3.992295079e-07 -8.048549067e-08 4.018879572 -4.723556148e-07 4.870645611e-07 - -5.209115368e-07 3.977117694 0.4999999267 0.5000000664 0.01134278805 - -3.279251646e-09 8.916239194e-07 0.5415688062 2.16733118e-07 0.4999994551 - 0.47615352 0.5000000446 5.431471246e-07 0.4761537652 -1.848711826e-07 - -9.562098439e-07 0.9407821205 4.018885374 -7.545498957e-08 3.385535106e-07 - -7.545498383e-08 4.018887949 -4.632615104e-07 4.270214046e-07 -5.119146237e-07 - 3.977104045 0.4999999098 0.5000000676 0.01133484855 -1.528212609e-08 - 8.929228899e-07 0.5415680887 2.187207954e-07 0.499999454 0.4761572938 - 0.5000000669 5.464153476e-07 0.4761575356 -1.801833748e-07 -9.608594023e-07 - 0.9407832333 4.018910468 -6.036349807e-08 1.565255186e-07 -6.036346329e-08 - 4.018913079 -4.359791973e-07 2.46891935e-07 -4.849238843e-07 3.977063098 - 0.4999999083 0.5000000665 0.01133297331 -1.362025724e-08 8.958985092e-07 - 0.5415647054 2.200350776e-07 0.4999994521 0.4761586985 0.5000000663 - 5.437012945e-07 0.4761589398 -1.81182659e-07 -9.582196856e-07 0.9407856828 - 4.018925612 -6.43229072e-08 2.040351449e-07 -6.432287964e-08 4.018928246 - -4.399368562e-07 2.939083346e-07 -4.888436704e-07 3.977049182 0.4999999039 - 0.5000000634 0.01132734756 -8.634550723e-09 9.048253235e-07 0.5415545555 - 2.239778599e-07 0.4999994465 0.4761629127 0.5000000648 5.355591699e-07 - 0.4761631526 -1.841805862e-07 -9.503005582e-07 0.9407930316 4.018971043 - -7.62011346e-08 3.465640238e-07 -7.620112868e-08 4.018973749 -4.518098328e-07 - 4.349575334e-07 -5.006030288e-07 3.977007432 0.499999904 0.5000000633 - 0.01132406692 -7.753535335e-09 9.067119807e-07 0.5415545561 2.256794899e-07 - 0.4999994444 0.4761642462 0.5000000643 5.346751851e-07 0.4761644856 - -1.863824175e-07 -9.490177983e-07 0.9407936451 4.018979709 -8.348072208e-08 - 3.952941668e-07 -8.348072472e-08 4.018982453 -4.646037458e-07 4.831819097e-07 - -5.132671753e-07 3.976983022 0.4999999045 0.5000000627 0.01131422494 - -5.110494881e-09 9.123719402e-07 0.5415545579 2.30784321e-07 0.4999994381 - 0.476168247 0.5000000626 5.320232491e-07 0.4761684846 -1.92987919e-07 - -9.451695213e-07 0.9407954855 4.019005706 -1.053194845e-07 5.414845956e-07 - -1.053195128e-07 4.019008565 -5.029854847e-07 6.278550389e-07 -5.512596148e-07 - 3.976909792 0.4999999083 0.5000000592 0.01131253431 -1.210845816e-08 - 9.195307776e-07 0.5415512524 2.315822753e-07 0.4999994324 0.4761693356 - 0.5000000654 5.334588303e-07 0.4761695724 -1.932563863e-07 -9.445080021e-07 - 0.9407983053 4.0190073 -1.097333407e-07 4.664471466e-07 -1.097333585e-07 - 4.019010503 -4.676724911e-07 5.536064458e-07 -5.163192494e-07 3.976890142 - 0.4999999195 0.5000000486 0.01130746237 -3.310252285e-08 9.410073654e-07 - 0.5415413356 2.339761975e-07 0.4999994152 0.4761726017 0.5000000736 - 5.377655433e-07 0.4761728357 -1.940616319e-07 -9.425235187e-07 0.9408067646 - 4.01901208 -1.229749092e-07 2.413347994e-07 -1.229748955e-07 4.019016316 - -3.617335104e-07 3.308606664e-07 -4.114981533e-07 3.976831193 0.4999999213 - 0.5000000473 0.01130561098 -3.506346367e-08 9.436370031e-07 0.5415412623 - 2.326770148e-07 0.4999994155 0.4761732185 0.5000000731 5.364578661e-07 - 0.4761734516 -1.920899865e-07 -9.427905667e-07 0.9408074566 4.019012889 - -1.24492443e-07 2.216173633e-07 -1.244924271e-07 4.01901719 -3.617542833e-07 - 3.11351153e-07 -4.115201695e-07 3.976815961 0.4999999267 0.5000000433 - 0.0113000568 -4.094628601e-08 9.515259145e-07 0.5415410425 2.287794766e-07 - 0.4999994163 0.4761750687 0.5000000715 5.325348355e-07 0.4761752994 - -1.861750416e-07 -9.435917104e-07 0.9408095324 4.019015317 -1.290450443e-07 - 1.624650552e-07 -1.290450219e-07 4.019019814 -3.618166022e-07 2.528226127e-07 - -4.115862181e-07 3.976770263 0.4999999283 0.5000000441 0.01129903934 - -4.399560202e-08 9.48279405e-07 0.5415395351 2.286021949e-07 0.4999994194 - 0.4761755236 0.5000000739 5.310413616e-07 0.4761757517 -1.868940034e-07 - -9.427348221e-07 0.9408111502 4.01901909 -1.290451639e-07 1.575998906e-07 - -1.290451426e-07 4.019023489 -4.007344723e-07 2.48009162e-07 -4.500960986e-07 - 3.976761885 0.4999999329 0.5000000464 0.01129598695 -5.314354687e-08 - 9.38539842e-07 0.5415350127 2.28070352e-07 0.4999994287 0.4761768884 - 0.5000000811 5.265609571e-07 0.4761771084 -1.890508808e-07 -9.401641131e-07 - 0.9408160035 4.019030408 -1.290455227e-07 1.430043966e-07 -1.290455047e-07 - 4.019034515 -5.174880825e-07 2.335688099e-07 -5.656257404e-07 3.97673675 - 0.4999999333 0.5000000423 0.01129480749 -5.399437649e-08 9.338153883e-07 - 0.5415334224 2.28664736e-07 0.4999994361 0.4761779249 0.5000000807 - 5.194546916e-07 0.4761781437 -1.887947159e-07 -9.315990812e-07 0.9408167014 - 4.01903273 -1.290455981e-07 1.566989619e-07 -1.29045581e-07 4.019036751 - -6.201488135e-07 2.471197956e-07 -6.672077999e-07 3.976725468 0.4999999345 - 0.50000003 0.01129126911 -5.654684778e-08 9.196419143e-07 0.5415286516 - 2.304478762e-07 0.4999994582 0.4761810343 0.5000000795 4.981359855e-07 - 0.4761812498 -1.880262287e-07 -9.059039468e-07 0.9408187951 4.019039696 - -1.290458244e-07 1.977826575e-07 -1.290458099e-07 4.019043459 -9.281310065e-07 - 2.877727526e-07 -9.719539783e-07 3.976691622 0.4999999349 0.5000000298 - 0.01129039377 -5.652415624e-08 9.185225545e-07 0.5415254386 2.298862747e-07 - 0.4999994568 0.4761819211 0.5000000791 4.995917051e-07 0.4761821364 - -1.875636871e-07 -9.046545275e-07 0.9408211101 4.019043324 -1.257169824e-07 - 2.177556503e-07 -1.25716973e-07 4.019047001 -9.114827603e-07 3.07536281e-07 - -9.554854435e-07 3.976676813 0.4999999358 0.5000000293 0.01128879301 - -5.648263077e-08 9.164755791e-07 0.5415195628 2.288592527e-07 0.4999994544 - 0.4761835427 0.5000000784 5.022538072e-07 0.4761837577 -1.867178472e-07 - -9.023697024e-07 0.9408253437 4.01904996 -1.196294451e-07 2.542807648e-07 - -1.19629445e-07 4.019053478 -8.810376936e-07 3.436783427e-07 -9.253690195e-07 - 3.976649731 0.4999999341 0.50000003 0.01128700831 -5.772123947e-08 - 9.164069045e-07 0.5415182511 2.335776749e-07 0.4999994534 0.4761845527 - 0.5000000786 5.021222774e-07 0.4761847661 -1.887516597e-07 -9.01864166e-07 - 0.9408264217 4.019053849 -1.239859106e-07 2.646362681e-07 -1.239859205e-07 - 4.01905731 -8.460449793e-07 3.539262306e-07 -8.907508841e-07 3.976629205 - 0.4999999291 0.5000000319 0.01128165418 -6.143705194e-08 9.16200915e-07 - 0.5415143161 2.477329201e-07 0.4999994506 0.4761875825 0.5000000794 - 5.017276626e-07 0.4761877913 -1.948530993e-07 -9.003475862e-07 0.9408296559 - 4.019065515 -1.37055307e-07 2.957027782e-07 -1.370553468e-07 4.019068805 - -7.410668364e-07 3.846698944e-07 -7.868964777e-07 3.976567627 0.4999999426 - 0.5000000265 0.01127998846 -6.445710627e-08 9.22941417e-07 0.5415089292 - 2.724576634e-07 0.4999994489 0.4761892075 0.5000000647 4.997317793e-07 - 0.476189418 -2.154196059e-07 -8.979654096e-07 0.9408334569 4.019074267 - -1.370555967e-07 4.773627817e-07 -1.370556788e-07 4.019077499 -6.502306448e-07 - 5.644118671e-07 -6.970276123e-07 3.976540248 0.4999999435 0.5000000262 - 0.0112798784 -6.465663399e-08 9.233867893e-07 0.5415085732 2.740912932e-07 - 0.4999994487 0.4761893148 0.5000000637 4.995999032e-07 0.4761895255 - -2.167785051e-07 -8.97808018e-07 0.940833708 4.019074845 -1.370556159e-07 - 4.893656044e-07 -1.370557007e-07 4.019078073 -6.442288245e-07 5.762879597e-07 - -6.910897062e-07 3.976538439 0.4999999422 0.5000000292 0.01127660742 - -6.568334205e-08 9.20994726e-07 0.5415075151 2.722200497e-07 0.4999994446 - 0.476190478 0.5000000662 5.066818531e-07 0.4761906872 -2.151577862e-07 - -9.013761226e-07 0.9408357121 4.019078612 -1.370557273e-07 4.703999372e-07 - -1.370558262e-07 4.019081771 -5.23390887e-07 5.575273249e-07 -5.715363585e-07 - 3.976507538 0.4999999385 0.5000000382 0.01126679437 -6.876347815e-08 - 9.138186372e-07 0.5415043409 2.666063406e-07 0.4999994323 0.4761939677 - 0.5000000738 5.279275797e-07 0.4761941726 -2.102956058e-07 -9.120806054e-07 - 0.9408417244 4.019089913 -1.370560614e-07 4.135029355e-07 -1.370562024e-07 - 4.019092862 -1.608770746e-07 5.012454206e-07 -2.128763157e-07 3.976414833 - 0.4999999261 0.50000004 0.01126203507 -7.976151115e-08 9.156791073e-07 - 0.5415005728 2.547517478e-07 0.4999994162 0.4761942283 0.5000000879 - 5.383758125e-07 0.4761944343 -1.891537133e-07 -9.101469984e-07 0.9408497294 - 4.019111468 -1.474817054e-07 1.456565286e-07 -1.47481828e-07 4.019114599 - -2.503881584e-07 2.362493864e-07 -3.014394862e-07 3.976379179 0.4999999095 - 0.5000000424 0.01125568255 -9.444136685e-08 9.181622418e-07 0.5414955433 - 2.389289613e-07 0.4999993948 0.4761945762 0.5000001068 5.523215029e-07 - 0.4761947837 -1.609340608e-07 -9.075658987e-07 0.9408604141 4.019140238 - -1.613973131e-07 -2.118509339e-07 -1.61397411e-07 4.019143611 -3.698629008e-07 - -1.174535469e-07 -4.196490031e-07 3.97633159 0.4999999179 0.5000000382 - 0.01124954909 -9.116868708e-08 9.148078236e-07 0.5414930781 2.595751101e-07 - 0.4999993985 0.4761990716 0.5000000696 5.603980084e-07 0.4761992773 - -1.559842386e-07 -9.118156285e-07 0.9408600238 4.019139067 -1.493313516e-07 - -1.879337942e-08 -1.49331467e-07 4.01914232 -4.663848559e-07 7.354469946e-08 - -5.151479753e-07 3.976273849 0.4999999179 0.5000000382 0.01124954816 - -9.116819418e-08 9.148073184e-07 0.5414930778 2.595782195e-07 0.4999993985 - 0.4761990723 0.5000000695 5.603992248e-07 0.4761992779 -1.559834931e-07 - -9.118162685e-07 0.9408600237 4.019139067 -1.493295344e-07 -1.876430367e-08 - -1.493296498e-07 4.01914232 -4.663993928e-07 7.357346506e-08 -5.151623581e-07 - 3.97627384 0.4999999122 0.5000000408 0.01124440252 -1.01271068e-07 - 9.154329891e-07 0.5414889614 2.666401844e-07 0.4999993988 0.4762005406 - 0.5000000802 5.608231639e-07 0.476200743 -1.579162967e-07 -9.158313538e-07 - 0.9408663523 4.019152526 -1.468967234e-07 1.408295682e-07 -1.468968582e-07 - 4.019155707 -4.97928983e-07 2.314653502e-07 -5.46360318e-07 3.976248361 - 0.4999998952 0.5000000487 0.01122896549 -1.31579103e-07 9.173098991e-07 - 0.5414766122 2.878258352e-07 0.4999993999 0.4762049456 0.5000001121 - 5.620950109e-07 0.4762051382 -1.637154338e-07 -9.27876422e-07 0.9408853383 - 4.019192903 -1.395982905e-07 6.196111837e-07 -1.395984835e-07 4.019195866 - -5.925177538e-07 7.051410056e-07 -6.399541978e-07 3.976171921 \ No newline at end of file From 8905ddf37b2fe65a1bdd37579edc55c8eb2b114d Mon Sep 17 00:00:00 2001 From: Haozhi Han Date: Sun, 5 Jan 2025 19:49:03 +0800 Subject: [PATCH 43/44] Refactor: refactor the constructors of Psi class (#5761) * remove Psi(const Psi& psi_in, const int nk_in, int nband_in); * fix bug * fix bug * [pre-commit.ci lite] apply automatic fixes * remove device value in psi * update Psi(const Psi& psi_in, const int nk_in, int nband_in) * update get_ngk usage * fix bug about ngk * [pre-commit.ci lite] apply automatic fixes * fix bug * format operator * [pre-commit.ci lite] apply automatic fixes * fix bug * fix bug * fix bug * fix bug * add get_cur_effective_basis func * fix bug * update get_cur_effective_basis * check bugs * update Constructor 8-1 * fix bug * fix bug * fix bug * fix bug maybe * fix bug * check correct * check 1 * fix unit test * fix unit bug * update get_ngk func * remove get-ngk in velocity-pw * fix bug * [pre-commit.ci lite] apply automatic fixes * fix 186_PW_SKG_ALL bug * format source/module_io/unk_overlap_pw.cpp * update Constructor in psi * [pre-commit.ci lite] apply automatic fixes * debug unit test * fix ri test bug * [pre-commit.ci lite] apply automatic fixes * fix psi-ut bug * remove Psi::Psi(T* psi_pointer, const Psi& psi_in, const int nk_in, int nband_in) * remove useless code * update Psi(const Psi& psi_in, const int nk_in, const int nband_in); * remove Psi(const Psi& psi_in, const int nk_in, const int nband_in); * refactor psi code * fix sdft bug * change to get_current_ngk --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> --- source/module_elecstate/cal_dm.h | 13 +- source/module_elecstate/elecstate_pw.cpp | 4 +- .../module_elecstate/elecstate_pw_cal_tau.cpp | 2 +- .../module_elecstate/module_dm/cal_dm_psi.cpp | 16 +- source/module_esolver/esolver_ks_lcao.cpp | 2 +- source/module_esolver/esolver_of.cpp | 6 +- source/module_esolver/esolver_of_tool.cpp | 6 +- source/module_hamilt_general/operator.cpp | 129 ++++++---- source/module_hamilt_general/operator.h | 76 +++--- .../hamilt_pwdft/operator_pw/velocity_pw.cpp | 7 +- .../hamilt_stodft/sto_elecond.cpp | 28 +- .../hamilt_stodft/sto_iter.cpp | 2 +- .../hamilt_stodft/test/test_sto_tool.cpp | 8 +- source/module_hsolver/diago_iter_assist.cpp | 23 +- source/module_hsolver/hsolver_pw.cpp | 46 ++-- .../test/diago_cg_float_test.cpp | 4 +- .../test/diago_cg_real_test.cpp | 4 +- source/module_hsolver/test/diago_cg_test.cpp | 4 +- .../test/diago_david_float_test.cpp | 2 +- .../test/diago_david_real_test.cpp | 2 +- .../module_hsolver/test/diago_david_test.cpp | 2 +- source/module_io/get_pchg_lcao.cpp | 16 +- source/module_io/test/write_wfc_nao_test.cpp | 2 +- source/module_io/unk_overlap_pw.cpp | 241 +++++++++--------- source/module_io/write_dos_lcao.cpp | 10 +- source/module_io/write_proj_band_lcao.cpp | 30 ++- source/module_io/write_vxc_lip.hpp | 17 +- source/module_lr/AX/test/AX_test.cpp | 23 +- .../module_lr/dm_trans/test/dm_trans_test.cpp | 26 +- source/module_lr/esolver_lrtd_lcao.cpp | 12 +- source/module_lr/hamilt_casida.cpp | 17 +- .../ri_benchmark/test/ri_benchmark_test.cpp | 4 +- source/module_lr/utils/lr_util.hpp | 20 +- .../utils/test/lr_util_algorithms_test.cpp | 2 +- source/module_psi/psi.cpp | 214 ++++++++++------ source/module_psi/psi.h | 58 ++--- source/module_psi/test/psi_test.cpp | 51 +--- source/module_ri/exx_lip.hpp | 2 +- 38 files changed, 647 insertions(+), 484 deletions(-) diff --git a/source/module_elecstate/cal_dm.h b/source/module_elecstate/cal_dm.h index 5ac41aab9a..56aad08f3c 100644 --- a/source/module_elecstate/cal_dm.h +++ b/source/module_elecstate/cal_dm.h @@ -27,7 +27,12 @@ inline void cal_dm(const Parallel_Orbitals* ParaV, const ModuleBase::matrix& wg, //dm.fix_k(ik); dm[ik].create(ParaV->ncol, ParaV->nrow); // wg_wfc(ib,iw) = wg[ib] * wfc(ib,iw); - psi::Psi wg_wfc(wfc, 1); + psi::Psi wg_wfc(1, + wfc.get_nbands(), + wfc.get_nbasis(), + wfc.get_nbasis(), + true); + wg_wfc.set_all_psi(wfc.get_pointer(), wg_wfc.size()); int ib_global = 0; for (int ib_local = 0; ib_local < nbands_local; ++ib_local) @@ -41,7 +46,8 @@ inline void cal_dm(const Parallel_Orbitals* ParaV, const ModuleBase::matrix& wg, ModuleBase::WARNING_QUIT("ElecStateLCAO::cal_dm", "please check global2local_col!"); } } - if (ib_global >= wg.nc) continue; + if (ib_global >= wg.nc) { continue; +} const double wg_local = wg(ik, ib_global); double* wg_wfc_pointer = &(wg_wfc(0, ib_local, 0)); BlasConnector::scal(nbasis_local, wg_local, wg_wfc_pointer, 1); @@ -99,7 +105,8 @@ inline void cal_dm(const Parallel_Orbitals* ParaV, const ModuleBase::matrix& wg, ModuleBase::WARNING_QUIT("ElecStateLCAO::cal_dm", "please check global2local_col!"); } } - if (ib_global >= wg.nc) continue; + if (ib_global >= wg.nc) { continue; +} const double wg_local = wg(ik, ib_global); std::complex* wg_wfc_pointer = &(wg_wfc(0, ib_local, 0)); BlasConnector::scal(nbasis_local, wg_local, wg_wfc_pointer, 1); diff --git a/source/module_elecstate/elecstate_pw.cpp b/source/module_elecstate/elecstate_pw.cpp index 5558856289..f55f2ec447 100644 --- a/source/module_elecstate/elecstate_pw.cpp +++ b/source/module_elecstate/elecstate_pw.cpp @@ -183,7 +183,7 @@ void ElecStatePW::rhoBandK(const psi::Psi& psi) this->init_rho_data(); int ik = psi.get_current_k(); - int npw = psi.get_current_nbas(); + int npw = psi.get_current_ngk(); int current_spin = 0; if (PARAM.inp.nspin == 2) { @@ -287,7 +287,7 @@ void ElecStatePW::cal_becsum(const psi::Psi& psi) psi.fix_k(ik); const T* psi_now = psi.get_pointer(); const int currect_spin = this->klist->isk[ik]; - const int npw = psi.get_current_nbas(); + const int npw = psi.get_current_ngk(); // get |beta> if (this->ppcell->nkb > 0) diff --git a/source/module_elecstate/elecstate_pw_cal_tau.cpp b/source/module_elecstate/elecstate_pw_cal_tau.cpp index fd07f834af..ad8c9ce42f 100644 --- a/source/module_elecstate/elecstate_pw_cal_tau.cpp +++ b/source/module_elecstate/elecstate_pw_cal_tau.cpp @@ -15,7 +15,7 @@ void ElecStatePW::cal_tau(const psi::Psi& psi) for (int ik = 0; ik < psi.get_nk(); ++ik) { psi.fix_k(ik); - int npw = psi.get_current_nbas(); + int npw = psi.get_current_ngk(); int current_spin = 0; if (PARAM.inp.nspin == 2) { diff --git a/source/module_elecstate/module_dm/cal_dm_psi.cpp b/source/module_elecstate/module_dm/cal_dm_psi.cpp index 47fbfbf8c3..21d91e5225 100644 --- a/source/module_elecstate/module_dm/cal_dm_psi.cpp +++ b/source/module_elecstate/module_dm/cal_dm_psi.cpp @@ -32,7 +32,14 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, // dm.fix_k(ik); // dm[ik].create(ParaV->ncol, ParaV->nrow); // wg_wfc(ib,iw) = wg[ib] * wfc(ib,iw); - psi::Psi wg_wfc(wfc, 1); + + psi::Psi wg_wfc(1, + wfc.get_nbands(), + wfc.get_nbasis(), + wfc.get_nbasis(), + true); + wg_wfc.set_all_psi(wfc.get_pointer(), wg_wfc.size()); + int ib_global = 0; for (int ib_local = 0; ib_local < nbands_local; ++ib_local) @@ -89,7 +96,12 @@ void cal_dm_psi(const Parallel_Orbitals* ParaV, // dm.fix_k(ik); //dm[ik].create(ParaV->ncol, ParaV->nrow); // wg_wfc(ib,iw) = wg[ib] * wfc(ib,iw); - psi::Psi> wg_wfc(1, wfc.get_nbands(), wfc.get_nbasis(), nullptr); + psi::Psi> wg_wfc(1, + wfc.get_nbands(), + wfc.get_nbasis(), + wfc.get_nbasis(), + true); + const std::complex* pwfc = wfc.get_pointer(); std::complex* pwg_wfc = wg_wfc.get_pointer(); #ifdef _OPENMP diff --git a/source/module_esolver/esolver_ks_lcao.cpp b/source/module_esolver/esolver_ks_lcao.cpp index b9fb62e853..8c87cc352b 100644 --- a/source/module_esolver/esolver_ks_lcao.cpp +++ b/source/module_esolver/esolver_ks_lcao.cpp @@ -1083,7 +1083,7 @@ void ESolver_KS_LCAO::after_scf(UnitCell& ucell, const int istep) //! initialize the gradients of Etotal with respect to occupation numbers and wfc, //! and set all elements to 0. ModuleBase::matrix dE_dOccNum(this->pelec->wg.nr, this->pelec->wg.nc, true); - psi::Psi dE_dWfc(this->psi->get_nk(), this->psi->get_nbands(), this->psi->get_nbasis()); + psi::Psi dE_dWfc(this->psi->get_nk(), this->psi->get_nbands(), this->psi->get_nbasis(), this->kv.ngk, true); dE_dWfc.zero_out(); double Etotal_RDMFT = this->rdmft_solver.run(dE_dOccNum, dE_dWfc); diff --git a/source/module_esolver/esolver_of.cpp b/source/module_esolver/esolver_of.cpp index fc8d60c6d0..eb86e8f6ef 100644 --- a/source/module_esolver/esolver_of.cpp +++ b/source/module_esolver/esolver_of.cpp @@ -222,7 +222,11 @@ void ESolver_OF::before_opt(const int istep, UnitCell& ucell) // Refresh the arrays delete this->psi_; - this->psi_ = new psi::Psi(1, PARAM.inp.nspin, this->pw_rho->nrxx); + this->psi_ = new psi::Psi(1, + PARAM.inp.nspin, + this->pw_rho->nrxx, + this->pw_rho->nrxx, + true); for (int is = 0; is < PARAM.inp.nspin; ++is) { this->pphi_[is] = this->psi_->get_pointer(is); diff --git a/source/module_esolver/esolver_of_tool.cpp b/source/module_esolver/esolver_of_tool.cpp index 750598ab2e..e430347215 100644 --- a/source/module_esolver/esolver_of_tool.cpp +++ b/source/module_esolver/esolver_of_tool.cpp @@ -71,7 +71,11 @@ void ESolver_OF::init_elecstate(UnitCell& ucell) void ESolver_OF::allocate_array() { // Initialize the "wavefunction", which is sqrt(rho) - this->psi_ = new psi::Psi(1, PARAM.inp.nspin, this->pw_rho->nrxx); + this->psi_ = new psi::Psi(1, + PARAM.inp.nspin, + this->pw_rho->nrxx, + this->pw_rho->nrxx, + true); ModuleBase::Memory::record("OFDFT::Psi", sizeof(double) * PARAM.inp.nspin * this->pw_rho->nrxx); this->pphi_ = new double*[PARAM.inp.nspin]; for (int is = 0; is < PARAM.inp.nspin; ++is) diff --git a/source/module_hamilt_general/operator.cpp b/source/module_hamilt_general/operator.cpp index a99e813e01..008d5e30e3 100644 --- a/source/module_hamilt_general/operator.cpp +++ b/source/module_hamilt_general/operator.cpp @@ -4,28 +4,31 @@ using namespace hamilt; - -template -Operator::Operator(){} - -template -Operator::~Operator() +template +Operator::Operator() { - if(this->hpsi != nullptr) { delete this->hpsi; } + +template +Operator::~Operator() +{ + if (this->hpsi != nullptr) + { + delete this->hpsi; + } Operator* last = this->next_op; Operator* last_sub = this->next_sub_op; - while(last != nullptr || last_sub != nullptr) + while (last != nullptr || last_sub != nullptr) { - if(last_sub != nullptr) - {//delete sub_chain first + if (last_sub != nullptr) + { // delete sub_chain first Operator* node_delete = last_sub; last_sub = last_sub->next_sub_op; node_delete->next_sub_op = nullptr; delete node_delete; } else - {//delete main chain if sub_chain is deleted + { // delete main chain if sub_chain is deleted Operator* node_delete = last; last_sub = last->next_sub_op; node_delete->next_sub_op = nullptr; @@ -36,7 +39,7 @@ Operator::~Operator() } } -template +template typename Operator::hpsi_info Operator::hPsi(hpsi_info& input) const { using syncmem_op = base_device::memory::synchronize_memory_op; @@ -46,37 +49,51 @@ typename Operator::hpsi_info Operator::hPsi(hpsi_info& inp T* tmhpsi = this->get_hpsi(input); const T* tmpsi_in = std::get<0>(psi_info); - //if range in hpsi_info is illegal, the first return of to_range() would be nullptr + // if range in hpsi_info is illegal, the first return of to_range() would be nullptr if (tmpsi_in == nullptr) { ModuleBase::WARNING_QUIT("Operator", "please choose correct range of psi for hPsi()!"); } - //if in_place, copy temporary hpsi to target hpsi_pointer, then delete hpsi and new a wrapper for return + // if in_place, copy temporary hpsi to target hpsi_pointer, then delete hpsi and new a wrapper for return T* hpsi_pointer = std::get<2>(input); if (this->in_place) { // ModuleBase::GlobalFunc::COPYARRAY(this->hpsi->get_pointer(), hpsi_pointer, this->hpsi->size()); syncmem_op()(this->ctx, this->ctx, hpsi_pointer, this->hpsi->get_pointer(), this->hpsi->size()); delete this->hpsi; - this->hpsi = new psi::Psi(hpsi_pointer, *psi_input, 1, nbands / psi_input->npol); + this->hpsi = new psi::Psi(hpsi_pointer, + 1, + nbands / psi_input->npol, + psi_input->get_nbasis(), + psi_input->get_nbasis(), + true); } auto call_act = [&, this](const Operator* op, const bool& is_first_node) -> void { - // a "psi" with the bands of needed range - psi::Psi psi_wrapper(const_cast(tmpsi_in), 1, nbands, psi_input->get_nbasis(), true); - - + psi::Psi psi_wrapper(const_cast(tmpsi_in), + 1, + nbands, + psi_input->get_nbasis(), + psi_input->get_nbasis(), + true); + switch (op->get_act_type()) { case 2: op->act(psi_wrapper, *this->hpsi, nbands); break; default: - op->act(nbands, psi_input->get_nbasis(), psi_input->npol, tmpsi_in, this->hpsi->get_pointer(), psi_input->get_ngk(op->ik), is_first_node); + op->act(nbands, + psi_input->get_nbasis(), + psi_input->npol, + tmpsi_in, + this->hpsi->get_pointer(), + psi_input->get_current_nbas(), + is_first_node); break; } - }; + }; ModuleBase::timer::tick("Operator", "hPsi"); call_act(this, true); // first node @@ -91,39 +108,43 @@ typename Operator::hpsi_info Operator::hPsi(hpsi_info& inp return hpsi_info(this->hpsi, psi::Range(1, 0, 0, nbands / psi_input->npol), hpsi_pointer); } - -template -void Operator::init(const int ik_in) +template +void Operator::init(const int ik_in) { this->ik = ik_in; - if(this->next_op != nullptr) { + if (this->next_op != nullptr) + { this->next_op->init(ik_in); } } -template -void Operator::add(Operator* next) +template +void Operator::add(Operator* next) { - if(next==nullptr) { return; -} + if (next == nullptr) + { + return; + } next->is_first_node = false; - if(next->next_op != nullptr) { this->add(next->next_op); -} + if (next->next_op != nullptr) + { + this->add(next->next_op); + } Operator* last = this; - //loop to end of the chain - while(last->next_op != nullptr) + // loop to end of the chain + while (last->next_op != nullptr) { - if(next->cal_type==last->cal_type) + if (next->cal_type == last->cal_type) { break; } last = last->next_op; } - if(next->cal_type == last->cal_type) + if (next->cal_type == last->cal_type) { - //insert next to sub chain of current node + // insert next to sub chain of current node Operator* sub_last = last; - while(sub_last->next_sub_op != nullptr) + while (sub_last->next_sub_op != nullptr) { sub_last = sub_last->next_sub_op; } @@ -136,34 +157,45 @@ void Operator::add(Operator* next) } } -template +template T* Operator::get_hpsi(const hpsi_info& info) const { const int nbands_range = (std::get<1>(info).range_2 - std::get<1>(info).range_1 + 1); - //in_place call of hPsi, hpsi inputs as new psi, - //create a new hpsi and delete old hpsi later + // in_place call of hPsi, hpsi inputs as new psi, + // create a new hpsi and delete old hpsi later T* hpsi_pointer = std::get<2>(info); const T* psi_pointer = std::get<0>(info)->get_pointer(); - if(this->hpsi != nullptr) + if (this->hpsi != nullptr) { delete this->hpsi; this->hpsi = nullptr; } - if(!hpsi_pointer) + if (!hpsi_pointer) { ModuleBase::WARNING_QUIT("Operator::hPsi", "hpsi_pointer can not be nullptr"); } - else if(hpsi_pointer == psi_pointer) + else if (hpsi_pointer == psi_pointer) { this->in_place = true; - this->hpsi = new psi::Psi(std::get<0>(info)[0], 1, nbands_range); + // this->hpsi = new psi::Psi(std::get<0>(info)[0], 1, nbands_range); + this->hpsi = new psi::Psi(1, + nbands_range, + std::get<0>(info)->get_nbasis(), + std::get<0>(info)->get_nbasis(), + true); } else { this->in_place = false; - this->hpsi = new psi::Psi(hpsi_pointer, std::get<0>(info)[0], 1, nbands_range); + + this->hpsi = new psi::Psi(hpsi_pointer, + 1, + nbands_range, + std::get<0>(info)->get_nbasis(), + std::get<0>(info)->get_nbasis(), + true); } - + hpsi_pointer = this->hpsi->get_pointer(); size_t total_hpsi_size = nbands_range * this->hpsi->get_nbasis(); // ModuleBase::GlobalFunc::ZEROS(hpsi_pointer, total_hpsi_size); @@ -172,7 +204,8 @@ T* Operator::get_hpsi(const hpsi_info& info) const return hpsi_pointer; } -namespace hamilt { +namespace hamilt +{ template class Operator; template class Operator, base_device::DEVICE_CPU>; template class Operator; @@ -183,4 +216,4 @@ template class Operator, base_device::DEVICE_GPU>; template class Operator; template class Operator, base_device::DEVICE_GPU>; #endif -} +} // namespace hamilt diff --git a/source/module_hamilt_general/operator.h b/source/module_hamilt_general/operator.h index 6cf29122fe..80ed065ccc 100644 --- a/source/module_hamilt_general/operator.h +++ b/source/module_hamilt_general/operator.h @@ -1,19 +1,19 @@ #ifndef OPERATOR_H #define OPERATOR_H -#include - #include "module_base/global_function.h" #include "module_base/tool_quit.h" #include "module_psi/psi.h" +#include + namespace hamilt { enum class calculation_type { no, - pw_ekinetic, + pw_ekinetic, pw_nonlocal, pw_veff, pw_meta, @@ -28,49 +28,54 @@ enum class calculation_type lcao_tddft_velocity, }; -// Basic class for operator module, +// Basic class for operator module, // it is designed for "O|psi>" and "" // Operator "O" might have several different types, which should be calculated one by one. // In basic class , function add() is designed for combine all operators together with a chain. template class Operator { - public: + public: Operator(); virtual ~Operator(); - //this is the core function for Operator - // do H|psi> from input |psi> , + // this is the core function for Operator + // do H|psi> from input |psi> , /// as default, different operators donate hPsi independently - /// run this->act function for the first operator and run all act() for other nodes in chain table + /// run this->act function for the first operator and run all act() for other nodes in chain table /// if this procedure is not suitable for your operator, just override this function. - /// output of hpsi would be first member of the returned tuple + /// output of hpsi would be first member of the returned tuple typedef std::tuple*, const psi::Range, T*> hpsi_info; - virtual hpsi_info hPsi(hpsi_info& input)const; + + virtual hpsi_info hPsi(hpsi_info& input) const; virtual void init(const int ik_in); virtual void add(Operator* next); - virtual int get_ik() const { return this->ik; } + virtual int get_ik() const + { + return this->ik; + } - ///do operation : |hpsi_choosed> = V|psi_choosed> - ///V is the target operator act on choosed psi, the consequence should be added to choosed hpsi - /// interface type 1: pointer-only (default) - /// @note PW: nbasis = max_npw * npol, nbands = nband * npol, npol = npol. Strange but PAY ATTENTION!!! + /// do operation : |hpsi_choosed> = V|psi_choosed> + /// V is the target operator act on choosed psi, the consequence should be added to choosed hpsi + /// interface type 1: pointer-only (default) + /// @note PW: nbasis = max_npw * npol, nbands = nband * npol, npol = npol. Strange but PAY ATTENTION!!! virtual void act(const int nbands, - const int nbasis, - const int npol, - const T* tmpsi_in, - T* tmhpsi, - const int ngk_ik = 0, - const bool is_first_node = false)const {}; + const int nbasis, + const int npol, + const T* tmpsi_in, + T* tmhpsi, + const int ngk_ik = 0, + const bool is_first_node = false) const {}; /// developer-friendly interfaces for act() function /// interface type 2: input and change the Psi-type HPsi // virtual void act(const psi::Psi& psi_in, psi::Psi& psi_out) const {}; virtual void act(const psi::Psi& psi_in, psi::Psi& psi_out, const int nbands) const {}; + /// interface type 3: return a Psi-type HPsi // virtual psi::Psi act(const psi::Psi& psi_in) const { return psi_in; }; @@ -78,36 +83,41 @@ class Operator /// type 1 (default): pointer-only /// act(const T* psi_in, T* psi_out) - /// type 2: use the `Psi`class + /// type 2: use the `Psi`class /// act(const Psi& psi_in, Psi& psi_out) - int get_act_type() const { return this->act_type; } -protected: + int get_act_type() const + { + return this->act_type; + } + + protected: int ik = 0; - int act_type = 1; ///< determine which act() interface would be called in hPsi() + int act_type = 1; ///< determine which act() interface would be called in hPsi() mutable bool in_place = false; - //calculation type, only different type can be in main chain table + // calculation type, only different type can be in main chain table enum calculation_type cal_type; Operator* next_sub_op = nullptr; bool is_first_node = true; - //if this Operator is first node in chain table, hpsi would not be empty + // if this Operator is first node in chain table, hpsi would not be empty mutable psi::Psi* hpsi = nullptr; /*This function would analyze hpsi_info and choose how to arrange hpsi storage In hpsi_info, if the third parameter hpsi_pointer is set, which indicates memory of hpsi is arranged by developer; - if hpsi_pointer is not set(nullptr), which indicates memory of hpsi is arranged by Operator, this case is rare. + if hpsi_pointer is not set(nullptr), which indicates memory of hpsi is arranged by Operator, this case is rare. two cases would occurred: - 1. hpsi_pointer != nullptr && psi_pointer == hpsi_pointer , psi would be replaced by hpsi, hpsi need a temporary memory - 2. hpsi_pointer != nullptr && psi_pointer != hpsi_pointer , this is the commonly case + 1. hpsi_pointer != nullptr && psi_pointer == hpsi_pointer , psi would be replaced by hpsi, hpsi need a temporary + memory + 2. hpsi_pointer != nullptr && psi_pointer != hpsi_pointer , this is the commonly case */ - T* get_hpsi(const hpsi_info& info)const; + T* get_hpsi(const hpsi_info& info) const; - Device *ctx = {}; + Device* ctx = {}; using set_memory_op = base_device::memory::set_memory_op; }; -}//end namespace hamilt +} // end namespace hamilt #endif \ No newline at end of file diff --git a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.cpp b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.cpp index 412534df6a..f49a9b6702 100644 --- a/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.cpp +++ b/source/module_hamilt_pw/hamilt_pwdft/operator_pw/velocity_pw.cpp @@ -23,7 +23,8 @@ Velocity::Velocity this->ucell = ucell_in; this->nonlocal = nonlocal_in; this->tpiba = ucell_in -> tpiba; - if(this->nonlocal) this->ppcell->initgradq_vnl(*this->ucell); + if(this->nonlocal) { this->ppcell->initgradq_vnl(*this->ucell); +} } void Velocity::init(const int ik_in) @@ -47,7 +48,9 @@ void Velocity::act ) const { ModuleBase::timer::tick("Operator", "Velocity"); - const int npw = psi_in->get_ngk(this->ik); + + const int npw = psi_in->get_current_nbas(); + const int max_npw = psi_in->get_nbasis() / psi_in->npol; const int npol = psi_in->npol; const std::complex* tmpsi_in = psi0; diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_elecond.cpp b/source/module_hamilt_pw/hamilt_stodft/sto_elecond.cpp index 8692a586ee..c0e5d61d3f 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_elecond.cpp +++ b/source/module_hamilt_pw/hamilt_stodft/sto_elecond.cpp @@ -172,9 +172,9 @@ void Sto_EleCond::cal_jmatrix(const psi::Psi>& kspsi_all, const int allbands = bandinfo[5]; const int dim_jmatrix = perbands_ks * allbands_sto + perbands_sto * allbands; - psi::Psi> right_hchi(1, perbands_sto, npwx, p_kv->ngk.data()); - psi::Psi> f_rightchi(1, perbands_sto, npwx, p_kv->ngk.data()); - psi::Psi> f_right_hchi(1, perbands_sto, npwx, p_kv->ngk.data()); + psi::Psi> right_hchi(1, perbands_sto, npwx, npw, true); + psi::Psi> f_rightchi(1, perbands_sto, npwx, npw, true); + psi::Psi> f_right_hchi(1, perbands_sto, npwx, npw, true); this->p_hamilt_sto->hPsi(leftchi.get_pointer(), left_hchi.get_pointer(), perbands_sto); this->p_hamilt_sto->hPsi(rightchi.get_pointer(), right_hchi.get_pointer(), perbands_sto); @@ -206,8 +206,8 @@ void Sto_EleCond::cal_jmatrix(const psi::Psi>& kspsi_all, } #endif - psi::Psi> f_batch_vchi(1, bsize_psi * ndim, npwx, p_kv->ngk.data()); - psi::Psi> f_batch_vhchi(1, bsize_psi * ndim, npwx, p_kv->ngk.data()); + psi::Psi> f_batch_vchi(1, bsize_psi * ndim, npwx, npw, true); + psi::Psi> f_batch_vhchi(1, bsize_psi * ndim, npwx, npw, true); std::vector> tmpj(ndim * allbands_sto * perbands_sto); // 1. (<\psi|J|\chi>)^T @@ -663,19 +663,19 @@ void Sto_EleCond::sKG(const int& smear_type, //----------------------------------------------------------- //------------------- allocate ------------------------- size_t ks_memory_cost = perbands_ks * npwx * sizeof(std::complex); - psi::Psi> kspsi(1, perbands_ks, npwx, p_kv->ngk.data()); - psi::Psi> vkspsi(1, perbands_ks * ndim, npwx, p_kv->ngk.data()); + psi::Psi> kspsi(1, perbands_ks, npwx, npw, true); + psi::Psi> vkspsi(1, perbands_ks * ndim, npwx, npw, true); std::vector> expmtmf_fact(perbands_ks), expmtf_fact(perbands_ks); - psi::Psi> f_kspsi(1, perbands_ks, npwx, p_kv->ngk.data()); + psi::Psi> f_kspsi(1, perbands_ks, npwx, npw, true); ModuleBase::Memory::record("SDFT::kspsi", ks_memory_cost); - psi::Psi> f_vkspsi(1, perbands_ks * ndim, npwx, p_kv->ngk.data()); + psi::Psi> f_vkspsi(1, perbands_ks * ndim, npwx, npw, true); ModuleBase::Memory::record("SDFT::vkspsi", ks_memory_cost); psi::Psi>* kspsi_all = &f_kspsi; size_t sto_memory_cost = perbands_sto * npwx * sizeof(std::complex); - psi::Psi> sfchi(1, perbands_sto, npwx, p_kv->ngk.data()); + psi::Psi> sfchi(1, perbands_sto, npwx, npw, true); ModuleBase::Memory::record("SDFT::sfchi", sto_memory_cost); - psi::Psi> smfchi(1, perbands_sto, npwx, p_kv->ngk.data()); + psi::Psi> smfchi(1, perbands_sto, npwx, npw, true); ModuleBase::Memory::record("SDFT::smfchi", sto_memory_cost); #ifdef __MPI psi::Psi> chi_all, hchi_all, psi_all; @@ -702,8 +702,8 @@ void Sto_EleCond::sKG(const int& smear_type, const int nbatch_psi = npart_sto; const int bsize_psi = ceil(double(perbands_sto) / nbatch_psi); - psi::Psi> batch_vchi(1, bsize_psi * ndim, npwx, p_kv->ngk.data()); - psi::Psi> batch_vhchi(1, bsize_psi * ndim, npwx, p_kv->ngk.data()); + psi::Psi> batch_vchi(1, bsize_psi * ndim, npwx, npw, true); + psi::Psi> batch_vhchi(1, bsize_psi * ndim, npwx, npw, true); ModuleBase::Memory::record("SDFT::batchjpsi", 3 * bsize_psi * ndim * npwx * sizeof(std::complex)); //------------------- sqrt(f)|psi> sqrt(1-f)|psi> --------------- @@ -781,7 +781,7 @@ void Sto_EleCond::sKG(const int& smear_type, std::vector> j1r(ndim * dim_jmatrix), j2r(ndim * dim_jmatrix); ModuleBase::Memory::record("SDFT::j1r", sizeof(std::complex) * ndim * dim_jmatrix); ModuleBase::Memory::record("SDFT::j2r", sizeof(std::complex) * ndim * dim_jmatrix); - psi::Psi> tmphchil(1, perbands_sto, npwx, p_kv->ngk.data()); + psi::Psi> tmphchil(1, perbands_sto, npwx, npw, true); ModuleBase::Memory::record("SDFT::tmphchil/r", sto_memory_cost * 2); //------------------------ t loop -------------------------- diff --git a/source/module_hamilt_pw/hamilt_stodft/sto_iter.cpp b/source/module_hamilt_pw/hamilt_stodft/sto_iter.cpp index bcfbd2da61..ec4aa26c1c 100644 --- a/source/module_hamilt_pw/hamilt_stodft/sto_iter.cpp +++ b/source/module_hamilt_pw/hamilt_stodft/sto_iter.cpp @@ -60,7 +60,7 @@ void Stochastic_Iter::orthog(const int& ik, psi::Psi& psi, if (PARAM.inp.nbands > 0) { const int nchipk = stowf.nchip[ik]; - const int npw = psi.get_current_nbas(); + const int npw = psi.get_current_ngk(); const int npwx = psi.get_nbasis(); stowf.chi0->fix_k(ik); stowf.chiortho->fix_k(ik); diff --git a/source/module_hamilt_pw/hamilt_stodft/test/test_sto_tool.cpp b/source/module_hamilt_pw/hamilt_stodft/test/test_sto_tool.cpp index 2e429dfa3f..f343c93c81 100644 --- a/source/module_hamilt_pw/hamilt_stodft/test/test_sto_tool.cpp +++ b/source/module_hamilt_pw/hamilt_stodft/test/test_sto_tool.cpp @@ -68,8 +68,8 @@ TEST_F(TestStoTool, parallel_distribution) TEST_F(TestStoTool, convert_psi) { - psi::Psi> psi_in(1, 1, 10); - psi::Psi> psi_out(1, 1, 10); + psi::Psi> psi_in(1, 1, 10, 10, true); + psi::Psi> psi_out(1, 1, 10, 10, true); for (int i = 0; i < 10; ++i) { psi_in.get_pointer()[i] = std::complex(i, i); @@ -83,8 +83,8 @@ TEST_F(TestStoTool, convert_psi) TEST_F(TestStoTool, gatherchi) { - psi::Psi> chi(1, 1, 10); - psi::Psi> chi_all(1, 1, 10); + psi::Psi> chi(1, 1, 10, 10, true); + psi::Psi> chi_all(1, 1, 10, 10, true); int npwx = 10; int nrecv_sto[4] = {1, 2, 3, 4}; int displs_sto[4] = {0, 1, 3, 6}; diff --git a/source/module_hsolver/diago_iter_assist.cpp b/source/module_hsolver/diago_iter_assist.cpp index 5ec443ab4e..bdb60ffaff 100644 --- a/source/module_hsolver/diago_iter_assist.cpp +++ b/source/module_hsolver/diago_iter_assist.cpp @@ -49,7 +49,7 @@ void DiagoIterAssist::diagH_subspace(const hamilt::Hamilt* setmem_complex_op()(ctx, scc, 0, nstart * nstart); setmem_complex_op()(ctx, vcc, 0, nstart * nstart); - const int dmin = psi.get_current_nbas(); + const int dmin = psi.get_current_ngk(); const int dmax = psi.get_nbasis(); T* temp = nullptr; @@ -167,7 +167,7 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* const int nstart = psi_nr; const int n_band = evc.get_nbands(); const int dmax = evc.get_nbasis(); - const int dmin = evc.get_current_nbas(); + const int dmin = evc.get_current_ngk(); // skip the diagonalization if the operators are not allocated if (pHamilt->ops == nullptr) @@ -199,7 +199,8 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* if (base_device::get_device_type(ctx) == base_device::GpuDevice) { - psi::Psi psi_temp(1, 1, psi_nc, &evc.get_ngk(0)); + psi::Psi psi_temp(1, 1, psi_nc, dmin, true); + T* ppsi = psi_temp.get_pointer(); // hpsi and spsi share the temp space T* temp = nullptr; @@ -212,7 +213,7 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* { // psi_temp is one band psi, psi is all bands psi, the range always is 1 for the only band in psi_temp syncmem_complex_op()(ctx, ctx, ppsi, psi + i * psi_nc, psi_nc); - psi::Range band_by_band_range(1, 0, 0, 0); + psi::Range band_by_band_range(true, 0, 0, 0); hpsi_info hpsi_in(&psi_temp, band_by_band_range, hpsi); // H|Psi> to get hpsi for target band @@ -246,7 +247,8 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* } else if (base_device::get_device_type(ctx) == base_device::CpuDevice) { - psi::Psi psi_temp(1, nstart, psi_nc, &evc.get_ngk(0)); + psi::Psi psi_temp(1, nstart, psi_nc, dmin, true); + T* ppsi = psi_temp.get_pointer(); syncmem_complex_op()(ctx, ctx, ppsi, psi, psi_temp.size()); // hpsi and spsi share the temp space @@ -256,7 +258,7 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* T* hpsi = temp; // do hPsi for all bands - psi::Range all_bands_range(1, 0, 0, nstart - 1); + psi::Range all_bands_range(true, 0, 0, nstart - 1); hpsi_info hpsi_in(&psi_temp, all_bands_range, hpsi); pHamilt->ops->hPsi(hpsi_in); @@ -264,7 +266,7 @@ void DiagoIterAssist::diagH_subspace_init(hamilt::Hamilt* T* spsi = temp; // do sPsi for all bands - pHamilt->sPsi(ppsi, spsi, psi_temp.get_nbasis(), psi_temp.get_current_nbas(), psi_temp.get_nbands()); + pHamilt->sPsi(ppsi, spsi, psi_temp.get_nbasis(), psi_temp.get_nbasis(), psi_temp.get_nbands()); gemm_op()(ctx, 'C', 'N', nstart, nstart, dmin, &one, ppsi, dmax, spsi, dmax, &zero, scc, nstart); delmem_complex_op()(ctx, temp); @@ -423,7 +425,7 @@ void DiagoIterAssist::cal_hs_subspace(const hamilt::Hamilt setmem_complex_op()(ctx, hcc, 0, nstart * nstart); setmem_complex_op()(ctx, scc, 0, nstart * nstart); - const int dmin = psi.get_current_nbas(); + const int dmin = psi.get_current_ngk(); const int dmax = psi.get_nbasis(); T* temp = nullptr; @@ -549,7 +551,7 @@ void DiagoIterAssist::diag_subspace_psi(const T* hcc, DiagoIterAssist::diagH_LAPACK(nstart, nstart, hcc, scc, nstart, en, vcc); { // code block to calculate tar_mat - const int dmin = evc.get_current_nbas(); + const int dmin = evc.get_current_ngk(); const int dmax = evc.get_nbasis(); T* temp = nullptr; resmem_complex_op()(ctx, temp, nstart * dmax, "DiagSub::temp"); @@ -586,8 +588,9 @@ bool DiagoIterAssist::test_exit_cond(const int& ntry, const int& notc //================================================================ bool scf = true; - if (PARAM.inp.calculation == "nscf") + if (PARAM.inp.calculation == "nscf") { scf = false; +} // If ntry <=5, try to do it better, if ntry > 5, exit. const bool f1 = (ntry <= 5); diff --git a/source/module_hsolver/hsolver_pw.cpp b/source/module_hsolver/hsolver_pw.cpp index 0c1ad2e8b8..dbfca81061 100644 --- a/source/module_hsolver/hsolver_pw.cpp +++ b/source/module_hsolver/hsolver_pw.cpp @@ -310,7 +310,11 @@ void HSolverPW::solve(hamilt::Hamilt* pHamilt, #endif /// solve eigenvector and eigenvalue for H(k) - this->hamiltSolvePsiK(pHamilt, psi, precondition, eigenvalues.data() + ik * psi.get_nbands(), this->wfc_basis->nks); + this->hamiltSolvePsiK(pHamilt, + psi, + precondition, + eigenvalues.data() + ik * psi.get_nbands(), + this->wfc_basis->nks); if (skip_charge) { @@ -370,18 +374,12 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, const diag_comm_info comm_info = {this->rank_in_pool, this->nproc_in_pool}; #endif - auto ngk_pointer = psi.get_ngk_pointer(); - - std::vector ngk_vector(nk_nums, 0); - for (int i = 0; i < nk_nums; i++) - { - ngk_vector[i] = ngk_pointer[i]; - } + const int cur_nbasis = psi.get_current_nbas(); if (this->method == "cg") { // wrap the subspace_func into a lambda function - auto subspace_func = [hm, ngk_vector](const ct::Tensor& psi_in, ct::Tensor& psi_out) { + auto subspace_func = [hm, cur_nbasis](const ct::Tensor& psi_in, ct::Tensor& psi_out) { // psi_in should be a 2D tensor: // psi_in.shape() = [nbands, nbasis] const auto ndim = psi_in.shape().ndim(); @@ -391,12 +389,12 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, 1, psi_in.shape().dim_size(0), psi_in.shape().dim_size(1), - ngk_vector); + cur_nbasis); auto psi_out_wrapper = psi::Psi(psi_out.data(), 1, psi_out.shape().dim_size(0), psi_out.shape().dim_size(1), - ngk_vector); + cur_nbasis); auto eigen = ct::Tensor(ct::DataTypeToEnum::value, ct::DeviceType::CpuDevice, ct::TensorShape({psi_in.shape().dim_size(0)})); @@ -415,7 +413,7 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, using ct_Device = typename ct::PsiToContainer::type; // wrap the hpsi_func and spsi_func into a lambda function - auto hpsi_func = [hm, ngk_vector](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { + auto hpsi_func = [hm, cur_nbasis](const ct::Tensor& psi_in, ct::Tensor& hpsi_out) { ModuleBase::timer::tick("DiagoCG_New", "hpsi_func"); // psi_in should be a 2D tensor: // psi_in.shape() = [nbands, nbasis] @@ -426,7 +424,7 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, 1, ndim == 1 ? 1 : psi_in.shape().dim_size(0), ndim == 1 ? psi_in.NumElements() : psi_in.shape().dim_size(1), - ngk_vector); + cur_nbasis); psi::Range all_bands_range(true, psi_wrapper.get_current_k(), 0, psi_wrapper.get_nbands() - 1); using hpsi_info = typename hamilt::Operator::hpsi_info; hpsi_info info(&psi_wrapper, all_bands_range, hpsi_out.data()); @@ -475,7 +473,7 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, ct::DeviceTypeToEnum::value, ct::TensorShape({static_cast(pre_condition.size())})) .to_device() - .slice({0}, {psi.get_current_nbas()}); + .slice({0}, {psi.get_current_ngk()}); cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, this->ethr_band, prec_tensor); // TODO: Double check tensormap's potential problem @@ -486,11 +484,11 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, const int nband = psi.get_nbands(); const int nbasis = psi.get_nbasis(); // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, ngk_vector](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { + auto hpsi_func = [hm, cur_nbasis](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { ModuleBase::timer::tick("DavSubspace", "hpsi_func"); // Convert "pointer data stucture" to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_vector); + auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, cur_nbasis); psi::Range bands_range(true, 0, 0, nvec - 1); @@ -507,11 +505,11 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, else if (this->method == "dav_subspace") { // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, ngk_vector](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { + auto hpsi_func = [hm, cur_nbasis](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { ModuleBase::timer::tick("DavSubspace", "hpsi_func"); // Convert "pointer data stucture" to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_vector); + auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, cur_nbasis); psi::Range bands_range(true, 0, 0, nvec - 1); @@ -525,7 +523,7 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, Diago_DavSubspace dav_subspace(pre_condition, psi.get_nbands(), - psi.get_k_first() ? psi.get_current_nbas() + psi.get_k_first() ? psi.get_current_ngk() : psi.get_nk() * psi.get_nbasis(), PARAM.inp.pw_diag_ndim, this->diag_thr, @@ -551,18 +549,18 @@ void HSolverPW::hamiltSolvePsiK(hamilt::Hamilt* hm, const int david_maxiter = this->diag_iter_max; // dimensions of matrix to be solved - const int dim = psi.get_current_nbas(); /// dimension of matrix - const int nband = psi.get_nbands(); /// number of eigenpairs sought - const int ld_psi = psi.get_nbasis(); /// leading dimension of psi + const int dim = psi.get_current_ngk(); /// dimension of matrix + const int nband = psi.get_nbands(); /// number of eigenpairs sought + const int ld_psi = psi.get_nbasis(); /// leading dimension of psi // Davidson matrix-blockvector functions /// wrap hpsi into lambda function, Matrix \times blockvector // hpsi_func (X, HX, ld, nvec) -> HX = H(X), X and HX blockvectors of size ld x nvec - auto hpsi_func = [hm, ngk_vector](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { + auto hpsi_func = [hm, cur_nbasis](T* psi_in, T* hpsi_out, const int ld_psi, const int nvec) { ModuleBase::timer::tick("David", "hpsi_func"); // Convert pointer of psi_in to a psi::Psi object - auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, ngk_vector); + auto psi_iter_wrapper = psi::Psi(psi_in, 1, nvec, ld_psi, cur_nbasis); psi::Range bands_range(true, 0, 0, nvec - 1); diff --git a/source/module_hsolver/test/diago_cg_float_test.cpp b/source/module_hsolver/test/diago_cg_float_test.cpp index 47fac4ef01..29fadb84bc 100644 --- a/source/module_hsolver/test/diago_cg_float_test.cpp +++ b/source/module_hsolver/test/diago_cg_float_test.cpp @@ -182,7 +182,7 @@ class DiagoCGPrepare psi_local.get_pointer(), ct::DataType::DT_COMPLEX, ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_nbas()}); + ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_ngk()}); auto eigen_tensor = ct::TensorMap( en, ct::DataType::DT_FLOAT, @@ -192,7 +192,7 @@ class DiagoCGPrepare precondition_local, ct::DataType::DT_FLOAT, ct::DeviceType::CpuDevice, - ct::TensorShape({static_cast(psi_local.get_current_nbas())})).slice({0}, {psi_local.get_current_nbas()}); + ct::TensorShape({static_cast(psi_local.get_current_ngk())})).slice({0}, {psi_local.get_current_ngk()}); std::vector ethr_band(nband, 1e-5); cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, ethr_band, prec_tensor); diff --git a/source/module_hsolver/test/diago_cg_real_test.cpp b/source/module_hsolver/test/diago_cg_real_test.cpp index 97872c316d..7ee33a7e99 100644 --- a/source/module_hsolver/test/diago_cg_real_test.cpp +++ b/source/module_hsolver/test/diago_cg_real_test.cpp @@ -185,7 +185,7 @@ class DiagoCGPrepare psi_local.get_pointer(), ct::DataType::DT_DOUBLE, ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_nbas()}); + ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_ngk()}); auto eigen_tensor = ct::TensorMap( en, ct::DataType::DT_DOUBLE, @@ -195,7 +195,7 @@ class DiagoCGPrepare precondition_local, ct::DataType::DT_DOUBLE, ct::DeviceType::CpuDevice, - ct::TensorShape({static_cast(psi_local.get_current_nbas())})).slice({0}, {psi_local.get_current_nbas()}); + ct::TensorShape({static_cast(psi_local.get_current_ngk())})).slice({0}, {psi_local.get_current_ngk()}); std::vector ethr_band(nband, 1e-5); cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, ethr_band, prec_tensor); diff --git a/source/module_hsolver/test/diago_cg_test.cpp b/source/module_hsolver/test/diago_cg_test.cpp index 08912bc428..5783c74c12 100644 --- a/source/module_hsolver/test/diago_cg_test.cpp +++ b/source/module_hsolver/test/diago_cg_test.cpp @@ -176,7 +176,7 @@ class DiagoCGPrepare psi_local.get_pointer(), ct::DataType::DT_COMPLEX_DOUBLE, ct::DeviceType::CpuDevice, - ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_nbas()}); + ct::TensorShape({psi_local.get_nbands(), psi_local.get_nbasis()})).slice({0, 0}, {psi_local.get_nbands(), psi_local.get_current_ngk()}); auto eigen_tensor = ct::TensorMap( en, ct::DataType::DT_DOUBLE, @@ -186,7 +186,7 @@ class DiagoCGPrepare precondition_local, ct::DataType::DT_DOUBLE, ct::DeviceType::CpuDevice, - ct::TensorShape({static_cast(psi_local.get_current_nbas())})).slice({0}, {psi_local.get_current_nbas()}); + ct::TensorShape({static_cast(psi_local.get_current_ngk())})).slice({0}, {psi_local.get_current_ngk()}); std::vector ethr_band(nband, 1e-5); cg.diag(hpsi_func, spsi_func, psi_tensor, eigen_tensor, ethr_band, prec_tensor); diff --git a/source/module_hsolver/test/diago_david_float_test.cpp b/source/module_hsolver/test/diago_david_float_test.cpp index c3feeea246..0f05717511 100644 --- a/source/module_hsolver/test/diago_david_float_test.cpp +++ b/source/module_hsolver/test/diago_david_float_test.cpp @@ -90,7 +90,7 @@ class DiagoDavPrepare const hsolver::diag_comm_info comm_info = {mypnum, nprocs}; #endif - const int dim = phi.get_current_nbas() ; + const int dim = phi.get_current_ngk() ; const int nband = phi.get_nbands(); const int ld_psi =phi.get_nbasis(); hsolver::DiagoDavid> dav(precondition, nband, dim, order, false, comm_info); diff --git a/source/module_hsolver/test/diago_david_real_test.cpp b/source/module_hsolver/test/diago_david_real_test.cpp index a1c4dee958..634b2ab83b 100644 --- a/source/module_hsolver/test/diago_david_real_test.cpp +++ b/source/module_hsolver/test/diago_david_real_test.cpp @@ -89,7 +89,7 @@ class DiagoDavPrepare const hsolver::diag_comm_info comm_info = {mypnum, nprocs}; #endif - const int dim = phi.get_current_nbas(); + const int dim = phi.get_current_ngk(); const int nband = phi.get_nbands(); const int ld_psi = phi.get_nbasis(); hsolver::DiagoDavid dav(precondition, nband, dim, order, false, comm_info); diff --git a/source/module_hsolver/test/diago_david_test.cpp b/source/module_hsolver/test/diago_david_test.cpp index 71005a78b9..01c0e62a42 100644 --- a/source/module_hsolver/test/diago_david_test.cpp +++ b/source/module_hsolver/test/diago_david_test.cpp @@ -92,7 +92,7 @@ class DiagoDavPrepare const hsolver::diag_comm_info comm_info = {mypnum, nprocs}; #endif - const int dim = phi.get_current_nbas(); + const int dim = phi.get_current_ngk(); const int nband = phi.get_nbands(); const int ld_psi = phi.get_nbasis(); hsolver::DiagoDavid> dav(precondition, nband, dim, order, false, comm_info); diff --git a/source/module_io/get_pchg_lcao.cpp b/source/module_io/get_pchg_lcao.cpp index 6e069fd017..3cea8a3940 100644 --- a/source/module_io/get_pchg_lcao.cpp +++ b/source/module_io/get_pchg_lcao.cpp @@ -478,7 +478,14 @@ void IState_Charge::idmatrix(const int& ib, // wg_wfc(ib,iw) = wg[ib] * wfc(ib,iw); this->psi_gamma->fix_k(is); - psi::Psi wg_wfc(*this->psi_gamma, 1); + + // psi::Psi wg_wfc(*this->psi_gamma, 1, this->psi_gamma->get_nbands()); + psi::Psi wg_wfc(1, + this->psi_gamma->get_nbands(), + this->psi_gamma->get_nbasis(), + this->psi_gamma->get_nbasis(), + true); + wg_wfc.set_all_psi(this->psi_gamma->get_pointer(), wg_wfc.size()); for (int ir = 0; ir < wg_wfc.get_nbands(); ++ir) { @@ -540,7 +547,12 @@ void IState_Charge::idmatrix(const int& ib, } this->psi_k->fix_k(ik); - psi::Psi> wg_wfc(*this->psi_k, 1); + + psi::Psi> wg_wfc(1, + this->psi_k->get_nbands(), + this->psi_k->get_nbasis(), + this->psi_k->get_nbasis(), + true); for (int ir = 0; ir < wg_wfc.get_nbands(); ++ir) { diff --git a/source/module_io/test/write_wfc_nao_test.cpp b/source/module_io/test/write_wfc_nao_test.cpp index 1b39f34a0e..c0effc8711 100644 --- a/source/module_io/test/write_wfc_nao_test.cpp +++ b/source/module_io/test/write_wfc_nao_test.cpp @@ -167,7 +167,7 @@ class WriteWfcLcaoTest : public testing::Test TEST_F(WriteWfcLcaoTest, WriteWfcLcao) { // create a psi object - psi::Psi my_psi(psi_local_double.data(), nk, nbands_local, nbasis_local, true); + psi::Psi my_psi(psi_local_double.data(), nk, nbands_local, nbasis_local, nbasis_local, true); PARAM.sys.global_out_dir = "./"; ModuleIO::write_wfc_nao(2, my_psi, ekb, wg, kvec_c, pv, -1); diff --git a/source/module_io/unk_overlap_pw.cpp b/source/module_io/unk_overlap_pw.cpp index d0d1d7c706..d4f0d2a85b 100644 --- a/source/module_io/unk_overlap_pw.cpp +++ b/source/module_io/unk_overlap_pw.cpp @@ -1,16 +1,16 @@ #include "unk_overlap_pw.h" -#include "module_parameter/parameter.h" #include "module_hamilt_pw/hamilt_pwdft/global.h" +#include "module_parameter/parameter.h" unkOverlap_pw::unkOverlap_pw() { - //GlobalV::ofs_running << "this is unkOverlap_pw()" << std::endl; + // GlobalV::ofs_running << "this is unkOverlap_pw()" << std::endl; } unkOverlap_pw::~unkOverlap_pw() { - //GlobalV::ofs_running << "this is ~unkOverlap_pw()" << std::endl; + // GlobalV::ofs_running << "this is ~unkOverlap_pw()" << std::endl; } std::complex unkOverlap_pw::unkdotp_G(const ModulePW::PW_Basis_K* wfcpw, @@ -20,50 +20,44 @@ std::complex unkOverlap_pw::unkdotp_G(const ModulePW::PW_Basis_K* wfcpw, const int iband_R, const psi::Psi>* evc) { - - std::complex result(0.0,0.0); - const int number_pw = wfcpw->npw; - std::complex *unk_L = new std::complex[number_pw]; - std::complex *unk_R = new std::complex[number_pw]; - ModuleBase::GlobalFunc::ZEROS(unk_L,number_pw); - ModuleBase::GlobalFunc::ZEROS(unk_R,number_pw); - - - for (int igl = 0; igl < evc->get_ngk(ik_L); igl++) - { - unk_L[wfcpw->getigl2ig(ik_L,igl)] = evc[0](ik_L, iband_L, igl); - } - - for (int igl = 0; igl < evc->get_ngk(ik_R); igl++) - { - unk_R[wfcpw->getigl2ig(ik_R,igl)] = evc[0](ik_R, iband_R, igl); - } - - - for (int iG = 0; iG < number_pw; iG++) - { - - result = result + conj(unk_L[iG]) * unk_R[iG]; - - } + std::complex result(0.0, 0.0); + const int number_pw = wfcpw->npw; + std::complex* unk_L = new std::complex[number_pw]; + std::complex* unk_R = new std::complex[number_pw]; + ModuleBase::GlobalFunc::ZEROS(unk_L, number_pw); + ModuleBase::GlobalFunc::ZEROS(unk_R, number_pw); + + for (int igl = 0; igl < evc->get_ngk(ik_L); igl++) + { + unk_L[wfcpw->getigl2ig(ik_L, igl)] = evc[0](ik_L, iband_L, igl); + } + + for (int igl = 0; igl < evc->get_ngk(ik_R); igl++) + { + unk_R[wfcpw->getigl2ig(ik_R, igl)] = evc[0](ik_R, iband_R, igl); + } + + for (int iG = 0; iG < number_pw; iG++) + { + + result = result + conj(unk_L[iG]) * unk_R[iG]; + } #ifdef __MPI // note: the mpi uses MPI_COMMON_WORLD,so you must make the GlobalV::KPAR = 1. - double in_date_real = result.real(); - double in_date_imag = result.imag(); - double out_date_real = 0.0; - double out_date_imag = 0.0; - MPI_Allreduce(&in_date_real , &out_date_real , 1, MPI_DOUBLE , MPI_SUM , POOL_WORLD); - MPI_Allreduce(&in_date_imag , &out_date_imag , 1, MPI_DOUBLE , MPI_SUM , POOL_WORLD); - result = std::complex(out_date_real,out_date_imag); + double in_date_real = result.real(); + double in_date_imag = result.imag(); + double out_date_real = 0.0; + double out_date_imag = 0.0; + MPI_Allreduce(&in_date_real, &out_date_real, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + MPI_Allreduce(&in_date_imag, &out_date_imag, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + result = std::complex(out_date_real, out_date_imag); #endif - delete[] unk_L; - delete[] unk_R; - return result; - - + delete[] unk_L; + delete[] unk_R; + return result; } std::complex unkOverlap_pw::unkdotp_G0(const ModulePW::PW_Basis* rhopw, @@ -75,24 +69,24 @@ std::complex unkOverlap_pw::unkdotp_G0(const ModulePW::PW_Basis* rhopw, const psi::Psi>* evc, const ModuleBase::Vector3 G) { - // (1) set value - std::complex result(0.0,0.0); + // (1) set value + std::complex result(0.0, 0.0); std::complex* psi_r = new std::complex[wfcpw->nmaxgr]; std::complex* phase = new std::complex[rhopw->nmaxgr]; // get the phase value in realspace for (int ig = 0; ig < rhopw->nmaxgr; ig++) { - ModuleBase::Vector3 delta_G = rhopw->gdirect[ig] - G; - if (delta_G.norm2() < 1e-10) // rhopw->gdirect[ig] == G - { - phase[ig] = std::complex(1.0,0.0); - break; - } - } - - // (2) fft and get value - rhopw->recip2real(phase, phase); + ModuleBase::Vector3 delta_G = rhopw->gdirect[ig] - G; + if (delta_G.norm2() < 1e-10) // rhopw->gdirect[ig] == G + { + phase[ig] = std::complex(1.0, 0.0); + break; + } + } + + // (2) fft and get value + 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++) @@ -110,17 +104,17 @@ std::complex unkOverlap_pw::unkdotp_G0(const ModulePW::PW_Basis* rhopw, #ifdef __MPI // note: the mpi uses MPI_COMMON_WORLD,so you must make the GlobalV::KPAR = 1. - double in_date_real = result.real(); - double in_date_imag = result.imag(); - double out_date_real = 0.0; - double out_date_imag = 0.0; - MPI_Allreduce(&in_date_real , &out_date_real , 1, MPI_DOUBLE , MPI_SUM , POOL_WORLD); - MPI_Allreduce(&in_date_imag , &out_date_imag , 1, MPI_DOUBLE , MPI_SUM , POOL_WORLD); - result = std::complex(out_date_real,out_date_imag); + double in_date_real = result.real(); + double in_date_imag = result.imag(); + double out_date_real = 0.0; + double out_date_imag = 0.0; + MPI_Allreduce(&in_date_real, &out_date_real, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + MPI_Allreduce(&in_date_imag, &out_date_imag, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + result = std::complex(out_date_real, out_date_imag); #endif - - delete[] psi_r; - delete[] phase; + + delete[] psi_r; + delete[] phase; return result; } @@ -133,18 +127,18 @@ std::complex unkOverlap_pw::unkdotp_soc_G(const ModulePW::PW_Basis_K* wf const int npwx, const psi::Psi>* evc) { - - std::complex result(0.0,0.0); + + std::complex result(0.0, 0.0); const int number_pw = wfcpw->npw; std::complex* unk_L = new std::complex[number_pw * PARAM.globalv.npol]; std::complex* unk_R = new std::complex[number_pw * PARAM.globalv.npol]; - ModuleBase::GlobalFunc::ZEROS(unk_L,number_pw*PARAM.globalv.npol); - ModuleBase::GlobalFunc::ZEROS(unk_R,number_pw*PARAM.globalv.npol); - - for(int i = 0; i < PARAM.globalv.npol; i++) - { - for (int igl = 0; igl < evc->get_ngk(ik_L); igl++) - { + ModuleBase::GlobalFunc::ZEROS(unk_L, number_pw * PARAM.globalv.npol); + ModuleBase::GlobalFunc::ZEROS(unk_R, number_pw * PARAM.globalv.npol); + + for (int i = 0; i < PARAM.globalv.npol; i++) + { + for (int igl = 0; igl < evc->get_ngk(ik_L); igl++) + { unk_L[wfcpw->getigl2ig(ik_L, igl) + i * number_pw] = evc[0](ik_L, iband_L, igl + i * npwx); } @@ -154,32 +148,29 @@ std::complex unkOverlap_pw::unkdotp_soc_G(const ModulePW::PW_Basis_K* wf } } - for (int iG = 0; iG < number_pw*PARAM.globalv.npol; iG++) - { + for (int iG = 0; iG < number_pw * PARAM.globalv.npol; iG++) + { - result = result + conj(unk_L[iG]) * unk_R[iG]; + result = result + conj(unk_L[iG]) * unk_R[iG]; + } - } - #ifdef __MPI // note: the mpi uses MPI_COMMON_WORLD,so you must make the GlobalV::KPAR = 1. - double in_date_real = result.real(); - double in_date_imag = result.imag(); - double out_date_real = 0.0; - double out_date_imag = 0.0; - MPI_Allreduce(&in_date_real , &out_date_real , 1, MPI_DOUBLE , MPI_SUM , POOL_WORLD); - MPI_Allreduce(&in_date_imag , &out_date_imag , 1, MPI_DOUBLE , MPI_SUM , POOL_WORLD); - result = std::complex(out_date_real,out_date_imag); + double in_date_real = result.real(); + double in_date_imag = result.imag(); + double out_date_real = 0.0; + double out_date_imag = 0.0; + MPI_Allreduce(&in_date_real, &out_date_real, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + MPI_Allreduce(&in_date_imag, &out_date_imag, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + result = std::complex(out_date_real, out_date_imag); #endif - delete[] unk_L; - delete[] unk_R; - return result; - - + delete[] unk_L; + delete[] unk_R; + return result; } -//here G is in direct coordinate +// here G is in direct coordinate std::complex unkOverlap_pw::unkdotp_soc_G0(const ModulePW::PW_Basis* rhopw, const ModulePW::PW_Basis_K* wfcpw, const int ik_L, @@ -189,32 +180,32 @@ std::complex unkOverlap_pw::unkdotp_soc_G0(const ModulePW::PW_Basis* rho const psi::Psi>* evc, const ModuleBase::Vector3 G) { - // (1) set value - std::complex result(0.0,0.0); - std::complex *phase =new std::complex[rhopw->nmaxgr]; + // (1) set value + std::complex result(0.0, 0.0); + std::complex* phase = new std::complex[rhopw->nmaxgr]; std::complex* psi_up = new std::complex[wfcpw->nmaxgr]; std::complex* psi_down = new std::complex[wfcpw->nmaxgr]; const int npwx = wfcpw->npwk_max; // get the phase value in realspace for (int ig = 0; ig < rhopw->npw; ig++) - { - if (rhopw->gdirect[ig] == G) - { - phase[ig] = std::complex(1.0,0.0); - break; - } - } - - // (2) fft and get value - rhopw->recip2real(phase, phase); + { + if (rhopw->gdirect[ig] == G) + { + phase[ig] = std::complex(1.0, 0.0); + break; + } + } + + // (2) fft and get value + rhopw->recip2real(phase, phase); wfcpw->recip2real(&evc[0](ik_L, iband_L, 0), psi_up, ik_L); wfcpw->recip2real(&evc[0](ik_L, iband_L, npwx), psi_down, ik_L); for (int ir = 0; ir < wfcpw->nrxx; ir++) { psi_up[ir] = psi_up[ir] * phase[ir]; - psi_down[ir] = psi_down[ir] * phase[ir]; + psi_down[ir] = psi_down[ir] * phase[ir]; } // (3) calculate the overlap in ik_L and ik_R @@ -223,27 +214,31 @@ std::complex unkOverlap_pw::unkdotp_soc_G0(const ModulePW::PW_Basis* rho for (int i = 0; i < PARAM.globalv.npol; i++) { - for(int ig = 0; ig < evc->get_ngk(ik_R); ig++) - { - if( i == 0 ) { result = result + conj( psi_up[ig] ) * evc[0](ik_R, iband_R, ig); -} - if( i == 1 ) { result = result + conj( psi_down[ig] ) * evc[0](ik_R, iband_R, ig + npwx); -} - } - } - + for (int ig = 0; ig < evc->get_ngk(ik_R); ig++) + { + if (i == 0) + { + result = result + conj(psi_up[ig]) * evc[0](ik_R, iband_R, ig); + } + if (i == 1) + { + result = result + conj(psi_down[ig]) * evc[0](ik_R, iband_R, ig + npwx); + } + } + } + #ifdef __MPI // note: the mpi uses MPI_COMMON_WORLD,so you must make the GlobalV::KPAR = 1. - double in_date_real = result.real(); - double in_date_imag = result.imag(); - double out_date_real = 0.0; - double out_date_imag = 0.0; - MPI_Allreduce(&in_date_real , &out_date_real , 1, MPI_DOUBLE , MPI_SUM , POOL_WORLD); - MPI_Allreduce(&in_date_imag , &out_date_imag , 1, MPI_DOUBLE , MPI_SUM , POOL_WORLD); - result = std::complex(out_date_real,out_date_imag); + double in_date_real = result.real(); + double in_date_imag = result.imag(); + double out_date_real = 0.0; + double out_date_imag = 0.0; + MPI_Allreduce(&in_date_real, &out_date_real, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + MPI_Allreduce(&in_date_imag, &out_date_imag, 1, MPI_DOUBLE, MPI_SUM, POOL_WORLD); + result = std::complex(out_date_real, out_date_imag); #endif - - delete[] psi_up; - delete[] psi_down; + + delete[] psi_up; + delete[] psi_down; return result; } diff --git a/source/module_io/write_dos_lcao.cpp b/source/module_io/write_dos_lcao.cpp index e475c77459..015c5bc1c1 100644 --- a/source/module_io/write_dos_lcao.cpp +++ b/source/module_io/write_dos_lcao.cpp @@ -461,11 +461,17 @@ void ModuleIO::write_dos_lcao(const UnitCell& ucell, } psi->fix_k(ik); - psi::Psi> Dwfc(psi[0], 1); + + psi::Psi> Dwfc(1, + psi->get_nbands(), + psi->get_nbasis(), + psi->get_nbasis(), + true); + std::complex* p_dwfc = Dwfc.get_pointer(); for (int index = 0; index < Dwfc.size(); ++index) { - p_dwfc[index] = conj(p_dwfc[index]); + p_dwfc[index] = conj(psi->get_pointer()[index]); } for (int i = 0; i < PARAM.inp.nbands; ++i) diff --git a/source/module_io/write_proj_band_lcao.cpp b/source/module_io/write_proj_band_lcao.cpp index ccd7a0d4b0..47d4907b5b 100644 --- a/source/module_io/write_proj_band_lcao.cpp +++ b/source/module_io/write_proj_band_lcao.cpp @@ -25,8 +25,9 @@ void ModuleIO::write_proj_band_lcao( const double* sk = dynamic_cast*>(p_ham)->getSk(); int nspin0 = 1; - if (PARAM.inp.nspin == 2) + if (PARAM.inp.nspin == 2) { nspin0 = 2; +} int nks = 0; if (nspin0 == 1) { @@ -103,14 +104,16 @@ void ModuleIO::write_proj_band_lcao( out << "" << std::endl; out << "" << PARAM.inp.nspin << "" << std::endl; - if (PARAM.inp.nspin == 4) + if (PARAM.inp.nspin == 4) { out << "" << std::setw(2) << PARAM.globalv.nlocal / 2 << "" << std::endl; - else + } else { out << "" << std::setw(2) << PARAM.globalv.nlocal << "" << std::endl; +} out << "" << std::endl; - for (int ib = 0; ib < PARAM.inp.nbands; ib++) + for (int ib = 0; ib < PARAM.inp.nbands; ib++) { out << " " << (pelec->ekb(is * nks, ib)) * ModuleBase::Ry_to_eV; +} out << std::endl; out << "" << std::endl; @@ -139,9 +142,9 @@ void ModuleIO::write_proj_band_lcao( out << "" << std::endl; for (int ib = 0; ib < PARAM.inp.nbands; ib++) { - if (PARAM.inp.nspin == 1 || PARAM.inp.nspin == 2) + if (PARAM.inp.nspin == 1 || PARAM.inp.nspin == 2) { out << std::setw(13) << weight(is, ib * PARAM.globalv.nlocal + w); - else if (PARAM.inp.nspin == 4) + } else if (PARAM.inp.nspin == 4) { int w0 = w - s0; out << std::setw(13) @@ -178,8 +181,9 @@ void ModuleIO::write_proj_band_lcao( ModuleBase::timer::tick("ModuleIO", "write_proj_band_lcao"); int nspin0 = 1; - if (PARAM.inp.nspin == 2) + if (PARAM.inp.nspin == 2) { nspin0 = 2; +} int nks = 0; if (nspin0 == 1) { @@ -221,11 +225,16 @@ void ModuleIO::write_proj_band_lcao( // calculate Mulk psi->fix_k(ik); - psi::Psi> Dwfc(psi[0], 1); + psi::Psi> Dwfc(1, + psi->get_nbands(), + psi->get_nbasis(), + psi->get_nbasis(), + true); + std::complex* p_dwfc = Dwfc.get_pointer(); for (int index = 0; index < Dwfc.size(); ++index) { - p_dwfc[index] = conj(p_dwfc[index]); + p_dwfc[index] = conj(psi->get_pointer()[index]); } for (int i = 0; i < PARAM.inp.nbands; ++i) @@ -301,8 +310,9 @@ void ModuleIO::write_proj_band_lcao( for (int ik = 0; ik < nks; ik++) { - for (int ib = 0; ib < PARAM.inp.nbands; ib++) + for (int ib = 0; ib < PARAM.inp.nbands; ib++) { out << " " << (pelec->ekb(ik + is * nks, ib)) * ModuleBase::Ry_to_eV; +} out << std::endl; } out << "" << std::endl; diff --git a/source/module_io/write_vxc_lip.hpp b/source/module_io/write_vxc_lip.hpp index 205fdbb057..d57c8f2ccd 100644 --- a/source/module_io/write_vxc_lip.hpp +++ b/source/module_io/write_vxc_lip.hpp @@ -59,24 +59,27 @@ namespace ModuleIO assert(nbands >= 0); #endif std::vector e(nbands, 0.0); - for (int i = 0; i < nbands; ++i) + for (int i = 0; i < nbands; ++i) { e[i] = get_real(mat_mo[i * nbands + i]); +} return e; } template FPTYPE all_band_energy(const int ik, const int nbands, const std::vector>& mat_mo, const ModuleBase::matrix& wg) { FPTYPE e = 0.0; - for (int i = 0; i < nbands; ++i) + for (int i = 0; i < nbands; ++i) { e += get_real(mat_mo[i * nbands + i]) * (FPTYPE)wg(ik, i); +} return e; } template FPTYPE all_band_energy(const int ik, const std::vector& orbital_energy, const ModuleBase::matrix& wg) { FPTYPE e = 0.0; - for (int i = 0; i < orbital_energy.size(); ++i) + for (int i = 0; i < orbital_energy.size(); ++i) { e += orbital_energy[i] * (FPTYPE)wg(ik, i); +} return e; } @@ -122,7 +125,7 @@ namespace ModuleIO // const ModuleBase::matrix vr_localxc = potxc->get_veff_smooth(); // 2. allocate xc operator - psi::Psi hpsi_localxc(psi_pw.get_nk(), psi_pw.get_nbands(), psi_pw.get_nbasis(), psi_pw.get_ngk_pointer()); + psi::Psi hpsi_localxc(psi_pw.get_nk(), psi_pw.get_nbands(), psi_pw.get_nbasis(), kv.ngk, true); hpsi_localxc.zero_out(); // std::cout << "hpsi.nk=" << hpsi_localxc.get_nk() << std::endl; // std::cout << "hpsi.nbands=" << hpsi_localxc.get_nbands() << std::endl; @@ -170,9 +173,11 @@ namespace ModuleIO #if((defined __LCAO)&&(defined __EXX) && !(defined __CUDA)&& !(defined __ROCM)) if (GlobalC::exx_info.info_global.cal_exx) { - for (int n = 0; n < naos; ++n) - for (int m = 0; m < naos; ++m) + for (int n = 0; n < naos; ++n) { + for (int m = 0; m < naos; ++m) { vexx_k_ao[n * naos + m] += (T)GlobalC::exx_info.info_global.hybrid_alpha * exx_lip.get_exx_matrix()[ik][m][n]; +} +} std::vector vexx_k_mo = cVc(vexx_k_ao.data(), &(exx_lip.get_hvec()(ik, 0, 0)), naos, nbands); Parallel_Reduce::reduce_pool(vexx_k_mo.data(), nbands * nbands); e_orb_exx.emplace_back(orbital_energy(ik, nbands, vexx_k_mo)); diff --git a/source/module_lr/AX/test/AX_test.cpp b/source/module_lr/AX/test/AX_test.cpp index b137f78ea0..697c71bc7e 100644 --- a/source/module_lr/AX/test/AX_test.cpp +++ b/source/module_lr/AX/test/AX_test.cpp @@ -70,7 +70,8 @@ TEST_F(AXTest, DoubleSerial) int size_v = s.naos * s.naos; for (int istate = 0;istate < nstate;++istate) { - psi::Psi c(s.nks, s.nocc + s.nvirt, s.naos); + std::vector temp(s.nks, s.naos); + psi::Psi c(s.nks, s.nocc + s.nvirt, s.naos, temp.data(), true); std::vector V(s.nks, container::Tensor(DAT::DT_DOUBLE, DEV::CpuDevice, { s.naos, s.naos })); set_rand(&c(0, 0, 0), size_c); for (auto& v : V) { set_rand(v.data(), size_v); } @@ -91,7 +92,8 @@ TEST_F(AXTest, ComplexSerial) int size_v = s.naos * s.naos; for (int istate = 0;istate < nstate;++istate) { - psi::Psi> c(s.nks, s.nocc + s.nvirt, s.naos); + std::vector temp(s.nks, s.naos); + psi::Psi> c(s.nks, s.nocc + s.nvirt, s.naos, temp.data(), true); std::vector V(s.nks, container::Tensor(DAT::DT_COMPLEX_DOUBLE, DEV::CpuDevice, { s.naos, s.naos })); set_rand(&c(0, 0, 0), size_c); for (auto& v : V) { set_rand(v.data>(), size_v); } @@ -113,7 +115,9 @@ TEST_F(AXTest, DoubleParallel) std::vector V(s.nks, container::Tensor(DAT::DT_DOUBLE, DEV::CpuDevice, { pV.get_col_size(), pV.get_row_size() })); Parallel_2D pc; LR_Util::setup_2d_division(pc, s.nb, s.naos, s.nocc + s.nvirt, pV.blacs_ctxt); - psi::Psi c(s.nks, pc.get_col_size(), pc.get_row_size()); + + std::vector ngk_temp(s.nks, pc.get_row_size()); + psi::Psi c(s.nks, pc.get_col_size(), pc.get_row_size(), ngk_temp.data(), true); Parallel_2D px; LR_Util::setup_2d_division(px, s.nb, s.nvirt, s.nocc, pV.blacs_ctxt); @@ -139,7 +143,9 @@ TEST_F(AXTest, DoubleParallel) } // compare to global AX std::vector V_full(s.nks, container::Tensor(DAT::DT_DOUBLE, DEV::CpuDevice, { s.naos, s.naos })); - psi::Psi c_full(s.nks, s.nocc + s.nvirt, s.naos); + + std::vector ngk_temp_1(s.nks, s.naos); + psi::Psi c_full(s.nks, s.nocc + s.nvirt, s.naos, ngk_temp_1.data(), true); for (int isk = 0;isk < s.nks;++isk) { LR_Util::gather_2d_to_full(pV, V.at(isk).data(), V_full.at(isk).data(), false, s.naos, s.naos); @@ -165,7 +171,9 @@ TEST_F(AXTest, ComplexParallel) std::vector V(s.nks, container::Tensor(DAT::DT_COMPLEX_DOUBLE, DEV::CpuDevice, { pV.get_col_size(), pV.get_row_size() })); Parallel_2D pc; LR_Util::setup_2d_division(pc, s.nb, s.naos, s.nocc + s.nvirt, pV.blacs_ctxt); - psi::Psi> c(s.nks, pc.get_col_size(), pc.get_row_size()); + + std::vector ngk_temp_1(s.nks, pc.get_row_size()); + psi::Psi> c(s.nks, pc.get_col_size(), pc.get_row_size(), ngk_temp_1.data(), true); Parallel_2D px; LR_Util::setup_2d_division(px, s.nb, s.nvirt, s.nocc, pV.blacs_ctxt); @@ -187,7 +195,10 @@ TEST_F(AXTest, ComplexParallel) } // compare to global AX std::vector V_full(s.nks, container::Tensor(DAT::DT_COMPLEX_DOUBLE, DEV::CpuDevice, { s.naos, s.naos })); - psi::Psi> c_full(s.nks, s.nocc + s.nvirt, s.naos); + + + std::vector ngk_temp_2(s.nks, s.naos); + psi::Psi> c_full(s.nks, s.nocc + s.nvirt, s.naos, ngk_temp_2.data(), true); for (int isk = 0;isk < s.nks;++isk) { LR_Util::gather_2d_to_full(pV, V.at(isk).data>(), V_full.at(isk).data>(), false, s.naos, s.naos); diff --git a/source/module_lr/dm_trans/test/dm_trans_test.cpp b/source/module_lr/dm_trans/test/dm_trans_test.cpp index b78bbb50bc..06e412155f 100644 --- a/source/module_lr/dm_trans/test/dm_trans_test.cpp +++ b/source/module_lr/dm_trans/test/dm_trans_test.cpp @@ -66,7 +66,9 @@ TEST_F(DMTransTest, DoubleSerial) for (int istate = 0;istate < nstate;++istate) { int size_c = s.nks * (s.nocc + s.nvirt) * s.naos; - psi::Psi c(s.nks, s.nocc + s.nvirt, s.naos); + + std::vector temp(s.nks, s.naos); + psi::Psi c(s.nks, s.nocc + s.nvirt, s.naos, temp.data(), true); set_rand(c.get_pointer(), size_c); X.fix_b(istate); const std::vector& dm_for = LR::cal_dm_trans_forloop_serial(X.get_pointer(), c, s.nocc, s.nvirt); @@ -85,7 +87,9 @@ TEST_F(DMTransTest, ComplexSerial) for (int istate = 0;istate < nstate;++istate) { int size_c = s.nks * (s.nocc + s.nvirt) * s.naos; - psi::Psi> c(s.nks, s.nocc + s.nvirt, s.naos); + + std::vector temp(s.nks, s.naos); + psi::Psi> c(s.nks, s.nocc + s.nvirt, s.naos, temp.data(), true); set_rand(c.get_pointer(), size_c); X.fix_b(istate); const std::vector& dm_for = LR::cal_dm_trans_forloop_serial(X.get_pointer(), c, s.nocc, s.nvirt); @@ -105,10 +109,14 @@ TEST_F(DMTransTest, DoubleParallel) // X: nvirt*nocc in para2d, nocc*nvirt in psi (row-para and constructed: nvirt) Parallel_2D px; LR_Util::setup_2d_division(px, s.nb, s.nvirt, s.nocc); - psi::Psi X(s.nks, nstate, px.get_local_size(), nullptr, false); + + std::vector temp_1(s.nks, px.get_local_size()); + psi::Psi X(s.nks, nstate, px.get_local_size(), temp_1.data(), false); Parallel_2D pc; LR_Util::setup_2d_division(pc, s.nb, s.naos, s.nocc + s.nvirt, px.blacs_ctxt); - psi::Psi c(s.nks, pc.get_col_size(), pc.get_row_size()); + + std::vector temp_2(s.nks, pc.get_row_size()); + psi::Psi c(s.nks, pc.get_col_size(), pc.get_row_size(), temp_2.data(), true); Parallel_2D pmat; LR_Util::setup_2d_division(pmat, s.nb, s.naos, s.naos, px.blacs_ctxt); @@ -147,7 +155,8 @@ TEST_F(DMTransTest, DoubleParallel) LR_Util::gather_2d_to_full(pmat, dm_pblas_loc[isk].data(), dm_gather[isk].data(), false, s.naos, s.naos); // compare to global matrix - psi::Psi c_full(s.nks, s.nocc + s.nvirt, s.naos); + std::vector temp(s.nks, s.naos); + psi::Psi c_full(s.nks, s.nocc + s.nvirt, s.naos, temp.data(), true); for (int isk = 0;isk < s.nks;++isk) { c.fix_k(isk); @@ -173,7 +182,9 @@ TEST_F(DMTransTest, ComplexParallel) psi::Psi> X(s.nks, nstate, px.get_local_size(), nullptr, false); Parallel_2D pc; LR_Util::setup_2d_division(pc, s.nb, s.naos, s.nocc + s.nvirt, px.blacs_ctxt); - psi::Psi> c(s.nks, pc.get_col_size(), pc.get_row_size()); + + std::vector temp(s.nks, pc.get_row_size()); + psi::Psi> c(s.nks, pc.get_col_size(), pc.get_row_size(), temp.data(), true); Parallel_2D pmat; LR_Util::setup_2d_division(pmat, s.nb, s.naos, s.naos, px.blacs_ctxt); @@ -206,7 +217,8 @@ TEST_F(DMTransTest, ComplexParallel) LR_Util::gather_2d_to_full(pmat, dm_pblas_loc[isk].data>(), dm_gather[isk].data>(), false, s.naos, s.naos); // compare to global matrix - psi::Psi> c_full(s.nks, s.nocc + s.nvirt, s.naos); + std::vector ngk_temp_2(s.nks, s.naos); + psi::Psi> c_full(s.nks, s.nocc + s.nvirt, s.naos, ngk_temp_2.data(), true); for (int isk = 0;isk < s.nks;++isk) { c.fix_k(isk); diff --git a/source/module_lr/esolver_lrtd_lcao.cpp b/source/module_lr/esolver_lrtd_lcao.cpp index 97842897b9..5fdbca8f94 100644 --- a/source/module_lr/esolver_lrtd_lcao.cpp +++ b/source/module_lr/esolver_lrtd_lcao.cpp @@ -195,7 +195,11 @@ LR::ESolver_LR::ESolver_LR(ModuleESolver::ESolver_KS_LCAO&& ks_sol if (this->nbands == PARAM.inp.nbands) { move_gs(); } else // copy the part of ground state info according to paraC_ { - this->psi_ks = new psi::Psi(this->kv.get_nks(), this->paraC_.get_col_size(), this->paraC_.get_row_size()); + this->psi_ks = new psi::Psi(this->kv.get_nks(), + this->paraC_.get_col_size(), + this->paraC_.get_row_size(), + this->kv.ngk, + true); this->eig_ks.create(this->kv.get_nks(), this->nbands); const int start_band = this->nocc_max - *std::max_element(nocc.begin(), nocc.end()); for (int ik = 0;ik < this->kv.get_nks();++ik) @@ -309,8 +313,10 @@ LR::ESolver_LR::ESolver_LR(const Input_para& inp, UnitCell& ucell) : inpu // now ModuleIO::read_wfc_nao needs `Parallel_Orbitals` and can only read all the bands // it need improvement to read only the bands needed this->psi_ks = new psi::Psi(this->kv.get_nks(), - this->paraMat_.ncol_bands, - this->paraMat_.get_row_size()); + this->paraMat_.ncol_bands, + this->paraMat_.get_row_size(), + this->kv.ngk, + true); this->read_ks_wfc(); if (nspin == 2) { diff --git a/source/module_lr/hamilt_casida.cpp b/source/module_lr/hamilt_casida.cpp index a29429d5be..5d7958295b 100644 --- a/source/module_lr/hamilt_casida.cpp +++ b/source/module_lr/hamilt_casida.cpp @@ -12,19 +12,23 @@ namespace LR const int ldim = nk * px.get_local_size(); int npairs = no * nv; std::vector Amat_full(this->nk * npairs * this->nk * npairs, 0.0); - for (int ik = 0;ik < this->nk;++ik) - for (int j = 0;j < no;++j) + for (int ik = 0;ik < this->nk;++ik) { + for (int j = 0;j < no;++j) { for (int b = 0;b < nv;++b) {//calculate A^{ai} for each bj int bj = j * nv + b; //global int kbj = ik * npairs + bj; //global - psi::Psi X_bj(1, 1, this->nk * px.get_local_size()); // k1-first, like in iterative solver + psi::Psi X_bj(1, 1, this->nk * px.get_local_size(), this->nk * px.get_local_size(), true); // k1-first, like in iterative solver X_bj.zero_out(); // X_bj(0, 0, lj * px.get_row_size() + lb) = this->one(); int lj = px.global2local_col(j); int lb = px.global2local_row(b); if (px.in_this_processor(b, j)) { X_bj(0, 0, ik * px.get_local_size() + lj * px.get_row_size() + lb) = this->one(); } - psi::Psi A_aibj(1, 1, this->nk * px.get_local_size()); // k1-first + psi::Psi A_aibj(1, + 1, + this->nk * px.get_local_size(), + this->nk * px.get_local_size(), + true); // k1-first A_aibj.zero_out(); this->cal_dm_trans(0, X_bj.get_pointer()); @@ -37,12 +41,15 @@ namespace LR // reduce ai for a fixed bj A_aibj.fix_kb(0, 0); #ifdef __MPI - for (int ik_ai = 0;ik_ai < this->nk;++ik_ai) + for (int ik_ai = 0;ik_ai < this->nk;++ik_ai) { LR_Util::gather_2d_to_full(px, &A_aibj.get_pointer()[ik_ai * px.get_local_size()], Amat_full.data() + kbj * this->nk * npairs /*col, bj*/ + ik_ai * npairs/*row, ai*/, false, nv, no); +} #endif } +} +} // output Amat std::cout << "Full A matrix: (elements < 1e-10 is set to 0)" << std::endl; LR_Util::print_value(Amat_full.data(), nk * npairs, nk * npairs); diff --git a/source/module_lr/ri_benchmark/test/ri_benchmark_test.cpp b/source/module_lr/ri_benchmark/test/ri_benchmark_test.cpp index 71b4fdcbd7..7ae95a8918 100644 --- a/source/module_lr/ri_benchmark/test/ri_benchmark_test.cpp +++ b/source/module_lr/ri_benchmark/test/ri_benchmark_test.cpp @@ -23,7 +23,7 @@ UnitCell::~UnitCell() { TEST(RI_Benchmark, SlicePsi) { const int nk = 1, nbands = 2, nbasis = 3; - psi::Psi psi(nk, nbands, nbasis); + psi::Psi psi(nk, nbands, nbasis, nbasis, true); for (int i = 0; i < nk * nbands * nbasis; i++) { psi.get_pointer()[i] = i; } @@ -50,7 +50,7 @@ TEST(RI_Benchmark, CalCsMO) for (int i = 0;i < nabf * nao * nao;++i) { Cs_ao[0][{0, { 0, 0, 0 }}].ptr()[i] = static_cast(i); } const UnitCell ucell; - psi::Psi psi_ks(1, 2, 2); + psi::Psi psi_ks(1, 2, 2, 2, true); for (int i = 0;i < 4;++i) { psi_ks.get_pointer()[i] = static_cast(i); } RI_Benchmark::TLRI Cs_a_mo = RI_Benchmark::cal_Cs_mo(ucell, Cs_ao, psi_ks, nocc, nvirt, false); std::vector Cs_a_mo_ref = { 11,31 }; diff --git a/source/module_lr/utils/lr_util.hpp b/source/module_lr/utils/lr_util.hpp index 8fdc1b9b96..5bbedf645f 100644 --- a/source/module_lr/utils/lr_util.hpp +++ b/source/module_lr/utils/lr_util.hpp @@ -99,7 +99,11 @@ namespace LR_Util template psi::Psi get_psi_spin(const psi::Psi& psi_in, const int& is, const int& nk) { - return psi::Psi(&psi_in(is * nk, 0, 0), psi_in, nk, psi_in.get_nbands()); + return psi::Psi(&psi_in(is * nk, 0, 0), + nk, + psi_in.get_nbands(), + psi_in.get_nbasis(), + true); } /// psi(nk=1, nbands=nb, nk * nbasis) -> psi(nb, nk, nbasis) without memory copy @@ -111,7 +115,12 @@ namespace LR_Util int ib_now = psi_kfirst.get_current_b(); psi_kfirst.fix_b(0); // for get_pointer() to get the head pointer - psi::Psi psi_bfirst(psi_kfirst.get_pointer(), nk_in, psi_kfirst.get_nbands(), nbasis_in, false); + psi::Psi psi_bfirst(psi_kfirst.get_pointer(), + nk_in, + psi_kfirst.get_nbands(), + nbasis_in, + nbasis_in, + false); psi_kfirst.fix_b(ib_now); return psi_bfirst; } @@ -124,7 +133,12 @@ namespace LR_Util int ik_now = psi_bfirst.get_current_k(); psi_bfirst.fix_kb(0, 0); // for get_pointer() to get the head pointer - psi::Psi psi_kfirst(psi_bfirst.get_pointer(), 1, psi_bfirst.get_nbands(), psi_bfirst.get_nk() * psi_bfirst.get_nbasis(), true); + psi::Psi psi_kfirst(psi_bfirst.get_pointer(), + 1, + psi_bfirst.get_nbands(), + psi_bfirst.get_nk() * psi_bfirst.get_nbasis(), + psi_bfirst.get_nk() * psi_bfirst.get_nbasis(), + true); psi_bfirst.fix_kb(ik_now, ib_now); return psi_kfirst; } diff --git a/source/module_lr/utils/test/lr_util_algorithms_test.cpp b/source/module_lr/utils/test/lr_util_algorithms_test.cpp index f33105d32b..3318e526cb 100644 --- a/source/module_lr/utils/test/lr_util_algorithms_test.cpp +++ b/source/module_lr/utils/test/lr_util_algorithms_test.cpp @@ -9,7 +9,7 @@ TEST(LR_Util, PsiWrapper) int nbands = 5; int nbasis = 6; - psi::Psi k1(1, nbands, nk * nbasis); + psi::Psi k1(1, nbands, nk * nbasis, nk * nbasis, true); for (int i = 0;i < nbands * nk * nbasis;++i)k1.get_pointer()[i] = i; k1.fix_b(2); diff --git a/source/module_psi/psi.cpp b/source/module_psi/psi.cpp index fb8abc78cd..7942b412c9 100644 --- a/source/module_psi/psi.cpp +++ b/source/module_psi/psi.cpp @@ -28,11 +28,11 @@ Range::Range(const bool k_first_in, const size_t index_1_in, const size_t range_ range_2 = range_2_in; } +// Constructor 0: basic template Psi::Psi() { this->npol = PARAM.globalv.npol; - this->device = base_device::get_device_type(this->ctx); } template @@ -44,16 +44,32 @@ Psi::~Psi() } } +// Constructor 1-1: template Psi::Psi(const int nk_in, const int nbd_in, const int nbs_in, const int* ngk_in, const bool k_first_in) { + assert(nk_in > 0); + assert(nbd_in >= 0); // 187_PW_SDFT_ALL_GPU && 187_PW_MD_SDFT_ALL_GPU + assert(nbs_in > 0); + this->k_first = k_first_in; - this->ngk = ngk_in; + this->npol = PARAM.globalv.npol; + this->allocate_inside = true; + + this->ngk = ngk_in; // modify later + // This function will delete the psi array first(if psi exist), then malloc a new memory for it. + resize_memory_op()(this->ctx, this->psi, nk_in * static_cast(nbd_in) * nbs_in, "no_record"); + + this->nk = nk_in; + this->nbands = nbd_in; + this->nbasis = nbs_in; + this->current_b = 0; this->current_k = 0; - this->npol = PARAM.globalv.npol; - this->device = base_device::get_device_type(this->ctx); - this->resize(nk_in, nbd_in, nbs_in); + this->current_nbasis = nbs_in; + this->psi_current = this->psi; + this->psi_bias = 0; + // Currently only GPU's implementation is supported for device recording! base_device::information::print_device_info(this->ctx, GlobalV::ofs_device); base_device::information::record_device_memory(this->ctx, @@ -62,102 +78,119 @@ Psi::Psi(const int nk_in, const int nbd_in, const int nbs_in, const i sizeof(T) * nk_in * nbd_in * nbs_in); } -// Constructor 8-1: +// Constructor 1-2: template -Psi::Psi(T* psi_pointer, - const int nk_in, +Psi::Psi(const int nk_in, const int nbd_in, const int nbs_in, - const std::vector& ngk_vector_in, + const std::vector& ngk_in, const bool k_first_in) { + assert(nk_in > 0); + assert(nbd_in > 0); + assert(nbs_in > 0); + this->k_first = k_first_in; - this->ngk = ngk_vector_in.data(); - this->current_b = 0; - this->current_k = 0; this->npol = PARAM.globalv.npol; - this->device = base_device::get_device_type(this->ctx); + this->allocate_inside = true; + + this->ngk = ngk_in.data(); // modify later + // This function will delete the psi array first(if psi exist), then malloc a new memory for it. + resize_memory_op()(this->ctx, this->psi, nk_in * static_cast(nbd_in) * nbs_in, "no_record"); + this->nk = nk_in; this->nbands = nbd_in; this->nbasis = nbs_in; + + this->current_b = 0; + this->current_k = 0; this->current_nbasis = nbs_in; - this->psi_current = this->psi = psi_pointer; - this->allocate_inside = false; + this->psi_current = this->psi; + this->psi_bias = 0; + // Currently only GPU's implementation is supported for device recording! base_device::information::print_device_info(this->ctx, GlobalV::ofs_device); + base_device::information::record_device_memory(this->ctx, + GlobalV::ofs_device, + "Psi->resize()", + sizeof(T) * nk_in * nbd_in * nbs_in); } -// Constructor 8-2: +// Constructor 3-1: 2D Psi version template -Psi::Psi(T* psi_pointer, const int nk_in, const int nbd_in, const int nbs_in, const bool k_first_in) +Psi::Psi(T* psi_pointer, + const int nk_in, + const int nbd_in, + const int nbs_in, + const int current_nbasis_in, + const bool k_first_in) { + // Currently this function only supports nk_in == 1 when called within diagH_subspace_init. + // assert(nk_in == 1); // NOTE because lr/utils/lr_uril.hpp func & get_psi_spin func + this->k_first = k_first_in; - this->ngk = nullptr; - this->current_b = 0; - this->current_k = 0; this->npol = PARAM.globalv.npol; - this->device = base_device::get_device_type(this->ctx); + this->allocate_inside = false; + + this->ngk = nullptr; + this->psi = psi_pointer; + this->nk = nk_in; this->nbands = nbd_in; this->nbasis = nbs_in; - this->current_nbasis = nbs_in; - this->psi_current = this->psi = psi_pointer; - this->allocate_inside = false; + + this->current_k = 0; + this->current_b = 0; + this->current_nbasis = current_nbasis_in; + this->psi_current = psi_pointer; + this->psi_bias = 0; + // Currently only GPU's implementation is supported for device recording! base_device::information::print_device_info(this->ctx, GlobalV::ofs_device); } +// Constructor 3-2: 2D Psi version template -Psi::Psi(const Psi& psi_in, const int nk_in, int nband_in) +Psi::Psi(const int nk_in, + const int nbd_in, + const int nbs_in, + const int current_nbasis_in, + const bool k_first_in) { - assert(nk_in <= psi_in.get_nk()); - if (nband_in == 0) - { - nband_in = psi_in.get_nbands(); - } - this->k_first = psi_in.get_k_first(); - this->device = psi_in.device; - this->resize(nk_in, nband_in, psi_in.get_nbasis()); - this->ngk = psi_in.ngk; - this->npol = psi_in.npol; - if (nband_in <= psi_in.get_nbands()) - { - // copy from Psi from psi_in(current_k, 0, 0), - // if size of k is 1, current_k in new Psi is psi_in.current_k - if (nk_in == 1) - { - // current_k for this Psi only keep the spin index same as the copied Psi - this->current_k = psi_in.get_current_k(); - } - synchronize_memory_op()(this->ctx, psi_in.get_device(), this->psi, psi_in.get_pointer(), this->size()); - } -} + // Currently this function only supports nk_in == 1 when called within diagH_subspace_init. + assert(nk_in == 1); + + this->k_first = k_first_in; + this->npol = PARAM.globalv.npol; + this->allocate_inside = true; + + this->ngk = nullptr; + assert(nk_in > 0 && nbd_in >= 0 && nbs_in > 0); + resize_memory_op()(this->ctx, this->psi, nk_in * static_cast(nbd_in) * nbs_in, "no_record"); -template -Psi::Psi(T* psi_pointer, const Psi& psi_in, const int nk_in, int nband_in) -{ - this->k_first = psi_in.get_k_first(); - this->device = base_device::get_device_type(this->ctx); - assert(this->device == psi_in.device); - assert(nk_in <= psi_in.get_nk()); - if (nband_in == 0) - { - nband_in = psi_in.get_nbands(); - } - this->ngk = psi_in.ngk; - this->npol = psi_in.npol; this->nk = nk_in; - this->nbands = nband_in; - this->nbasis = psi_in.nbasis; - this->psi_current = psi_pointer; - this->allocate_inside = false; - this->psi = psi_pointer; + this->nbands = nbd_in; + this->nbasis = nbs_in; + + this->current_k = 0; + this->current_b = 0; + this->current_nbasis = current_nbasis_in; + this->psi_current = this->psi; + this->psi_bias = 0; + + // Currently only GPU's implementation is supported for device recording! + base_device::information::print_device_info(this->ctx, GlobalV::ofs_device); + base_device::information::record_device_memory(this->ctx, + GlobalV::ofs_device, + "Psi->resize()", + sizeof(T) * nk_in * nbd_in * nbs_in); } +// Constructor 2-1: template Psi::Psi(const Psi& psi_in) { - this->ngk = psi_in.get_ngk_pointer(); + this->ngk = psi_in.ngk; this->npol = psi_in.npol; this->nk = psi_in.get_nk(); this->nbands = psi_in.get_nbands(); @@ -166,7 +199,7 @@ Psi::Psi(const Psi& psi_in) this->current_b = psi_in.get_current_b(); this->k_first = psi_in.get_k_first(); // this function will copy psi_in.psi to this->psi no matter the device types of each other. - this->device = base_device::get_device_type(this->ctx); + this->resize(psi_in.get_nk(), psi_in.get_nbands(), psi_in.get_nbasis()); base_device::memory::synchronize_memory_op()(this->ctx, psi_in.get_device(), @@ -178,6 +211,8 @@ Psi::Psi(const Psi& psi_in) this->psi_current = this->psi + psi_in.get_psi_bias(); } + +// Constructor 2-2: template template Psi::Psi(const Psi& psi_in) @@ -191,7 +226,7 @@ Psi::Psi(const Psi& psi_in) this->current_b = psi_in.get_current_b(); this->k_first = psi_in.get_k_first(); // this function will copy psi_in.psi to this->psi no matter the device types of each other. - this->device = base_device::get_device_type(this->ctx); + this->resize(psi_in.get_nk(), psi_in.get_nbands(), psi_in.get_nbasis()); // Specifically, if the Device_in type is CPU and the Device type is GPU. @@ -230,12 +265,23 @@ Psi::Psi(const Psi& psi_in) this->psi_current = this->psi + psi_in.get_psi_bias(); } +template +void Psi::set_all_psi(const T* another_pointer, const std::size_t size_in) +{ + assert(size_in == this->size()); + synchronize_memory_op()(this->ctx, this->ctx, this->psi, another_pointer, this->size()); +} + template void Psi::resize(const int nks_in, const int nbands_in, const int nbasis_in) { assert(nks_in > 0 && nbands_in >= 0 && nbasis_in > 0); + // This function will delete the psi array first(if psi exist), then malloc a new memory for it. resize_memory_op()(this->ctx, this->psi, nks_in * static_cast(nbands_in) * nbasis_in, "no_record"); + + // this->zero_out(); + this->nk = nks_in; this->nbands = nbands_in; this->nbasis = nbasis_in; @@ -258,12 +304,6 @@ T* Psi::get_pointer(const int& ikb) const return this->psi_current + ikb * this->nbasis; } -template -const int* Psi::get_ngk_pointer() const -{ - return this->ngk; -} - template const bool& Psi::get_k_first() const { @@ -276,12 +316,31 @@ const Device* Psi::get_device() const return this->ctx; } +template +const int* Psi::get_ngk_pointer() const +{ + return this->ngk; +} + template const int& Psi::get_psi_bias() const { return this->psi_bias; } +template +const int& Psi::get_current_ngk() const +{ + if (this->npol == 1) + { + return this->current_nbasis; + } + else + { + return this->nbasis; + } +} + template const int& Psi::get_nk() const { @@ -315,7 +374,7 @@ void Psi::fix_k(const int ik) const { assert(ik >= 0); this->current_k = ik; - if (this->ngk != nullptr && this->npol != 2) + if (this->ngk != nullptr) { this->current_nbasis = this->ngk[ik]; } @@ -429,10 +488,7 @@ int Psi::get_current_nbas() const template const int& Psi::get_ngk(const int ik_in) const { - if (!this->ngk) - { - return this->nbasis; - } + assert(this->ngk != nullptr); return this->ngk[ik_in]; } diff --git a/source/module_psi/psi.h b/source/module_psi/psi.h index 6b374c8a70..d8a994377a 100644 --- a/source/module_psi/psi.h +++ b/source/module_psi/psi.h @@ -36,53 +36,53 @@ template class Psi { public: - // Constructor 1: basic + // Constructor 0: basic Psi(); - // Constructor 3: specify nk, nbands, nbasis, ngk, and do not need to call resize() later - Psi(const int nk_in, const int nbd_in, const int nbs_in, const int* ngk_in = nullptr, const bool k_first_in = true); + // Constructor 1-1: specify nk, nbands, nbasis, ngk, and do not need to call resize() later + Psi(const int nk_in, const int nbd_in, const int nbs_in, const int* ngk_in, const bool k_first_in = true); - // Constructor 4: copy a new Psi which have several k-points and several bands from inputted psi_in - Psi(const Psi& psi_in, const int nk_in, int nband_in = 0); + // Constructor 1-2: + Psi(const int nk_in, const int nbd_in, const int nbs_in, const std::vector& ngk_in, const bool k_first_in); - // Constructor 5: a wrapper of a data pointer, used for Operator::hPsi() - // in this case, fix_k can not be used - Psi(T* psi_pointer, const Psi& psi_in, const int nk_in, int nband_in = 0); - - // Constructor 6: initialize a new psi from the given psi_in + // Constructor 2-1: initialize a new psi from the given psi_in Psi(const Psi& psi_in); - // Constructor 7: initialize a new psi from the given psi_in with a different class template + // Constructor 2-2: initialize a new psi from the given psi_in with a different class template // in this case, psi_in may have a different device type. template Psi(const Psi& psi_in); - // Constructor 8-1: a pointer version of constructor 3 - // only used in hsolver-pw function pointer. + // Constructor 3-1: 2D Psi version + // used in hsolver-pw function pointer and somewhere. Psi(T* psi_pointer, const int nk_in, const int nbd_in, const int nbs_in, - const std::vector& ngk_vector_in, + const int current_nbasis_in, const bool k_first_in = true); - // Constructor 8-2: a pointer version of constructor 3 - // only used in operator.cpp call_act func - Psi(T* psi_pointer, - const int nk_in, - const int nbd_in, - const int nbs_in, - const bool k_first_in); + // Constructor 3-2: 2D Psi version + Psi(const int nk_in, const int nbd_in, const int nbs_in, const int current_nbasis_in, const bool k_first_in); - // Destructor for deleting the psi array manually ~Psi(); + // set psi value func 1 + void set_all_psi(const T* another_pointer, const std::size_t size_in); + + // set psi value func 2 + void zero_out(); + + // size_t size() const {return this->psi.size();} + size_t size() const; + // allocate psi for three dimensions void resize(const int nks_in, const int nbands_in, const int nbasis_in); // get the pointer for the 1st index T* get_pointer() const; + // get the pointer for the 2nd index (iband for k_first = true, ik for k_first = false) T* get_pointer(const int& ikb) const; @@ -90,8 +90,6 @@ class Psi const int& get_nk() const; const int& get_nbands() const; const int& get_nbasis() const; - // size_t size() const {return this->psi.size();} - size_t size() const; /// if k_first=true: choose k-point index , then Psi(iband, ibasis) can reach Psi(ik, iband, ibasis) /// if k_first=false: choose k-point index, then Psi(ibasis) can reach Psi(iband, ik, ibasis) @@ -122,27 +120,29 @@ class Psi int get_current_nbas() const; const int& get_ngk(const int ik_in) const; - // return ngk array of psi + const int* get_ngk_pointer() const; + // return k_first const bool& get_k_first() const; + // return device type of psi const Device* get_device() const; + // return psi_bias const int& get_psi_bias() const; - // mark - void zero_out(); + const int& get_current_ngk() const; // solve Range: return(pointer of begin, number of bands or k-points) std::tuple to_range(const Range& range) const; + int npol = 1; private: T* psi = nullptr; // avoid using C++ STL - base_device::AbacusDevice_t device = {}; // track the device type (CPU, GPU and SYCL are supported currented) - Device* ctx = {}; // an context identifier for obtaining the device variable + Device* ctx = {}; // an context identifier for obtaining the device variable // dimensions int nk = 1; // number of k points diff --git a/source/module_psi/test/psi_test.cpp b/source/module_psi/test/psi_test.cpp index df22b5f885..0b42df63c7 100644 --- a/source/module_psi/test/psi_test.cpp +++ b/source/module_psi/test/psi_test.cpp @@ -14,9 +14,6 @@ class TestPsi : public ::testing::Test const psi::Psi* psi_object32 = new psi::Psi(ink, inbands, inbasis, &ngk[0]); const psi::Psi>* psi_object33 = new psi::Psi>(ink, inbands, inbasis, &ngk[0]); const psi::Psi* psi_object34 = new psi::Psi(ink, inbands, inbasis, &ngk[0]); - - psi::Psi>* psi_object4 = new psi::Psi>(*psi_object31, ink, 0); - psi::Psi>* psi_object5 = new psi::Psi>(psi_object31->get_pointer(), *psi_object31, ink, 0); }; TEST_F(TestPsi, get_val) @@ -63,26 +60,6 @@ TEST_F(TestPsi, get_val) EXPECT_EQ(psi_object14->get_psi_bias(), 0); } -// TEST_F(TestPsi, get_ngk) -// { -// psi::Psi>* psi_object21 = new psi::Psi>(&ngk[0]); -// psi::Psi* psi_object22 = new psi::Psi(&ngk[0]); -// psi::Psi>* psi_object23 = new psi::Psi>(&ngk[0]); -// psi::Psi* psi_object24 = new psi::Psi(&ngk[0]); - -// EXPECT_EQ(psi_object21->get_ngk(2), ngk[2]); -// EXPECT_EQ(psi_object21->get_ngk_pointer()[0], ngk[0]); - -// EXPECT_EQ(psi_object22->get_ngk(2), ngk[2]); -// EXPECT_EQ(psi_object22->get_ngk_pointer()[0], ngk[0]); - -// EXPECT_EQ(psi_object23->get_ngk(2), ngk[2]); -// EXPECT_EQ(psi_object23->get_ngk_pointer()[0], ngk[0]); - -// EXPECT_EQ(psi_object24->get_ngk(2), ngk[2]); -// EXPECT_EQ(psi_object24->get_ngk_pointer()[0], ngk[0]); -// } - TEST_F(TestPsi, get_pointer_op_zero_complex_double) { for (int i = 0; i < ink; i++) @@ -119,7 +96,9 @@ TEST_F(TestPsi, get_pointer_op_zero_complex_double) // cover all lines in fix_k func psi_object31->fix_k(2); EXPECT_EQ(psi_object31->get_psi_bias(), 0); - psi::Psi>* psi_temp = new psi::Psi>(ink, inbands, inbasis); + + std::vector temp(ink, inbasis); + psi::Psi>* psi_temp = new psi::Psi>(ink, inbands, inbasis, temp.data(), true); psi_temp->fix_k(0); EXPECT_EQ(psi_object31->get_current_nbas(), inbasis); delete psi_temp; @@ -331,30 +310,6 @@ TEST_F(TestPsi, band_first) EXPECT_EQ(std::get<0>(psi_band_32->to_range(illegal_range1)), nullptr); EXPECT_EQ(std::get<1>(psi_band_32->to_range(illegal_range2)), 0); - // pointer constructor - // band-first to k-first - // psi::Psi psi_band_32_k(psi_band_32->get_pointer(), psi_band_32->get_nk(), psi_band_32->get_nbands(), psi_band_32->get_nbasis(), psi_band_32->get_ngk_pointer(), true); - // k-first to band-first - // psi::Psi psi_band_32_b(psi_band_32_k.get_pointer(), psi_band_32_k.get_nk(), psi_band_32_k.get_nbands(), psi_band_32_k.get_nbasis(), psi_band_32_k.get_ngk_pointer(), false); - // EXPECT_EQ(psi_band_32_k.get_nk(), ink); - // EXPECT_EQ(psi_band_32_k.get_nbands(), inbands); - // EXPECT_EQ(psi_band_32_k.get_nbasis(), inbasis); - // EXPECT_EQ(psi_band_32_b.get_nk(), ink); - // EXPECT_EQ(psi_band_32_b.get_nbands(), inbands); - // EXPECT_EQ(psi_band_32_b.get_nbasis(), inbasis); - // for (int ik = 0;ik < ink;++ik) - // { - // for (int ib = 0;ib < inbands;++ib) - // { - // psi_band_32->fix_kb(ik, ib); - // psi_band_32_k.fix_kb(ik, ib); - // psi_band_32_b.fix_kb(ik, ib); - // EXPECT_EQ(psi_band_32->get_psi_bias(), (ib * ink + ik) * inbasis); - // EXPECT_EQ(psi_band_32_k.get_psi_bias(), (ik * inbands + ib) * inbasis); - // EXPECT_EQ(psi_band_32_b.get_psi_bias(), (ib * ink + ik) * inbasis); - // } - // } - delete psi_band_c64; delete psi_band_64; delete psi_band_c32; diff --git a/source/module_ri/exx_lip.hpp b/source/module_ri/exx_lip.hpp index 06456b6f80..bd94316027 100644 --- a/source/module_ri/exx_lip.hpp +++ b/source/module_ri/exx_lip.hpp @@ -114,7 +114,7 @@ Exx_Lip::Exx_Lip(const Exx_Info::Exx_Info_Lip& info_in, #endif this->k_pack->wf_wg.create(this->k_pack->kv_ptr->get_nks(),PARAM.inp.nbands); - this->k_pack->hvec_array = new psi::Psi(this->k_pack->kv_ptr->get_nks(), PARAM.inp.nbands, PARAM.globalv.nlocal); + this->k_pack->hvec_array = new psi::Psi(this->k_pack->kv_ptr->get_nks(), PARAM.inp.nbands, PARAM.globalv.nlocal, kv_ptr_in->ngk.data(), true); // this->k_pack->hvec_array = new ModuleBase::ComplexMatrix[this->k_pack->kv_ptr->get_nks()]; // for( int ik=0; ikk_pack->kv_ptr->get_nks(); ++ik) // { From e25db6e15d63929b164b41668c9bf25d68d9e33d Mon Sep 17 00:00:00 2001 From: Erjie Wu <110683255+ErjieWu@users.noreply.github.com> Date: Sun, 5 Jan 2025 19:49:50 +0800 Subject: [PATCH 44/44] Refactor: Remove global dependence of descriptor, orbital_precalc, v_delta_precalc in DeePKS. (#5812) * Remove functions related to v_delta in LCAO_Deepks; Remove some redundent variables. * Remove some temporary variables for force/stress calculation in DeePKS and separate force&stress calculations. Remove global dependence of descriptor. * Use accessor to accelerate the manipulation of torch::Tensor variables in DeePKS. * Remove LCAO_deepks_mpi.cpp. * Update Unittest for DeePKS. * Clang-format change. * Update cal_gdmx and cal_gdmepsl. * Fix check_gvx() bug when using mpirun. * Move functions for calculating descriptor from LCAO_deepks to DeePKS_domain. * Add UT for cal_gdmepsl and modify the ref files to suit the new data structure. --- source/Makefile.Objects | 10 +- source/module_esolver/esolver_ks.h | 20 +- .../hamilt_lcaodft/FORCE_STRESS.cpp | 96 +-- .../hamilt_lcaodft/FORCE_gamma.cpp | 17 +- .../hamilt_lcaodft/FORCE_k.cpp | 11 +- .../operator_lcao/deepks_lcao.cpp | 17 +- .../module_deepks/CMakeLists.txt | 10 +- .../module_deepks/LCAO_deepks.cpp | 219 +----- .../module_deepks/LCAO_deepks.h | 166 +---- .../module_deepks/LCAO_deepks_interface.cpp | 65 +- .../module_deepks/LCAO_deepks_io.cpp | 53 +- .../module_deepks/LCAO_deepks_io.h | 10 +- .../module_deepks/LCAO_deepks_mpi.cpp | 23 - .../module_deepks/LCAO_deepks_pdm.cpp | 16 +- .../module_deepks/LCAO_deepks_torch.cpp | 327 +-------- .../module_deepks/cal_gdmepsl.cpp | 263 +++++++ .../module_deepks/cal_gdmx.cpp | 197 ++---- .../module_deepks/cal_gedm.cpp | 15 +- .../module_deepks/cal_gvx.cpp | 64 +- ...l_descriptor.cpp => deepks_descriptor.cpp} | 83 +-- .../module_deepks/deepks_descriptor.h | 51 ++ .../module_deepks/deepks_orbpre.cpp | 23 +- .../module_deepks/deepks_vdpre.cpp | 645 ++++++++++++++++++ .../module_deepks/deepks_vdpre.h | 95 +++ .../module_deepks/test/LCAO_deepks_test.cpp | 140 ++-- .../module_deepks/test/LCAO_deepks_test.h | 13 +- .../module_deepks/test/Makefile.Objects | 2 - .../module_deepks/test/main_deepks.cpp | 66 +- .../module_deepks/v_delta_precalc.cpp | 346 ---------- .../gdmepsl_0_ref.dat | 195 ++++++ .../gdmepsl_1_ref.dat | 195 ++++++ .../gdmepsl_2_ref.dat | 195 ++++++ .../gdmepsl_3_ref.dat | 195 ++++++ .../gdmepsl_4_ref.dat | 195 ++++++ .../gdmepsl_5_ref.dat | 195 ++++++ .../604_NO_deepks_ut_CH4_gamma/gdmx_0_ref.dat | 146 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmx_1_ref.dat | 134 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmx_2_ref.dat | 134 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmx_3_ref.dat | 134 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmx_4_ref.dat | 138 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmy_0_ref.dat | 140 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmy_1_ref.dat | 132 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmy_2_ref.dat | 138 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmy_3_ref.dat | 132 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmy_4_ref.dat | 132 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmz_0_ref.dat | 136 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmz_1_ref.dat | 138 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmz_2_ref.dat | 130 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmz_3_ref.dat | 134 ++-- .../604_NO_deepks_ut_CH4_gamma/gdmz_4_ref.dat | 136 ++-- 50 files changed, 3767 insertions(+), 2500 deletions(-) delete mode 100644 source/module_hamilt_lcao/module_deepks/LCAO_deepks_mpi.cpp create mode 100644 source/module_hamilt_lcao/module_deepks/cal_gdmepsl.cpp rename source/module_hamilt_lcao/module_deepks/{cal_descriptor.cpp => deepks_descriptor.cpp} (51%) create mode 100644 source/module_hamilt_lcao/module_deepks/deepks_descriptor.h create mode 100644 source/module_hamilt_lcao/module_deepks/deepks_vdpre.cpp create mode 100644 source/module_hamilt_lcao/module_deepks/deepks_vdpre.h delete mode 100644 source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp create mode 100644 tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_0_ref.dat create mode 100644 tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_1_ref.dat create mode 100644 tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_2_ref.dat create mode 100644 tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_3_ref.dat create mode 100644 tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_4_ref.dat create mode 100644 tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_5_ref.dat diff --git a/source/Makefile.Objects b/source/Makefile.Objects index f209a16513..76e51cfbce 100644 --- a/source/Makefile.Objects +++ b/source/Makefile.Objects @@ -192,21 +192,21 @@ OBJS_CELL=atom_pseudo.o\ OBJS_DEEPKS=LCAO_deepks.o\ deepks_force.o\ + deepks_descriptor.o\ deepks_orbital.o\ + deepks_orbpre.o\ + deepks_vdpre.o\ + deepks_hmat.o\ LCAO_deepks_io.o\ - LCAO_deepks_mpi.o\ LCAO_deepks_pdm.o\ LCAO_deepks_phialpha.o\ LCAO_deepks_torch.o\ LCAO_deepks_vdelta.o\ - deepks_hmat.o\ LCAO_deepks_interface.o\ - deepks_orbpre.o\ cal_gdmx.o\ + cal_gdmepsl.o\ cal_gedm.o\ cal_gvx.o\ - cal_descriptor.o\ - v_delta_precalc.o\ OBJS_ELECSTAT=elecstate.o\ diff --git a/source/module_esolver/esolver_ks.h b/source/module_esolver/esolver_ks.h index 16932bcc6a..00e1352c50 100644 --- a/source/module_esolver/esolver_ks.h +++ b/source/module_esolver/esolver_ks.h @@ -55,7 +55,7 @@ class ESolver_KS : public ESolver_FP virtual void after_scf(UnitCell& ucell, const int istep) override; //! It should be replaced by a function in Hamilt Class - virtual void update_pot(UnitCell& ucell, const int istep, const int iter) {}; + virtual void update_pot(UnitCell& ucell, const int istep, const int iter){}; //! Hamiltonian hamilt::Hamilt* p_hamilt = nullptr; @@ -72,7 +72,7 @@ class ESolver_KS : public ESolver_FP //! Electronic wavefunctions psi::Psi* psi = nullptr; - //! plane wave or LCAO + //! plane wave or LCAO std::string basisname; //! number of electrons @@ -83,18 +83,18 @@ class ESolver_KS : public ESolver_FP //! the start time of scf iteration #ifdef __MPI - double iter_time; + double iter_time; #else std::chrono::system_clock::time_point iter_time; #endif - double diag_ethr; //! the threshold for diagonalization - double scf_thr; //! scf density threshold - double scf_ene_thr; //! scf energy threshold - double drho; //! the difference between rho_in (before HSolver) and rho_out (After HSolver) - double hsolver_error; //! the error of HSolver - int maxniter; //! maximum iter steps for scf - int niter; //! iter steps actually used in scf + double diag_ethr; //! the threshold for diagonalization + double scf_thr; //! scf density threshold + double scf_ene_thr; //! scf energy threshold + double drho; //! the difference between rho_in (before HSolver) and rho_out (After HSolver) + double hsolver_error; //! the error of HSolver + int maxniter; //! maximum iter steps for scf + int niter; //! iter steps actually used in scf }; } // namespace ModuleESolver #endif diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp index bc98636d3a..89f328e12f 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_STRESS.cpp @@ -513,18 +513,14 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, if (!PARAM.inp.deepks_equiv) // training with force label not supported by equivariant version now { + torch::Tensor gdmx; if (PARAM.globalv.gamma_only_local) { const std::vector>& dm_gamma = dynamic_cast*>(pelec)->get_DM()->get_DMK_vector(); - GlobalC::ld.cal_gdmx(dm_gamma, - ucell, - orb, - gd, - kv.get_nks(), - kv.kvec_d, - GlobalC::ld.phialpha, - isstress); + + GlobalC::ld + .cal_gdmx(dm_gamma, ucell, orb, gd, kv.get_nks(), kv.kvec_d, GlobalC::ld.phialpha, gdmx); } else { @@ -533,25 +529,25 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, ->get_DM() ->get_DMK_vector(); - GlobalC::ld - .cal_gdmx(dm_k, ucell, orb, gd, kv.get_nks(), kv.kvec_d, GlobalC::ld.phialpha, isstress); + GlobalC::ld.cal_gdmx(dm_k, ucell, orb, gd, kv.get_nks(), kv.kvec_d, GlobalC::ld.phialpha, gdmx); } if (PARAM.inp.deepks_out_unittest) { - GlobalC::ld.check_gdmx(ucell.nat); + GlobalC::ld.check_gdmx(ucell.nat, gdmx); } std::vector gevdm; GlobalC::ld.cal_gevdm(ucell.nat, gevdm); - GlobalC::ld.cal_gvx(ucell.nat, gevdm); + torch::Tensor gvx; + GlobalC::ld.cal_gvx(ucell.nat, gevdm, gdmx, gvx); if (PARAM.inp.deepks_out_unittest) { - GlobalC::ld.check_gvx(ucell.nat); + GlobalC::ld.check_gvx(ucell.nat, gvx); } LCAO_deepks_io::save_npy_gvx(ucell.nat, GlobalC::ld.des_per_atom, - GlobalC::ld.gvx_tensor, + gvx, PARAM.globalv.global_out_dir, GlobalV::MY_RANK); } @@ -715,6 +711,12 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, { scs(i, j) += stress_exx(i, j); } +#endif +#ifdef __DEEPKS + if (PARAM.inp.deepks_scf) + { + scs(i, j) += svnl_dalpha(i, j); + } #endif } } @@ -726,47 +728,61 @@ void Force_Stress_LCAO::getForceStress(UnitCell& ucell, #ifdef __DEEPKS if (PARAM.inp.deepks_out_labels) // not parallelized yet { - const std::string file_s = PARAM.globalv.global_out_dir + "deepks_sbase.npy"; + const std::string file_stot = PARAM.globalv.global_out_dir + "deepks_stot.npy"; LCAO_deepks_io::save_npy_s(scs, - file_s, - ucell.omega, - GlobalV::MY_RANK); // change to energy unit Ry when printing, S_base; - } - if (PARAM.inp.deepks_scf) - { - if (ModuleSymmetry::Symmetry::symm_flag == 1) - { - symm->symmetrize_mat3(svnl_dalpha, ucell.lat); - } // end symmetry - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - scs(i, j) += svnl_dalpha(i, j); - } - } - } - if (PARAM.inp.deepks_out_labels) // not parallelized yet - { - const std::string file_s = PARAM.globalv.global_out_dir + "deepks_stot.npy"; - LCAO_deepks_io::save_npy_s(scs, - file_s, + file_stot, ucell.omega, GlobalV::MY_RANK); // change to energy unit Ry when printing, S_tot, w/ model // wenfei add 2021/11/2 if (PARAM.inp.deepks_scf) { + const std::string file_sbase = PARAM.globalv.global_out_dir + "deepks_sbase.npy"; + LCAO_deepks_io::save_npy_s(scs - svnl_dalpha, + file_sbase, + ucell.omega, + GlobalV::MY_RANK); // change to energy unit Ry when printing, S_base; if (!PARAM.inp.deepks_equiv) // training with stress label not supported by equivariant version now { + torch::Tensor gdmepsl; + if (PARAM.globalv.gamma_only_local) + { + const std::vector>& dm_gamma + = dynamic_cast*>(pelec)->get_DM()->get_DMK_vector(); + + GlobalC::ld.cal_gdmepsl(dm_gamma, + ucell, + orb, + gd, + kv.get_nks(), + kv.kvec_d, + GlobalC::ld.phialpha, + gdmepsl); + } + else + { + const std::vector>>& dm_k + = dynamic_cast>*>(pelec) + ->get_DM() + ->get_DMK_vector(); + + GlobalC::ld + .cal_gdmepsl(dm_k, ucell, orb, gd, kv.get_nks(), kv.kvec_d, GlobalC::ld.phialpha, gdmepsl); + } + if (PARAM.inp.deepks_out_unittest) + { + GlobalC::ld.check_gdmepsl(gdmepsl); + } + std::vector gevdm; GlobalC::ld.cal_gevdm(ucell.nat, gevdm); - GlobalC::ld.cal_gvepsl(ucell.nat, gevdm); + torch::Tensor gvepsl; + GlobalC::ld.cal_gvepsl(ucell.nat, gevdm, gdmepsl, gvepsl); LCAO_deepks_io::save_npy_gvepsl(ucell.nat, GlobalC::ld.des_per_atom, - GlobalC::ld.gvepsl_tensor, + gvepsl, PARAM.globalv.global_out_dir, GlobalV::MY_RANK); // unitless, grad_vepsl } diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp index 83f7987dd7..cdcf7bb4cc 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_gamma.cpp @@ -248,13 +248,19 @@ void Force_LCAO::ftable(const bool isforce, #ifdef __DEEPKS const std::vector>& dm_gamma = dm->get_DMK_vector(); + std::vector descriptor; if (PARAM.inp.deepks_scf) { // when deepks_scf is on, the init pdm should be same as the out pdm, so we should not recalculate the pdm // GlobalC::ld.cal_projected_DM(dm, ucell, orb, gd); - GlobalC::ld.cal_descriptor(ucell.nat); - GlobalC::ld.cal_gedm(ucell.nat); + DeePKS_domain::cal_descriptor(ucell.nat, + GlobalC::ld.inlmax, + GlobalC::ld.inl_l, + GlobalC::ld.pdm, + descriptor, + GlobalC::ld.des_per_atom); + GlobalC::ld.cal_gedm(ucell.nat, descriptor); const int nks = 1; DeePKS_domain::cal_f_delta(dm_gamma, @@ -305,7 +311,12 @@ void Force_LCAO::ftable(const bool isforce, GlobalC::ld.check_projected_dm(); - GlobalC::ld.check_descriptor(ucell, PARAM.globalv.global_out_dir); + DeePKS_domain::check_descriptor(GlobalC::ld.inlmax, + GlobalC::ld.des_per_atom, + GlobalC::ld.inl_l, + ucell, + PARAM.globalv.global_out_dir, + descriptor); GlobalC::ld.check_gedm(); diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp index 7739a02338..e8a7bd5c49 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/FORCE_k.cpp @@ -349,9 +349,14 @@ void Force_LCAO>::ftable(const bool isforce, // when deepks_scf is on, the init pdm should be same as the out pdm, so we should not recalculate the pdm // GlobalC::ld.cal_projected_DM(dm, ucell, orb, gd); - GlobalC::ld.cal_descriptor(ucell.nat); - - GlobalC::ld.cal_gedm(ucell.nat); + std::vector descriptor; + DeePKS_domain::cal_descriptor(ucell.nat, + GlobalC::ld.inlmax, + GlobalC::ld.inl_l, + GlobalC::ld.pdm, + descriptor, + GlobalC::ld.des_per_atom); + GlobalC::ld.cal_gedm(ucell.nat, descriptor); DeePKS_domain::cal_f_delta>(dm_k, ucell, diff --git a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp index 95559724ba..00de8f1149 100644 --- a/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp +++ b/source/module_hamilt_lcao/hamilt_lcaodft/operator_lcao/deepks_lcao.cpp @@ -58,7 +58,7 @@ void hamilt::DeePKS>::initialize_HR(const Grid_Driv this->H_V_delta = new HContainer(paraV); if (std::is_same::value) { - //this->H_V_delta = new HContainer(paraV); + // this->H_V_delta = new HContainer(paraV); this->H_V_delta->fix_gamma(); } @@ -138,8 +138,8 @@ void hamilt::DeePKS>::initialize_HR(const Grid_Driv // if (std::is_same::value) // { this->H_V_delta->allocate(nullptr, true); - // expand hR with H_V_delta - // update : for computational rigor, gamma-only and multi-k cases both have full size of Hamiltonian of DeePKS now + // expand hR with H_V_delta + // update : for computational rigor, gamma-only and multi-k cases both have full size of Hamiltonian of DeePKS now this->hR->add(*this->H_V_delta); this->hR->allocate(nullptr, false); // } @@ -161,8 +161,15 @@ void hamilt::DeePKS>::contributeHR() ModuleBase::timer::tick("DeePKS", "contributeHR"); GlobalC::ld.cal_projected_DM(this->DM, *this->ucell, *ptr_orb_, *(this->gd)); - GlobalC::ld.cal_descriptor(this->ucell->nat); - GlobalC::ld.cal_gedm(this->ucell->nat); + + std::vector descriptor; + DeePKS_domain::cal_descriptor(this->ucell->nat, + GlobalC::ld.inlmax, + GlobalC::ld.inl_l, + GlobalC::ld.pdm, + descriptor, + GlobalC::ld.des_per_atom); + GlobalC::ld.cal_gedm(this->ucell->nat, descriptor); // // recalculate the H_V_delta // if (this->H_V_delta == nullptr) diff --git a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt index bc6c2356e3..f2d54e070e 100644 --- a/source/module_hamilt_lcao/module_deepks/CMakeLists.txt +++ b/source/module_hamilt_lcao/module_deepks/CMakeLists.txt @@ -1,22 +1,22 @@ if(ENABLE_DEEPKS) list(APPEND objects LCAO_deepks.cpp + deepks_descriptor.cpp deepks_force.cpp deepks_orbital.cpp + deepks_orbpre.cpp + deepks_vdpre.cpp + deepks_hmat.cpp LCAO_deepks_io.cpp - LCAO_deepks_mpi.cpp LCAO_deepks_pdm.cpp LCAO_deepks_phialpha.cpp LCAO_deepks_torch.cpp LCAO_deepks_vdelta.cpp - deepks_hmat.cpp LCAO_deepks_interface.cpp - deepks_orbpre.cpp cal_gdmx.cpp + cal_gdmepsl.cpp cal_gedm.cpp cal_gvx.cpp - cal_descriptor.cpp - v_delta_precalc.cpp ) add_library( diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp index bffeb97efd..cbfb5eb4cb 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.cpp @@ -7,15 +7,8 @@ // 1. subroutines that are related to calculating descriptors: // - init : allocates some arrays // - init_index : records the index (inl) -// 2. subroutines that are related to calculating force label: -// - init_gdmx : allocates gdmx; it is a private subroutine -// - del_gdmx : releases gdmx -// 3. subroutines that are related to calculating force label: -// - init_gdmepsl : allocates gdm_epsl; it is a private subroutine -// - del_gdmepsl : releases gdm_epsl -// 4. subroutines that are related to V_delta: -// - allocate_V_delta : allocates H_V_delta; if calculating force, it also calls -// init_gdmx, as well as allocating F_delta +// 2. subroutines that are related to V_delta: +// - allocate_V_delta : allocates H_V_delta; if calculating force, it also allocates F_delta #ifdef __DEEPKS @@ -57,8 +50,6 @@ LCAO_Deepks::~LCAO_Deepks() } delete[] gedm; } - - del_gdmx(); } void LCAO_Deepks::init(const LCAO_Orbitals& orb, @@ -120,7 +111,6 @@ void LCAO_Deepks::init(const LCAO_Orbitals& orb, int nm = 2 * inl_l[inl] + 1; pdm_size += nm * nm; this->pdm[inl] = torch::zeros({nm, nm}, torch::kFloat64); - // this->pdm[inl].requires_grad_(true); } } else @@ -196,101 +186,6 @@ void LCAO_Deepks::init_index(const int ntype, return; } -void LCAO_Deepks::init_gdmx(const int nat) -{ - this->gdmx = new double**[nat]; - this->gdmy = new double**[nat]; - this->gdmz = new double**[nat]; - int pdm_size = 0; - if (!PARAM.inp.deepks_equiv) - { - pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); - } - else - { - pdm_size = this->des_per_atom; - } - - for (int iat = 0; iat < nat; iat++) - { - this->gdmx[iat] = new double*[inlmax]; - this->gdmy[iat] = new double*[inlmax]; - this->gdmz[iat] = new double*[inlmax]; - for (int inl = 0; inl < inlmax; inl++) - { - this->gdmx[iat][inl] = new double[pdm_size]; - this->gdmy[iat][inl] = new double[pdm_size]; - this->gdmz[iat][inl] = new double[pdm_size]; - ModuleBase::GlobalFunc::ZEROS(gdmx[iat][inl], pdm_size); - ModuleBase::GlobalFunc::ZEROS(gdmy[iat][inl], pdm_size); - ModuleBase::GlobalFunc::ZEROS(gdmz[iat][inl], pdm_size); - } - } - this->nat_gdm = nat; - return; -} - -// void LCAO_Deepks::del_gdmx(const int nat) -void LCAO_Deepks::del_gdmx() -{ - for (int iat = 0; iat < nat_gdm; iat++) - { - for (int inl = 0; inl < inlmax; inl++) - { - delete[] this->gdmx[iat][inl]; - delete[] this->gdmy[iat][inl]; - delete[] this->gdmz[iat][inl]; - } - delete[] this->gdmx[iat]; - delete[] this->gdmy[iat]; - delete[] this->gdmz[iat]; - } - delete[] this->gdmx; - delete[] this->gdmy; - delete[] this->gdmz; - return; -} - -void LCAO_Deepks::init_gdmepsl() -{ - this->gdm_epsl = new double**[6]; - - int pdm_size = 0; - if (!PARAM.inp.deepks_equiv) - { - pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); - } - else - { - pdm_size = this->des_per_atom; - } - - for (int ipol = 0; ipol < 6; ipol++) - { - this->gdm_epsl[ipol] = new double*[inlmax]; - for (int inl = 0; inl < inlmax; inl++) - { - this->gdm_epsl[ipol][inl] = new double[pdm_size]; - ModuleBase::GlobalFunc::ZEROS(gdm_epsl[ipol][inl], pdm_size); - } - } - return; -} - -void LCAO_Deepks::del_gdmepsl() -{ - for (int ipol = 0; ipol < 6; ipol++) - { - for (int inl = 0; inl < inlmax; inl++) - { - delete[] this->gdm_epsl[ipol][inl]; - } - delete[] this->gdm_epsl[ipol]; - } - delete[] this->gdm_epsl; - return; -} - void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) { ModuleBase::TITLE("LCAO_Deepks", "allocate_V_delta"); @@ -330,116 +225,6 @@ void LCAO_Deepks::allocate_V_delta(const int nat, const int nks) this->gedm[inl] = new double[pdm_size]; ModuleBase::GlobalFunc::ZEROS(this->gedm[inl], pdm_size); } - if (PARAM.inp.cal_force) - { - if (PARAM.inp.deepks_out_labels) - { - this->init_gdmx(nat); - this->init_gdmepsl(); - } - // gdmx is used only in calculating gvx - } - - return; -} - -void LCAO_Deepks::init_v_delta_pdm_shell(const int nks, const int nlocal) -{ - const int mn_size = (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1); - if (nks == 1) - { - this->v_delta_pdm_shell = new double****[nks]; - for (int iks = 0; iks < nks; iks++) - { - this->v_delta_pdm_shell[iks] = new double***[nlocal]; - - for (int mu = 0; mu < nlocal; mu++) - { - this->v_delta_pdm_shell[iks][mu] = new double**[nlocal]; - - for (int nu = 0; nu < nlocal; nu++) - { - this->v_delta_pdm_shell[iks][mu][nu] = new double*[this->inlmax]; - - for (int inl = 0; inl < this->inlmax; inl++) - { - this->v_delta_pdm_shell[iks][mu][nu][inl] = new double[mn_size]; - ModuleBase::GlobalFunc::ZEROS(v_delta_pdm_shell[iks][mu][nu][inl], mn_size); - } - } - } - } - } - else - { - this->v_delta_pdm_shell_complex = new std::complex****[nks]; - for (int iks = 0; iks < nks; iks++) - { - this->v_delta_pdm_shell_complex[iks] = new std::complex***[nlocal]; - - for (int mu = 0; mu < nlocal; mu++) - { - this->v_delta_pdm_shell_complex[iks][mu] = new std::complex**[nlocal]; - - for (int nu = 0; nu < nlocal; nu++) - { - this->v_delta_pdm_shell_complex[iks][mu][nu] = new std::complex*[this->inlmax]; - - for (int inl = 0; inl < this->inlmax; inl++) - { - this->v_delta_pdm_shell_complex[iks][mu][nu][inl] = new std::complex[mn_size]; - ModuleBase::GlobalFunc::ZEROS(v_delta_pdm_shell_complex[iks][mu][nu][inl], mn_size); - } - } - } - } - } - - return; -} - -void LCAO_Deepks::del_v_delta_pdm_shell(const int nks, const int nlocal) -{ - if (nks == 1) - { - for (int iks = 0; iks < nks; iks++) - { - for (int mu = 0; mu < nlocal; mu++) - { - for (int nu = 0; nu < nlocal; nu++) - { - for (int inl = 0; inl < this->inlmax; inl++) - { - delete[] this->v_delta_pdm_shell[iks][mu][nu][inl]; - } - delete[] this->v_delta_pdm_shell[iks][mu][nu]; - } - delete[] this->v_delta_pdm_shell[iks][mu]; - } - delete[] this->v_delta_pdm_shell[iks]; - } - delete[] this->v_delta_pdm_shell; - } - else - { - for (int iks = 0; iks < nks; iks++) - { - for (int mu = 0; mu < nlocal; mu++) - { - for (int nu = 0; nu < nlocal; nu++) - { - for (int inl = 0; inl < this->inlmax; inl++) - { - delete[] this->v_delta_pdm_shell_complex[iks][mu][nu][inl]; - } - delete[] this->v_delta_pdm_shell_complex[iks][mu][nu]; - } - delete[] this->v_delta_pdm_shell_complex[iks][mu]; - } - delete[] this->v_delta_pdm_shell_complex[iks]; - } - delete[] this->v_delta_pdm_shell_complex; - } return; } diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h index 9238ed73fd..e1d4fb13b2 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks.h @@ -3,10 +3,12 @@ #ifdef __DEEPKS +#include "deepks_descriptor.h" #include "deepks_force.h" #include "deepks_hmat.h" #include "deepks_orbital.h" #include "deepks_orbpre.h" +#include "deepks_vdpre.h" #include "module_base/complexmatrix.h" #include "module_base/intarray.h" #include "module_base/matrix.h" @@ -108,44 +110,12 @@ class LCAO_Deepks // [nat][nlm*nlm] for equivariant version std::vector pdm; - // descriptors - std::vector d_tensor; - // gedm:dE/dD, [tot_Inl][2l+1][2l+1] (E: Hartree) std::vector gedm_tensor; - // gdmx: dD/dX \sum_{mu,nu} 2*c_mu*c_nu * - double*** gdmx; //[natom][tot_Inl][2l+1][2l+1] - double*** gdmy; - double*** gdmz; - - // gdm_epsl: dD/d\epsilon_{\alpha\beta} - double*** gdm_epsl; //[6][tot_Inl][2l+1][2l+1] - - // dD/d\epsilon_{\alpha\beta}, tensor form of gdm_epsl - std::vector gdmepsl_vector; - - // gv_epsl:d(d)/d\epsilon_{\alpha\beta}, [natom][6][des_per_atom] - torch::Tensor gvepsl_tensor; - /// dE/dD, autograd from loaded model(E: Ry) double** gedm; //[tot_Inl][2l+1][2l+1] - // gvx:d(d)/dX, [natom][3][natom][des_per_atom] - torch::Tensor gvx_tensor; - - // dD/dX, tensor form of gdmx - std::vector gdmr_vector; - - // v_delta_pdm_shell[nks,nlocal,nlocal,Inl,nm*nm] = overlap * overlap - double***** v_delta_pdm_shell; - std::complex***** v_delta_pdm_shell_complex; // for multi-k - // v_delta_precalc[nks,nlocal,nlocal,NAt,NDscrpt] = gvdm * v_delta_pdm_shell; - torch::Tensor v_delta_precalc_tensor; - // for v_delta==2 , new v_delta_precalc storage method - torch::Tensor phialpha_tensor; - torch::Tensor gevdm_tensor; - /// size of descriptor(projector) basis set int n_descriptor; @@ -176,12 +146,8 @@ class LCAO_Deepks // 1. subroutines that are related to calculating descriptors: // - init : allocates some arrays // - init_index : records the index (inl) - // 2. subroutines that are related to calculating force label: - // - init_gdmx : allocates gdmx; it is a private subroutine - // - del_gdmx : releases gdmx - // 3. subroutines that are related to V_delta: - // - allocate_V_delta : allocates H_V_delta; if calculating force, it also calls - // init_gdmx, as well as allocating F_delta + // 2. subroutines that are related to V_delta: + // - allocate_V_delta : allocates H_V_delta; if calculating force, it also allocates F_delta public: explicit LCAO_Deepks(); @@ -199,23 +165,10 @@ class LCAO_Deepks /// Allocate memory for correction to Hamiltonian void allocate_V_delta(const int nat, const int nks = 1); - // array for storing gdmx, used for calculating gvx - void init_gdmx(const int nat); - // void del_gdmx(const int nat); - void del_gdmx(); - - // array for storing gdm_epsl, used for calculating gvx - void init_gdmepsl(); - void del_gdmepsl(); - private: // arrange index of descriptor in all atoms void init_index(const int ntype, const int nat, std::vector na, const int tot_inl, const LCAO_Orbitals& orb); - // for v_delta label calculation; xinyuan added on 2023-2-22 - void init_v_delta_pdm_shell(const int nks, const int nlocal); - void del_v_delta_pdm_shell(const int nks, const int nlocal); - //------------------- // LCAO_deepks_phialpha.cpp //------------------- @@ -263,7 +216,7 @@ class LCAO_Deepks // 1. cal_projected_DM, which is used for calculating pdm // 2. check_projected_dm, which prints pdm to descriptor.dat - // 3. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) + // 3. cal_gdmx, calculating gdmx (and optionally gdmepsl for stress) // 4. check_gdmx, which prints gdmx to a series of .dat files public: @@ -295,9 +248,22 @@ class LCAO_Deepks const int nks, const std::vector>& kvec_d, std::vector*> phialpha, - const bool isstress); + torch::Tensor& gdmx); - void check_gdmx(const int nat); + void check_gdmx(const int nat, const torch::Tensor& gdmx); + + template + void cal_gdmepsl( // const ModuleBase::matrix& dm, + const std::vector>& dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const int nks, + const std::vector>& kvec_d, + std::vector*> phialpha, + torch::Tensor& gdmepsl); + + void check_gdmepsl(const torch::Tensor& gdmepsl); /** * @brief set init_pdm to skip the calculation of pdm in SCF iteration @@ -344,16 +310,13 @@ class LCAO_Deepks // as well as subroutines that prints the results for checking // The file contains 8 subroutines: - // 1. cal_descriptor : obtains descriptors which are eigenvalues of pdm - // by calling torch::linalg::eigh - // 2. check_descriptor : prints descriptor for checking // 3. cal_gvx : gvx is used for training with force label, which is gradient of descriptors, // calculated by d(des)/dX = d(pdm)/dX * d(des)/d(pdm) = gdmx * gvdm // using einsum // 4. check_gvx : prints gvx into gvx.dat for checking // 5. cal_gvepsl : gvepsl is used for training with stress label, which is derivative of // descriptors wrt strain tensor, calculated by - // d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdm_epsl * gvdm + // d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdmepsl * gvdm // using einsum // 6. cal_gevdm : d(des)/d(pdm) // calculated using torch::autograd::grad @@ -362,25 +325,8 @@ class LCAO_Deepks // this is the term V(D) that enters the expression H_V_delta = |alpha>V(D)gvx ///---------------------------------------------------- - void cal_gvx(const int nat, const std::vector& gevdm); - void check_gvx(const int nat); + void cal_gvx(const int nat, const std::vector& gevdm, const torch::Tensor& gdmx, torch::Tensor& gvx); + void check_gvx(const int nat, const torch::Tensor& gvx); // for stress - void cal_gvepsl(const int nat, const std::vector& gevdm); + void cal_gvepsl(const int nat, + const std::vector& gevdm, + const torch::Tensor& gdmepsl, + torch::Tensor& gvepsl); // load the trained neural network model void load_model(const std::string& model_file); /// calculate partial of energy correction to descriptors - void cal_gedm(const int nat); + void cal_gedm(const int nat, const std::vector& descriptor); void check_gedm(); - void cal_gedm_equiv(const int nat); - - // calculates orbital_precalc - // template - // void cal_orbital_precalc(const std::vector& dm_hl, - // const int lmaxd, - // const int inlmax, - // const int nat, - // const int nks, - // const int* inl_l, - // const std::vector>& kvec_d, - // const std::vector*> phialpha, - // const std::vector gevdm, - // const ModuleBase::IntArray* inl_index, - // const UnitCell& ucell, - // const LCAO_Orbitals& orb, - // const Parallel_Orbitals& pv, - // const Grid_Driver& GridD, - // torch::Tensor& orbital_precalc); - - // calculates v_delta_precalc - template - void cal_v_delta_precalc(const int nlocal, - const int nat, - const int nks, - const std::vector>& kvec_d, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - - template - void check_v_delta_precalc(const int nat, const int nks, const int nlocal); - - // prepare phialpha for outputting npy file - template - void prepare_phialpha(const int nlocal, - const int nat, - const int nks, - const std::vector>& kvec_d, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - - template - void check_vdp_phialpha(const int nat, const int nks, const int nlocal); + void cal_gedm_equiv(const int nat, const std::vector& descriptor); - // prepare gevdm for outputting npy file - void prepare_gevdm(const int nat, const LCAO_Orbitals& orb); + // calculate gevdm void cal_gevdm(const int nat, std::vector& gevdm); - void check_vdp_gevdm(const int nat); private: const Parallel_Orbitals* pv; - -#ifdef __MPI - - public: - // reduces a dim 2 array - void allsum_deepks(int inlmax, // first dimension - int ndim, // second dimension - double** mat); // the array being reduced -#endif }; namespace GlobalC diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp index 8f2c4d8779..a6547f2187 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_interface.cpp @@ -69,7 +69,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, if (PARAM.inp.deepks_bandgap) { - const int nocc = (PARAM.inp.nelec+1) / 2; + const int nocc = (PARAM.inp.nelec + 1) / 2; std::vector o_tot(nks); for (int iks = 0; iks < nks; ++iks) { @@ -209,35 +209,68 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, if (PARAM.inp.deepks_v_delta == 1) // v_delta_precalc storage method 1 { - ld->cal_v_delta_precalc(nlocal, nat, nks, kvec_d, ucell, orb, GridD); + std::vector gevdm; + ld->cal_gevdm(nat, gevdm); + + torch::Tensor v_delta_precalc; + DeePKS_domain::cal_v_delta_precalc(nlocal, + ld->lmaxd, + ld->inlmax, + nat, + nks, + ld->inl_l, + kvec_d, + ld->phialpha, + gevdm, + ld->inl_index, + ucell, + orb, + *ParaV, + GridD, + v_delta_precalc); LCAO_deepks_io::save_npy_v_delta_precalc(nat, nks, nlocal, ld->des_per_atom, - ld->v_delta_precalc_tensor, + v_delta_precalc, PARAM.globalv.global_out_dir, my_rank); } else if (PARAM.inp.deepks_v_delta == 2) // v_delta_precalc storage method 2 { - ld->prepare_phialpha(nlocal, nat, nks, kvec_d, ucell, orb, GridD); + torch::Tensor phialpha_out; + DeePKS_domain::prepare_phialpha(nlocal, + ld->lmaxd, + ld->inlmax, + nat, + nks, + kvec_d, + ld->phialpha, + ucell, + orb, + *ParaV, + GridD, + phialpha_out); LCAO_deepks_io::save_npy_phialpha(nat, nks, nlocal, ld->inlmax, ld->lmaxd, - ld->phialpha_tensor, + phialpha_out, PARAM.globalv.global_out_dir, my_rank); + std::vector gevdm; + ld->cal_gevdm(nat, gevdm); - ld->prepare_gevdm(nat, orb); + torch::Tensor gevdm_out; + DeePKS_domain::prepare_gevdm(nat, ld->lmaxd, ld->inlmax, orb, gevdm, gevdm_out); LCAO_deepks_io::save_npy_gevdm(nat, ld->inlmax, ld->lmaxd, - ld->gevdm_tensor, + gevdm_out, PARAM.globalv.global_out_dir, my_rank); } @@ -264,9 +297,19 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, ld->check_projected_dm(); // print out the projected dm for NSCF calculaiton - ld->cal_descriptor(nat); // final descriptor - - ld->check_descriptor(ucell, PARAM.globalv.global_out_dir); + std::vector descriptor; + DeePKS_domain::cal_descriptor(nat, + ld->inlmax, + ld->inl_l, + ld->pdm, + descriptor, + ld->des_per_atom); // final descriptor + DeePKS_domain::check_descriptor(ld->inlmax, + ld->des_per_atom, + ld->inl_l, + ucell, + PARAM.globalv.global_out_dir, + descriptor); if (PARAM.inp.deepks_out_labels) { @@ -275,7 +318,7 @@ void LCAO_Deepks_Interface::out_deepks_labels(const double& etot, ld->inlmax, ld->inl_l, PARAM.inp.deepks_equiv, - ld->d_tensor, + descriptor, PARAM.globalv.global_out_dir, GlobalV::MY_RANK); // libnpy needed } diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp index fdf3ba7e38..c0b1b3cd93 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.cpp @@ -100,7 +100,7 @@ void LCAO_deepks_io::save_npy_d(const int nat, const int inlmax, const int* inl_l, const bool deepks_equiv, - const std::vector& d_tensor, + const std::vector& descriptor, const std::string& out_dir, const int rank) { @@ -118,10 +118,11 @@ void LCAO_deepks_io::save_npy_d(const int nat, std::vector npy_des; for (int inl = 0; inl < inlmax; ++inl) { + auto accessor = descriptor[inl].accessor(); int nm = 2 * inl_l[inl] + 1; for (int im = 0; im < nm; im++) { - npy_des.push_back(d_tensor[inl].index({im}).item().toDouble()); + npy_des.push_back(accessor[im]); } } const long unsigned dshape[] = {static_cast(nat), static_cast(des_per_atom)}; @@ -138,9 +139,10 @@ void LCAO_deepks_io::save_npy_d(const int nat, std::vector npy_des; for (int iat = 0; iat < nat; iat++) { + auto accessor = descriptor[iat].accessor(); for (int i = 0; i < des_per_atom; i++) { - npy_des.push_back(d_tensor[iat].index({i}).item().toDouble()); + npy_des.push_back(accessor[i]); } } const long unsigned dshape[] = {static_cast(nat), static_cast(des_per_atom)}; @@ -157,7 +159,7 @@ void LCAO_deepks_io::save_npy_d(const int nat, // saves gvx into grad_vx.npy void LCAO_deepks_io::save_npy_gvx(const int nat, const int des_per_atom, - const torch::Tensor& gvx_tensor, + const torch::Tensor& gvx, const std::string& out_dir, const int rank) { @@ -178,6 +180,7 @@ void LCAO_deepks_io::save_npy_gvx(const int nat, static_cast(des_per_atom)}; std::vector npy_gvx; + auto accessor = gvx.accessor(); for (int ibt = 0; ibt < nat; ++ibt) { for (int i = 0; i < 3; i++) @@ -186,7 +189,7 @@ void LCAO_deepks_io::save_npy_gvx(const int nat, { for (int p = 0; p < des_per_atom; ++p) { - npy_gvx.push_back(gvx_tensor.index({ibt, i, iat, p}).item().toDouble()); + npy_gvx.push_back(accessor[ibt][i][iat][p]); } } } @@ -200,7 +203,7 @@ void LCAO_deepks_io::save_npy_gvx(const int nat, // saves gvx into grad_vepsl.npy void LCAO_deepks_io::save_npy_gvepsl(const int nat, const int des_per_atom, - const torch::Tensor& gvepsl_tensor, + const torch::Tensor& gvepsl, const std::string& out_dir, const int rank) { @@ -216,6 +219,7 @@ void LCAO_deepks_io::save_npy_gvepsl(const int nat, const long unsigned gshape[] = {6UL, static_cast(nat), static_cast(des_per_atom)}; std::vector npy_gvepsl; + auto accessor = gvepsl.accessor(); for (int i = 0; i < 6; i++) { @@ -224,7 +228,7 @@ void LCAO_deepks_io::save_npy_gvepsl(const int nat, for (int p = 0; p < des_per_atom; ++p) { - npy_gvepsl.push_back(gvepsl_tensor.index({i, ibt, p}).item().toDouble()); + npy_gvepsl.push_back(accessor[i][ibt][p]); } } } @@ -341,13 +345,14 @@ void LCAO_deepks_io::save_npy_orbital_precalc(const int nat, = {static_cast(nks), static_cast(nat), static_cast(des_per_atom)}; std::vector npy_orbital_precalc; + auto accessor = orbital_precalc.accessor(); for (int iks = 0; iks < nks; ++iks) { for (int iat = 0; iat < nat; ++iat) { for (int p = 0; p < des_per_atom; ++p) { - npy_orbital_precalc.push_back(orbital_precalc.index({iks, iat, p}).item().toDouble()); + npy_orbital_precalc.push_back(accessor[iks][iat][p]); } } } @@ -394,7 +399,7 @@ void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, const int nks, const int nlocal, const int des_per_atom, - const torch::Tensor& v_delta_precalc_tensor, + const torch::Tensor& v_delta_precalc, const std::string& out_dir, const int rank) { @@ -415,6 +420,9 @@ void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, static_cast(des_per_atom)}; std::vector npy_v_delta_precalc; + auto accessor + = v_delta_precalc + .accessor::value, double, c10::complex>, 5>(); for (int iks = 0; iks < nks; ++iks) { for (int mu = 0; mu < nlocal; ++mu) @@ -427,15 +435,13 @@ void LCAO_deepks_io::save_npy_v_delta_precalc(const int nat, { if constexpr (std::is_same::value) { - npy_v_delta_precalc.push_back( - v_delta_precalc_tensor.index({iks, mu, nu, iat, p}).item().toDouble()); + npy_v_delta_precalc.push_back(accessor[iks][mu][nu][iat][p]); } else { - std::complex value( - torch::real(v_delta_precalc_tensor.index({iks, mu, nu, iat, p})).item(), - torch::imag(v_delta_precalc_tensor.index({iks, mu, nu, iat, p})).item()); - npy_v_delta_precalc.push_back(value); + c10::complex tmp_c10 = accessor[iks][mu][nu][iat][p]; + std::complex tmp = std::complex(tmp_c10.real(), tmp_c10.imag()); + npy_v_delta_precalc.push_back(tmp); } } } @@ -473,6 +479,9 @@ void LCAO_deepks_io::save_npy_phialpha(const int nat, static_cast(nlocal), static_cast(mmax)}; std::vector npy_phialpha; + auto accessor + = phialpha_tensor + .accessor::value, double, c10::complex>, 5>(); for (int iat = 0; iat < nat; iat++) { for (int nl = 0; nl < nlmax; nl++) @@ -485,14 +494,13 @@ void LCAO_deepks_io::save_npy_phialpha(const int nat, { if constexpr (std::is_same::value) { - npy_phialpha.push_back(phialpha_tensor.index({iat, nl, iks, mu, m}).item().toDouble()); + npy_phialpha.push_back(accessor[iat][nl][iks][mu][m]); } else { - std::complex value( - torch::real(phialpha_tensor.index({iat, nl, iks, mu, m})).item(), - torch::imag(phialpha_tensor.index({iat, nl, iks, mu, m})).item()); - npy_phialpha.push_back(value); + c10::complex tmp_c10 = accessor[iat][nl][iks][mu][m]; + std::complex tmp = std::complex(tmp_c10.real(), tmp_c10.imag()); + npy_phialpha.push_back(tmp); } } } @@ -507,7 +515,7 @@ void LCAO_deepks_io::save_npy_phialpha(const int nat, void LCAO_deepks_io::save_npy_gevdm(const int nat, const int inlmax, const int lmaxd, - const torch::Tensor& gevdm_tensor, + const torch::Tensor& gevdm, const std::string& out_dir, const int rank) { @@ -529,6 +537,7 @@ void LCAO_deepks_io::save_npy_gevdm(const int nat, static_cast(mmax), static_cast(mmax)}; std::vector npy_gevdm; + auto accessor = gevdm.accessor(); for (int iat = 0; iat < nat; iat++) { for (int nl = 0; nl < nlmax; nl++) @@ -539,7 +548,7 @@ void LCAO_deepks_io::save_npy_gevdm(const int nat, { for (int n = 0; n < mmax; n++) { - npy_gevdm.push_back(gevdm_tensor.index({iat, nl, v, m, n}).item().toDouble()); + npy_gevdm.push_back(accessor[iat][nl][v][m][n]); } } } diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h index 8c537f1e46..8bd3134007 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_io.h @@ -51,7 +51,7 @@ void save_npy_d(const int nat, const int inlmax, const int* inl_l, const bool deepks_equiv, - const std::vector& d_tensor, + const std::vector& descriptor, const std::string& out_dir, const int rank); @@ -68,7 +68,7 @@ void save_npy_f(const ModuleBase::matrix& f, /**<[in] \f$F_{base}\f$ or \f$F_{to void save_npy_gvx(const int nat, const int des_per_atom, - const torch::Tensor& gvx_tensor, + const torch::Tensor& gvx, const std::string& out_dir, const int rank); @@ -80,7 +80,7 @@ void save_npy_s(const ModuleBase::matrix& stress, /**<[in] \f$S_{base}\f$ or \f$ void save_npy_gvepsl(const int nat, const int des_per_atom, - const torch::Tensor& gvepsl_tensor, + const torch::Tensor& gvepsl, const std::string& out_dir, const int rank); @@ -110,7 +110,7 @@ void save_npy_v_delta_precalc(const int nat, const int nks, const int nlocal, const int des_per_atom, - const torch::Tensor& v_delta_precalc_tensor, + const torch::Tensor& v_delta_precalc, const std::string& out_dir, const int rank); @@ -128,7 +128,7 @@ void save_npy_phialpha(const int nat, void save_npy_gevdm(const int nat, const int inlmax, const int lmaxd, - const torch::Tensor& gevdm_tensor, + const torch::Tensor& gevdm, const std::string& out_dir, const int rank); }; // namespace LCAO_deepks_io diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_mpi.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_mpi.cpp deleted file mode 100644 index 3be7413ac4..0000000000 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_mpi.cpp +++ /dev/null @@ -1,23 +0,0 @@ -//This file contains only one subroutine, allsum_deepks -//which is used to perform allsum on a two-level pointer -//It is used in a few places in the deepks code - -#ifdef __DEEPKS - -#include "LCAO_deepks.h" -#include "module_base/parallel_reduce.h" - -#ifdef __MPI -void LCAO_Deepks::allsum_deepks( - int inlmax, //first dimension - int ndim, //second dimension - double** mat) //the array being reduced -{ - for(int inl=0;inlinlmax; inl++) { int nm = this->inl_l[inl] * 2 + 1; + auto accessor = this->pdm[inl].accessor(); for (int m1 = 0; m1 < nm; m1++) { for (int m2 = 0; m2 < nm; m2++) { double c; ifs >> c; - this->pdm[inl][m1][m2] = c; + accessor[m1][m2] = c; } } } @@ -63,11 +64,12 @@ void LCAO_Deepks::read_projected_DM(bool read_pdm_file, bool is_equiv, const Num pdm_size = nproj * nproj; for (int inl = 0; inl < this->inlmax; inl++) { + auto accessor = this->pdm[inl].accessor(); for (int ind = 0; ind < pdm_size; ind++) { double c; ifs >> c; - this->pdm[inl][ind] = c; + accessor[ind] = c; } } } @@ -324,12 +326,12 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* d const int inl = this->inl_index[T0](I0, L0, N0); const int nm = 2 * L0 + 1; + auto accessor = this->pdm[inl].accessor(); for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - int ind = m1 * nm + m2; - pdm[inl][m1][m2] += ddot_(&row_size, + accessor[m1][m2] += ddot_(&row_size, g_1dmt.data() + index * row_size, &inc, s_1t.data() + index * row_size, @@ -343,6 +345,7 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* d } else { + auto accessor = this->pdm[iat].accessor(); int index = 0, inc = 1; int nproj = 0; for (int il = 0; il < this->lmaxd + 1; il++) @@ -353,7 +356,7 @@ void LCAO_Deepks::cal_projected_DM(const elecstate::DensityMatrix* d { for (int jproj = 0; jproj < nproj; jproj++) { - pdm[iat][iproj * nproj + jproj] += ddot_(&row_size, + accessor[iproj * nproj + jproj] += ddot_(&row_size, g_1dmt.data() + index * row_size, &inc, s_1t.data() + index * row_size, @@ -386,11 +389,12 @@ void LCAO_Deepks::check_projected_dm() for (int inl = 0; inl < inlmax; inl++) { const int nm = 2 * this->inl_l[inl] + 1; + auto accessor = pdm[inl].accessor(); for (int m1 = 0; m1 < nm; m1++) { for (int m2 = 0; m2 < nm; m2++) { - ofs << pdm[inl][m1][m2].item() << " "; + ofs << accessor[m1][m2] << " "; } } ofs << std::endl; diff --git a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp index 5d881f82f9..7ade93876a 100644 --- a/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp +++ b/source/module_hamilt_lcao/module_deepks/LCAO_deepks_torch.cpp @@ -2,16 +2,14 @@ // including loading of model and calculating gradients // as well as subroutines that prints the results for checking -// The file contains 8 subroutines: +// The file contains 3 subroutines: // cal_gvepsl : gvepsl is used for training with stress label, which is derivative of // descriptors wrt strain tensor, calculated by -// d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdm_epsl * gvdm +// d(des)/d\epsilon_{ab} = d(pdm)/d\epsilon_{ab} * d(des)/d(pdm) = gdmepsl * gvdm // using einsum // cal_gevdm : d(des)/d(pdm) // calculated using torch::autograd::grad // load_model : loads model for applying V_delta -// prepare_phialpha : prepare phialpha for outputting npy file -// prepare_gevdm : prepare gevdm for outputting npy file #ifdef __DEEPKS @@ -25,14 +23,16 @@ #include "module_parameter/parameter.h" // calculates stress of descriptors from gradient of projected density matrices -void LCAO_Deepks::cal_gvepsl(const int nat, const std::vector& gevdm) +// gv_epsl:d(d)/d\epsilon_{\alpha\beta}, [natom][6][des_per_atom] +void LCAO_Deepks::cal_gvepsl(const int nat, + const std::vector& gevdm, + const torch::Tensor& gdmepsl, + torch::Tensor& gvepsl) { ModuleBase::TITLE("LCAO_Deepks", "cal_gvepsl"); - if (!gdmepsl_vector.empty()) - { - gdmepsl_vector.erase(gdmepsl_vector.begin(), gdmepsl_vector.end()); - } - // gdmr_vector : nat(derivative) * 3 * inl(projector) * nm * nm + // dD/d\epsilon_{\alpha\beta}, tensor vector form of gdmepsl + std::vector gdmepsl_vector; + auto accessor = gdmepsl.accessor(); if (GlobalV::MY_RANK == 0) { // make gdmx as tensor @@ -40,9 +40,6 @@ void LCAO_Deepks::cal_gvepsl(const int nat, const std::vector& ge for (int nl = 0; nl < nlmax; ++nl) { std::vector bmmv; - // for (int ipol=0;ipol<6;++ipol) - //{ - // std::vector xmmv; for (int i = 0; i < 6; ++i) { std::vector ammv; @@ -55,7 +52,7 @@ void LCAO_Deepks::cal_gvepsl(const int nat, const std::vector& ge { for (int m2 = 0; m2 < nm; ++m2) { - mmv.push_back(this->gdm_epsl[i][inl][m1 * nm + m2]); + mmv.push_back(accessor[i][inl][m1][m2]); } } // nm^2 torch::Tensor mm @@ -65,12 +62,9 @@ void LCAO_Deepks::cal_gvepsl(const int nat, const std::vector& ge torch::Tensor bmm = torch::stack(ammv, 0); // nat*nm*nm bmmv.push_back(bmm); } - // torch::Tensor bmm = torch::stack(xmmv, 0); //3*nat*nm*nm - // bmmv.push_back(bmm); - //} - this->gdmepsl_vector.push_back(torch::stack(bmmv, 0)); // nbt*3*nat*nm*nm + gdmepsl_vector.push_back(torch::stack(bmmv, 0)); // nbt*3*nat*nm*nm } - assert(this->gdmepsl_vector.size() == nlmax); + assert(gdmepsl_vector.size() == nlmax); // einsum for each inl: // gdmepsl_vector : b:npol * a:inl(projector) * m:nm * n:nm @@ -80,15 +74,15 @@ void LCAO_Deepks::cal_gvepsl(const int nat, const std::vector& ge std::vector gvepsl_vector; for (int nl = 0; nl < nlmax; ++nl) { - gvepsl_vector.push_back(at::einsum("bamn, avmn->bav", {this->gdmepsl_vector[nl], gevdm[nl]})); + gvepsl_vector.push_back(at::einsum("bamn, avmn->bav", {gdmepsl_vector[nl], gevdm[nl]})); } // cat nv-> \sum_nl(nv) = \sum_nl(nm_nl)=des_per_atom // concatenate index a(inl) and m(nm) - this->gvepsl_tensor = torch::cat(gvepsl_vector, -1); - assert(this->gvepsl_tensor.size(0) == 6); - assert(this->gvepsl_tensor.size(1) == nat); - assert(this->gvepsl_tensor.size(2) == this->des_per_atom); + gvepsl = torch::cat(gvepsl_vector, -1); + assert(gvepsl.size(0) == 6); + assert(gvepsl.size(1) == nat); + assert(gvepsl.size(2) == this->des_per_atom); } return; @@ -156,289 +150,4 @@ void LCAO_Deepks::load_model(const std::string& deepks_model) return; } -// prepare_phialpha and prepare_gevdm for deepks_v_delta = 2 -template -void LCAO_Deepks::prepare_phialpha(const int nlocal, - const int nat, - const int nks, - const std::vector>& kvec_d, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD) -{ - ModuleBase::TITLE("LCAO_Deepks", "prepare_phialpha"); - int nlmax = this->inlmax / nat; - int mmax = 2 * this->lmaxd + 1; - if constexpr (std::is_same::value) - { - this->phialpha_tensor = torch::zeros({nat, nlmax, nks, nlocal, mmax}, torch::kFloat64); // support gamma-only - } - else - { - this->phialpha_tensor = torch::zeros({nat, nlmax, nks, nlocal, mmax}, torch::kComplexDouble); // support multi-k - } - - // cutoff for alpha is same for all types of atoms - const double Rcut_Alpha = orb.Alpha[0].getRcut(); - - for (int T0 = 0; T0 < ucell.ntype; T0++) - { - Atom* atom0 = &ucell.atoms[T0]; - for (int I0 = 0; I0 < atom0->na; I0++) - { - // iat: atom index on which |alpha> is located - const int iat = ucell.itia2iat(T0, I0); - const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); - - // outermost loop : find all adjacent atoms - for (int ad = 0; ad < GridD.getAdjacentNum() + 1; ++ad) - { - const int T1 = GridD.getType(ad); - const int I1 = GridD.getNatom(ad); - const int ibt = ucell.itia2iat(T1, I1); - const int start1 = ucell.itiaiw2iwt(T1, I1, 0); - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - - const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw * PARAM.globalv.npol; - - const double dist1 = (tau1 - tau0).norm() * ucell.lat0; - - if (dist1 > Rcut_Alpha + Rcut_AO1) - { - continue; - } - - ModuleBase::Vector3 dR(GridD.getBox(ad).x, GridD.getBox(ad).y, GridD.getBox(ad).z); - - if constexpr (std::is_same>::value) - { - if (this->phialpha[0]->find_matrix(iat, ibt, dR.x, dR.y, dR.z) == nullptr) - { - continue; - } - } - - // middle loop : all atomic basis on the adjacent atom ad - for (int iw1 = 0; iw1 < nw1_tot; ++iw1) - { - const int iw1_all = start1 + iw1; - const int iw1_local = pv->global2local_row(iw1_all); - const int iw2_local = pv->global2local_col(iw1_all); - if (iw1_local < 0 || iw2_local < 0) - { - continue; - } - hamilt::BaseMatrix* overlap = phialpha[0]->find_matrix(iat, ibt, dR); - - for (int ik = 0; ik < nks; ik++) - { - std::complex kphase = std::complex(1.0, 0.0); - if constexpr (std::is_same>::value) - { - const double arg = -(kvec_d[ik] * ModuleBase::Vector3(dR)) * ModuleBase::TWO_PI; - double sinp, cosp; - ModuleBase::libm::sincos(arg, &sinp, &cosp); - kphase = std::complex(cosp, sinp); - } - int ib = 0; - int nl = 0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) - { - for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) - { - const int nm = 2 * L0 + 1; - - for (int m1 = 0; m1 < nm; ++m1) // nm = 1 for s, 3 for p, 5 for d - { - if constexpr (std::is_same::value) - { - this->phialpha_tensor[iat][nl][ik][iw1_all][m1] - = overlap->get_value(iw1, ib + m1); - } - else - { - std::complex nlm_phase = overlap->get_value(iw1, ib + m1) * kphase; - torch::Tensor nlm_tensor - = torch::tensor({nlm_phase.real(), nlm_phase.imag()}, torch::kDouble); - torch::Tensor complex_tensor = torch::complex(nlm_tensor[0], nlm_tensor[1]); - this->phialpha_tensor[iat][nl][ik][iw1_all][m1] = complex_tensor; - } - } - ib += nm; - nl++; - } - } - } // end ik - } // end iw - } // end ad - } // end I0 - } // end T0 - -#ifdef __MPI - TK msg[mmax]; - for (int iat = 0; iat < nat; iat++) - { - for (int nl = 0; nl < nlmax; nl++) - { - for (int ik = 0; ik < nks; ik++) - { - for (int mu = 0; mu < nlocal; mu++) - { - for (int m = 0; m < mmax; m++) - { - if constexpr (std::is_same::value) - { - msg[m] = this->phialpha_tensor[iat][nl][ik][mu][m].item().toDouble(); - } - else - { - auto tensor_value = this->phialpha_tensor.index({iat, nl, ik, mu, m}); - msg[m] = std::complex(torch::real(tensor_value).item(), - torch::imag(tensor_value).item()); - } - } - Parallel_Reduce::reduce_all(msg, mmax); - for (int m = 0; m < mmax; m++) - { - if constexpr (std::is_same::value) - { - this->phialpha_tensor[iat][nl][ik][mu][m] = msg[m]; - } - else - { - torch::Tensor msg_tensor = torch::tensor({msg[m].real(), msg[m].imag()}, torch::kDouble); - torch::Tensor complex_tensor = torch::complex(msg_tensor[0], msg_tensor[1]); - this->phialpha_tensor[iat][nl][ik][mu][m] = complex_tensor; - } - } - } - } - } - } - -#endif -} - -template -void LCAO_Deepks::check_vdp_phialpha(const int nat, const int nks, const int nlocal) -{ - std::ofstream ofs("vdp_phialpha.dat"); - ofs << std::setprecision(10); - - int nlmax = this->inlmax / nat; - int mmax = 2 * this->lmaxd + 1; - for (int iat = 0; iat < nat; iat++) - { - for (int nl = 0; nl < nlmax; nl++) - { - for (int iks = 0; iks < nks; iks++) - { - for (int mu = 0; mu < nlocal; mu++) - { - for (int m = 0; m < mmax; m++) - { - if constexpr (std::is_same::value) - { - ofs << this->phialpha_tensor.index({iat, nl, iks, mu, m}).item().toDouble() << " "; - } - else - { - auto tensor_value = this->phialpha_tensor.index({iat, nl, iks, mu, m}); - ofs << std::complex(torch::real(tensor_value).item(), - torch::imag(tensor_value).item()) - << " "; - } - } - } - } - ofs << std::endl; - } - } - ofs.close(); -} - -void LCAO_Deepks::prepare_gevdm(const int nat, const LCAO_Orbitals& orb) -{ - int nlmax = this->inlmax / nat; - int mmax = 2 * this->lmaxd + 1; - this->gevdm_tensor = torch::zeros({nat, nlmax, mmax, mmax, mmax}, torch::TensorOptions().dtype(torch::kFloat64)); - - std::vector gevdm; - this->cal_gevdm(nat, gevdm); - - int nl = 0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) - { - for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) - { - for (int iat = 0; iat < nat; iat++) - { - const int nm = 2 * L0 + 1; - for (int v = 0; v < nm; ++v) // nm = 1 for s, 3 for p, 5 for d - { - for (int m = 0; m < nm; ++m) - { - for (int n = 0; n < nm; ++n) - { - this->gevdm_tensor[iat][nl][v][m][n] = gevdm[nl][iat][v][m][n]; - } - } - } - } - nl++; - } - } - assert(nl == nlmax); -} - -void LCAO_Deepks::check_vdp_gevdm(const int nat) -{ - std::ofstream ofs("vdp_gevdm.dat"); - ofs << std::setprecision(10); - - int nlmax = this->inlmax / nat; - int mmax = 2 * this->lmaxd + 1; - for (int iat = 0; iat < nat; iat++) - { - for (int nl = 0; nl < nlmax; nl++) - { - for (int v = 0; v < mmax; v++) - { - for (int m = 0; m < mmax; m++) - { - for (int n = 0; n < mmax; n++) - { - ofs << this->gevdm_tensor.index({iat, nl, v, m, n}).item().toDouble() << " "; - } - } - } - ofs << std::endl; - } - } - ofs.close(); -} - -template void LCAO_Deepks::prepare_phialpha(const int nlocal, - const int nat, - const int nks, - const std::vector>& kvec_d, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - -template void LCAO_Deepks::prepare_phialpha>( - const int nlocal, - const int nat, - const int nks, - const std::vector>& kvec_d, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - -template void LCAO_Deepks::check_vdp_phialpha(const int nat, const int nks, const int nlocal); -template void LCAO_Deepks::check_vdp_phialpha>(const int nat, const int nks, const int nlocal); - #endif diff --git a/source/module_hamilt_lcao/module_deepks/cal_gdmepsl.cpp b/source/module_hamilt_lcao/module_deepks/cal_gdmepsl.cpp new file mode 100644 index 0000000000..ecba99b1f3 --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/cal_gdmepsl.cpp @@ -0,0 +1,263 @@ +#ifdef __DEEPKS + +#include "LCAO_deepks.h" +#include "module_base/constants.h" +#include "module_base/libm/libm.h" +#include "module_base/parallel_reduce.h" +#include "module_base/timer.h" +#include "module_base/vector3.h" +#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" +#include "module_parameter/parameter.h" + +/// this subroutine calculates the gradient of PDM wrt strain tensor: +/// gdmepsl = d/d\epsilon_{ab} * +/// sum_{mu,nu} rho_{mu,nu} + +// There are 2 subroutines in this file: +// 1. cal_gdmepsl, calculating gdmepsl +// 2. check_gdmepsl, which prints gdmepsl to a series of .dat files + +template +void LCAO_Deepks::cal_gdmepsl(const std::vector>& dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const int nks, + const std::vector>& kvec_d, + std::vector*> phialpha, + torch::Tensor& gdmepsl) +{ + ModuleBase::TITLE("LCAO_Deepks", "cal_gdmepsl"); + ModuleBase::timer::tick("LCAO_Deepks", "cal_gdmepsl"); + // get DS_alpha_mu and S_nu_beta + + int nrow = this->pv->nrow; + const int nm = 2 * lmaxd + 1; + // gdmepsl: dD/d\epsilon_{\alpha\beta} + // size: [6][tot_Inl][2l+1][2l+1] + gdmepsl = torch::zeros({6, inlmax, nm, nm}, torch::dtype(torch::kFloat64)); + auto accessor = gdmepsl.accessor(); + + const double Rcut_Alpha = orb.Alpha[0].getRcut(); + + for (int T0 = 0; T0 < ucell.ntype; T0++) + { + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) + { + const int iat = ucell.itia2iat(T0, I0); // on which alpha is located + const ModuleBase::Vector3 tau0 = atom0->tau[I0]; + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); + + for (int ad1 = 0; ad1 < GridD.getAdjacentNum() + 1; ++ad1) + { + const int T1 = GridD.getType(ad1); + const int I1 = GridD.getNatom(ad1); + const int ibt1 = ucell.itia2iat(T1, I1); // on which chi_mu is located + const int start1 = ucell.itiaiw2iwt(T1, I1, 0); + + const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad1); + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + + ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); + + for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) + { + const int T2 = GridD.getType(ad2); + const int I2 = GridD.getNatom(ad2); + const int start2 = ucell.itiaiw2iwt(T2, I2, 0); + const int ibt2 = ucell.itia2iat(T2, I2); + const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); + const Atom* atom2 = &ucell.atoms[T2]; + const int nw2_tot = atom2->nw * PARAM.globalv.npol; + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); + + const double Rcut_AO2 = orb.Phi[T2].getRcut(); + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; + const double dist2 = (tau2 - tau0).norm() * ucell.lat0; + + if (dist1 > Rcut_Alpha + Rcut_AO1 || dist2 > Rcut_Alpha + Rcut_AO2) + { + continue; + } + + double r0[3]; + double r1[3]; + r1[0] = (tau1.x - tau0.x); + r1[1] = (tau1.y - tau0.y); + r1[2] = (tau1.z - tau0.z); + r0[0] = (tau2.x - tau0.x); + r0[1] = (tau2.y - tau0.y); + r0[2] = (tau2.z - tau0.z); + auto row_indexes = pv->get_indexes_row(ibt1); + auto col_indexes = pv->get_indexes_col(ibt2); + if (row_indexes.size() * col_indexes.size() == 0) + { + continue; + } + + double* dm_current; + int dRx; + int dRy; + int dRz; + if constexpr (std::is_same::value) + { + dRx = 0; + dRy = 0; + dRz = 0; + } + else + { + dRx = (dR2 - dR1).x; + dRy = (dR2 - dR1).y; + dRz = (dR2 - dR1).z; + } + ModuleBase::Vector3 dR(dRx, dRy, dRz); + + hamilt::AtomPair dm_pair(ibt1, ibt2, dRx, dRy, dRz, pv); + dm_pair.allocate(nullptr, 1); + for (int ik = 0; ik < nks; ik++) + { + TK kphase; + if constexpr (std::is_same::value) + { + kphase = 1.0; + } + else + { + const double arg = -(kvec_d[ik] * dR) * ModuleBase::TWO_PI; + double sinp, cosp; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + kphase = TK(cosp, sinp); + } + if (ModuleBase::GlobalFunc::IS_COLUMN_MAJOR_KS_SOLVER(PARAM.inp.ks_solver)) + { + dm_pair.add_from_matrix(dm[ik].data(), pv->get_row_size(), kphase, 1); + } + else + { + dm_pair.add_from_matrix(dm[ik].data(), pv->get_col_size(), kphase, 0); + } + } + + dm_current = dm_pair.get_pointer(); + + for (int iw1 = 0; iw1 < row_indexes.size(); ++iw1) + { + for (int iw2 = 0; iw2 < col_indexes.size(); ++iw2) + { + hamilt::BaseMatrix* overlap_1 = phialpha[0]->find_matrix(iat, ibt1, dR1); + hamilt::BaseMatrix* overlap_2 = phialpha[0]->find_matrix(iat, ibt2, dR2); + std::vector*> grad_overlap_1(3); + std::vector*> grad_overlap_2(3); + + assert(overlap_1->get_col_size() == overlap_2->get_col_size()); + + for (int i = 0; i < 3; ++i) + { + grad_overlap_1[i] = phialpha[i + 1]->find_matrix(iat, ibt1, dR1); + grad_overlap_2[i] = phialpha[i + 1]->find_matrix(iat, ibt2, dR2); + } + + int ib = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + { + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + { + const int inl = this->inl_index[T0](I0, L0, N0); + const int nm = 2 * L0 + 1; + for (int m1 = 0; m1 < nm; ++m1) + { + for (int m2 = 0; m2 < nm; ++m2) + { + int mm = 0; + for (int ipol = 0; ipol < 3; ipol++) + { + for (int jpol = ipol; jpol < 3; jpol++) + { + accessor[mm][inl][m2][m1] + += ucell.lat0 * *dm_current + * (grad_overlap_2[jpol]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) + * r0[ipol]); + accessor[mm][inl][m2][m1] + += ucell.lat0 * *dm_current + * (overlap_2->get_value(col_indexes[iw2], ib + m1) + * grad_overlap_1[jpol]->get_value(row_indexes[iw1], + ib + m2) + * r1[ipol]); + mm++; + } + } + } + } + ib += nm; + } + } + assert(ib == overlap_1->get_col_size()); + dm_current++; + } // iw2 + } // iw1 + } // ad2 + } // ad1 + } // I0 + } // T0 + +#ifdef __MPI + Parallel_Reduce::reduce_all(gdmepsl.data_ptr(), 6 * inlmax * nm * nm); +#endif + ModuleBase::timer::tick("LCAO_Deepks", "cal_gdmepsl"); + return; +} + +void LCAO_Deepks::check_gdmepsl(const torch::Tensor& gdmepsl) +{ + std::stringstream ss; + std::ofstream ofs; + + ofs << std::setprecision(10); + + const int nm = 2 * this->lmaxd + 1; + auto accessor = gdmepsl.accessor(); + for (int i = 0; i < 6; i++) + { + ss.str(""); + ss << "gdmepsl_" << i << ".dat"; + ofs.open(ss.str().c_str()); + + for (int inl = 0; inl < inlmax; inl++) + { + for (int m1 = 0; m1 < nm; m1++) + { + for (int m2 = 0; m2 < nm; m2++) + { + ofs << accessor[i][inl][m1][m2] << " "; + } + } + ofs << std::endl; + } + ofs.close(); + } +} + +template void LCAO_Deepks::cal_gdmepsl(const std::vector>& dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const int nks, + const std::vector>& kvec_d, + std::vector*> phialpha, + torch::Tensor& gdmepsl); + +template void LCAO_Deepks::cal_gdmepsl>(const std::vector>>& dm, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Grid_Driver& GridD, + const int nks, + const std::vector>& kvec_d, + std::vector*> phialpha, + torch::Tensor& gdmepsl); + +#endif diff --git a/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp b/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp index 6a3b47df45..4dc151af64 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp +++ b/source/module_hamilt_lcao/module_deepks/cal_gdmx.cpp @@ -3,6 +3,7 @@ #include "LCAO_deepks.h" #include "module_base/constants.h" #include "module_base/libm/libm.h" +#include "module_base/parallel_reduce.h" #include "module_base/timer.h" #include "module_base/vector3.h" #include "module_hamilt_lcao/module_hcontainer/atom_pair.h" @@ -10,13 +11,9 @@ /// this subroutine calculates the gradient of projected density matrices /// gdmx_m,m = d/dX sum_{mu,nu} rho_{mu,nu} -/// if stress label is enabled, the gradient of PDM wrt strain tensor will -/// be calculated: -/// gdm_epsl = d/d\epsilon_{ab} * -/// sum_{mu,nu} rho_{mu,nu} // There are 2 subroutines in this file: -// 1. cal_gdmx, calculating gdmx (and optionally gdm_epsl for stress) for gamma point +// 1. cal_gdmx, calculating gdmx // 2. check_gdmx, which prints gdmx to a series of .dat files template @@ -27,34 +24,19 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, const int nks, const std::vector>& kvec_d, std::vector*> phialpha, - const bool isstress) + torch::Tensor& gdmx) { ModuleBase::TITLE("LCAO_Deepks", "cal_gdmx"); ModuleBase::timer::tick("LCAO_Deepks", "cal_gdmx"); // get DS_alpha_mu and S_nu_beta - int size = (2 * lmaxd + 1) * (2 * lmaxd + 1); int nrow = this->pv->nrow; - for (int iat = 0; iat < ucell.nat; iat++) - { - for (int inl = 0; inl < inlmax; inl++) - { - ModuleBase::GlobalFunc::ZEROS(gdmx[iat][inl], size); - ModuleBase::GlobalFunc::ZEROS(gdmy[iat][inl], size); - ModuleBase::GlobalFunc::ZEROS(gdmz[iat][inl], size); - } - } - - if (isstress) - { - for (int ipol = 0; ipol < 6; ipol++) - { - for (int inl = 0; inl < inlmax; inl++) - { - ModuleBase::GlobalFunc::ZEROS(gdm_epsl[ipol][inl], size); - } - } - } + const int nm = 2 * lmaxd + 1; + // gdmx: dD/dX + // \sum_{mu,nu} 2*c_mu*c_nu * + // size: [3][natom][tot_Inl][2l+1][2l+1] + gdmx = torch::zeros({3, ucell.nat, inlmax, nm, nm}, torch::dtype(torch::kFloat64)); + auto accessor = gdmx.accessor(); const double Rcut_Alpha = orb.Alpha[0].getRcut(); @@ -101,17 +83,6 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, continue; } - double r0[3]; - double r1[3]; - if (isstress) - { - r1[0] = (tau1.x - tau0.x); - r1[1] = (tau1.y - tau0.y); - r1[2] = (tau1.z - tau0.z); - r0[0] = (tau2.x - tau0.x); - r0[1] = (tau2.y - tau0.y); - r0[2] = (tau2.z - tau0.z); - } auto row_indexes = pv->get_indexes_row(ibt1); auto col_indexes = pv->get_indexes_col(ibt2); if (row_indexes.size() * col_indexes.size() == 0) @@ -193,68 +164,29 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, { for (int m2 = 0; m2 < nm; ++m2) { - //() - gdmx[iat][inl][m1 * nm + m2] - += grad_overlap_2[0]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - gdmy[iat][inl][m1 * nm + m2] - += grad_overlap_2[1]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - gdmz[iat][inl][m1 * nm + m2] - += grad_overlap_2[2]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - - //() - gdmx[iat][inl][m2 * nm + m1] - += grad_overlap_2[0]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - gdmy[iat][inl][m2 * nm + m1] - += grad_overlap_2[1]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - gdmz[iat][inl][m2 * nm + m1] - += grad_overlap_2[2]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - - //() = -() - gdmx[ibt2][inl][m1 * nm + m2] - -= grad_overlap_2[0]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - gdmy[ibt2][inl][m1 * nm + m2] - -= grad_overlap_2[1]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - gdmz[ibt2][inl][m1 * nm + m2] - -= grad_overlap_2[2]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - - //() = -() - gdmx[ibt2][inl][m2 * nm + m1] - -= grad_overlap_2[0]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - gdmy[ibt2][inl][m2 * nm + m1] - -= grad_overlap_2[1]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - gdmz[ibt2][inl][m2 * nm + m1] - -= grad_overlap_2[2]->get_value(col_indexes[iw2], ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; - - if (isstress) + for (int i = 0; i < 3; i++) { - int mm = 0; - for (int ipol = 0; ipol < 3; ipol++) - { - for (int jpol = ipol; jpol < 3; jpol++) - { - gdm_epsl[mm][inl][m2 * nm + m1] - += ucell.lat0 * *dm_current - * (grad_overlap_2[jpol]->get_value(col_indexes[iw2], - ib + m2) - * overlap_1->get_value(row_indexes[iw1], ib + m1) - * r0[ipol]); - mm++; - } - } + //() + accessor[i][iat][inl][m1][m2] + += grad_overlap_2[i]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + + //() + accessor[i][iat][inl][m2][m1] + += grad_overlap_2[i]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + + // () = -() + accessor[i][ibt2][inl][m1][m2] + -= grad_overlap_2[i]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; + + //() = -() + accessor[i][ibt2][inl][m2][m1] + -= grad_overlap_2[i]->get_value(col_indexes[iw2], ib + m2) + * overlap_1->get_value(row_indexes[iw1], ib + m1) * *dm_current; } } } @@ -262,39 +194,6 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, } } assert(ib == overlap_1->get_col_size()); - if (isstress) - { - int ib = 0; - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) - { - for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) - { - const int inl = this->inl_index[T0](I0, L0, N0); - const int nm = 2 * L0 + 1; - for (int m1 = 0; m1 < nm; ++m1) - { - for (int m2 = 0; m2 < nm; ++m2) - { - int mm = 0; - for (int ipol = 0; ipol < 3; ipol++) - { - for (int jpol = ipol; jpol < 3; jpol++) - { - gdm_epsl[mm][inl][m2 * nm + m1] - += ucell.lat0 * *dm_current - * (overlap_2->get_value(col_indexes[iw2], ib + m1) - * grad_overlap_1[jpol]->get_value(row_indexes[iw1], - ib + m2) - * r1[ipol]); - mm++; - } - } - } - } - ib += nm; - } - } - } dm_current++; } // iw2 } // iw1 @@ -304,25 +203,13 @@ void LCAO_Deepks::cal_gdmx(const std::vector>& dm, } // T0 #ifdef __MPI - for (int iat = 0; iat < ucell.nat; iat++) - { - allsum_deepks(this->inlmax, size, this->gdmx[iat]); - allsum_deepks(this->inlmax, size, this->gdmy[iat]); - allsum_deepks(this->inlmax, size, this->gdmz[iat]); - } - if (isstress) - { - for (int ipol = 0; ipol < 6; ipol++) - { - allsum_deepks(this->inlmax, size, this->gdm_epsl[ipol]); - } - } + Parallel_Reduce::reduce_all(gdmx.data_ptr(), 3 * ucell.nat * inlmax * nm * nm); #endif ModuleBase::timer::tick("LCAO_Deepks", "cal_gdmx"); return; } -void LCAO_Deepks::check_gdmx(const int nat) +void LCAO_Deepks::check_gdmx(const int nat, const torch::Tensor& gdmx) { std::stringstream ss; std::ofstream ofs_x; @@ -333,7 +220,8 @@ void LCAO_Deepks::check_gdmx(const int nat) ofs_y << std::setprecision(10); ofs_z << std::setprecision(10); - const int pdm_size = (this->lmaxd * 2 + 1) * (this->lmaxd * 2 + 1); + const int nm = 2 * this->lmaxd + 1; + auto accessor = gdmx.accessor(); for (int ia = 0; ia < nat; ia++) { ss.str(""); @@ -348,11 +236,14 @@ void LCAO_Deepks::check_gdmx(const int nat) for (int inl = 0; inl < inlmax; inl++) { - for (int ind = 0; ind < pdm_size; ind++) + for (int m1 = 0; m1 < nm; m1++) { - ofs_x << gdmx[ia][inl][ind] << " "; - ofs_y << gdmy[ia][inl][ind] << " "; - ofs_z << gdmz[ia][inl][ind] << " "; + for (int m2 = 0; m2 < nm; m2++) + { + ofs_x << accessor[0][ia][inl][m1][m2] << " "; + ofs_y << accessor[1][ia][inl][m1][m2] << " "; + ofs_z << accessor[2][ia][inl][m1][m2] << " "; + } } ofs_x << std::endl; ofs_y << std::endl; @@ -371,7 +262,7 @@ template void LCAO_Deepks::cal_gdmx(const std::vector>& kvec_d, std::vector*> phialpha, - const bool isstress); + torch::Tensor& gdmx); template void LCAO_Deepks::cal_gdmx>(const std::vector>>& dm, const UnitCell& ucell, @@ -380,6 +271,6 @@ template void LCAO_Deepks::cal_gdmx>(const std::vector>& kvec_d, std::vector*> phialpha, - const bool isstress); + torch::Tensor& gdmx); #endif diff --git a/source/module_hamilt_lcao/module_deepks/cal_gedm.cpp b/source/module_hamilt_lcao/module_deepks/cal_gedm.cpp index d35972205b..3f0b2cf025 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_gedm.cpp +++ b/source/module_hamilt_lcao/module_deepks/cal_gedm.cpp @@ -68,7 +68,7 @@ inline void generate_py_files(const int lmaxd, const int nmaxd, const std::strin } } -void LCAO_Deepks::cal_gedm_equiv(const int nat) +void LCAO_Deepks::cal_gedm_equiv(const int nat, const std::vector& descriptor) { ModuleBase::TITLE("LCAO_Deepks", "cal_gedm_equiv"); @@ -77,7 +77,7 @@ void LCAO_Deepks::cal_gedm_equiv(const int nat) this->inlmax, this->inl_l, PARAM.inp.deepks_equiv, - this->d_tensor, + descriptor, PARAM.globalv.global_out_dir, GlobalV::MY_RANK); // libnpy needed @@ -99,12 +99,12 @@ void LCAO_Deepks::cal_gedm_equiv(const int nat) } // obtain from the machine learning model dE_delta/dDescriptor -void LCAO_Deepks::cal_gedm(const int nat) +void LCAO_Deepks::cal_gedm(const int nat, const std::vector& descriptor) { if (PARAM.inp.deepks_equiv) { - this->cal_gedm_equiv(nat); + this->cal_gedm_equiv(nat, descriptor); return; } @@ -114,10 +114,10 @@ void LCAO_Deepks::cal_gedm(const int nat) std::vector inputs; // input_dim:(natom, des_per_atom) - inputs.push_back(torch::cat(this->d_tensor, 0).reshape({1, nat, this->des_per_atom})); + inputs.push_back(torch::cat(descriptor, 0).reshape({1, nat, this->des_per_atom})); std::vector ec; ec.push_back(module.forward(inputs).toTensor()); // Hartree - this->E_delta = ec[0].item().toDouble() * 2; // Ry; *2 is for Hartree to Ry + this->E_delta = ec[0].item() * 2; // Ry; *2 is for Hartree to Ry // cal gedm std::vector gedm_shell; @@ -133,13 +133,14 @@ void LCAO_Deepks::cal_gedm(const int nat) for (int inl = 0; inl < inlmax; ++inl) { int nm = 2 * inl_l[inl] + 1; + auto accessor = this->gedm_tensor[inl].accessor(); for (int m1 = 0; m1 < nm; ++m1) { for (int m2 = 0; m2 < nm; ++m2) { int index = m1 * nm + m2; //*2 is for Hartree to Ry - this->gedm[inl][index] = this->gedm_tensor[inl].index({m1, m2}).item().toDouble() * 2; + this->gedm[inl][index] = accessor[m1][m2] * 2; } } } diff --git a/source/module_hamilt_lcao/module_deepks/cal_gvx.cpp b/source/module_hamilt_lcao/module_deepks/cal_gvx.cpp index cec0f1d84a..874c4b990f 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_gvx.cpp +++ b/source/module_hamilt_lcao/module_deepks/cal_gvx.cpp @@ -16,16 +16,17 @@ // calculates gradient of descriptors from gradient of projected density // matrices -void LCAO_Deepks::cal_gvx(const int nat, const std::vector& gevdm) +void LCAO_Deepks::cal_gvx(const int nat, + const std::vector& gevdm, + const torch::Tensor& gdmx, + torch::Tensor& gvx) { ModuleBase::TITLE("LCAO_Deepks", "cal_gvx"); - if (!gdmr_vector.empty()) - { - gdmr_vector.erase(gdmr_vector.begin(), gdmr_vector.end()); - } + // gdmr : nat(derivative) * 3 * inl(projector) * nm * nm + std::vector gdmr; + auto accessor = gdmx.accessor(); - // gdmr_vector : nat(derivative) * 3 * inl(projector) * nm * nm if (GlobalV::MY_RANK == 0) { // make gdmx as tensor @@ -48,18 +49,7 @@ void LCAO_Deepks::cal_gvx(const int nat, const std::vector& gevdm { for (int m2 = 0; m2 < nm; ++m2) { - if (i == 0) - { - mmv.push_back(this->gdmx[ibt][inl][m1 * nm + m2]); - } - if (i == 1) - { - mmv.push_back(this->gdmy[ibt][inl][m1 * nm + m2]); - } - if (i == 2) - { - mmv.push_back(this->gdmz[ibt][inl][m1 * nm + m2]); - } + mmv.push_back(accessor[i][ibt][inl][m1][m2]); } } // nm^2 torch::Tensor mm = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64)) @@ -72,45 +62,49 @@ void LCAO_Deepks::cal_gvx(const int nat, const std::vector& gevdm torch::Tensor bmm = torch::stack(xmmv, 0); // 3*nat*nm*nm bmmv.push_back(bmm); } - this->gdmr_vector.push_back(torch::stack(bmmv, 0)); // nbt*3*nat*nm*nm + gdmr.push_back(torch::stack(bmmv, 0)); // nbt*3*nat*nm*nm } - assert(this->gdmr_vector.size() == nlmax); + assert(gdmr.size() == nlmax); // einsum for each inl: - // gdmr_vector : b:nat(derivative) * x:3 * a:inl(projector) * m:nm * + // gdmr : b:nat(derivative) * x:3 * a:inl(projector) * m:nm * // n:nm gevdm : a:inl * v:nm (descriptor) * m:nm (pdm, dim1) * // n:nm (pdm, dim2) gvx_vector : b:nat(derivative) * x:3 * // a:inl(projector) * m:nm(descriptor) std::vector gvx_vector; for (int nl = 0; nl < nlmax; ++nl) { - gvx_vector.push_back(at::einsum("bxamn, avmn->bxav", {this->gdmr_vector[nl], gevdm[nl]})); + gvx_vector.push_back(at::einsum("bxamn, avmn->bxav", {gdmr[nl], gevdm[nl]})); } // cat nv-> \sum_nl(nv) = \sum_nl(nm_nl)=des_per_atom // concatenate index a(inl) and m(nm) - this->gvx_tensor = torch::cat(gvx_vector, -1); + // gvx:d(d)/dX, size: [natom][3][natom][des_per_atom] + gvx = torch::cat(gvx_vector, -1); - assert(this->gvx_tensor.size(0) == nat); - assert(this->gvx_tensor.size(1) == 3); - assert(this->gvx_tensor.size(2) == nat); - assert(this->gvx_tensor.size(3) == this->des_per_atom); + assert(gvx.size(0) == nat); + assert(gvx.size(1) == 3); + assert(gvx.size(2) == nat); + assert(gvx.size(3) == this->des_per_atom); } return; } -void LCAO_Deepks::check_gvx(const int nat) +void LCAO_Deepks::check_gvx(const int nat, const torch::Tensor& gvx) { std::stringstream ss; std::ofstream ofs_x; std::ofstream ofs_y; std::ofstream ofs_z; - ofs_x << std::setprecision(12); - ofs_y << std::setprecision(12); - ofs_z << std::setprecision(12); + if (GlobalV::MY_RANK != 0) + { + return; + } + + auto accessor = gvx.accessor(); for (int ia = 0; ia < nat; ia++) { @@ -132,12 +126,10 @@ void LCAO_Deepks::check_gvx(const int nat) { for (int inl = 0; inl < inlmax / nat; inl++) { - int nm = 2 * inl_l[inl] + 1; { - const int ind = ib * inlmax / nat + inl; - ofs_x << gvx_tensor.index({ia, 0, ib, inl}).item().toDouble() << " "; - ofs_y << gvx_tensor.index({ia, 1, ib, inl}).item().toDouble() << " "; - ofs_z << gvx_tensor.index({ia, 2, ib, inl}).item().toDouble() << " "; + ofs_x << accessor[ia][0][ib][inl] << " "; + ofs_y << accessor[ia][1][ib][inl] << " "; + ofs_z << accessor[ia][2][ib][inl] << " "; } } ofs_x << std::endl; diff --git a/source/module_hamilt_lcao/module_deepks/cal_descriptor.cpp b/source/module_hamilt_lcao/module_deepks/deepks_descriptor.cpp similarity index 51% rename from source/module_hamilt_lcao/module_deepks/cal_descriptor.cpp rename to source/module_hamilt_lcao/module_deepks/deepks_descriptor.cpp index e58473ec24..edc21fe494 100644 --- a/source/module_hamilt_lcao/module_deepks/cal_descriptor.cpp +++ b/source/module_hamilt_lcao/module_deepks/deepks_descriptor.cpp @@ -1,10 +1,12 @@ /// 1. cal_descriptor : obtains descriptors which are eigenvalues of pdm /// by calling torch::linalg::eigh /// 2. check_descriptor : prints descriptor for checking +/// 3. cal_descriptor_equiv : calculates descriptor in equivalent version #ifdef __DEEPKS -#include "LCAO_deepks.h" +#include "deepks_descriptor.h" + #include "LCAO_deepks_io.h" // mohan add 2024-07-22 #include "module_base/blas_connector.h" #include "module_base/constants.h" @@ -13,70 +15,71 @@ #include "module_hamilt_lcao/module_hcontainer/atom_pair.h" #include "module_parameter/parameter.h" -void LCAO_Deepks::cal_descriptor_equiv(const int nat) +void DeePKS_domain::cal_descriptor_equiv(const int nat, + const int des_per_atom, + const std::vector& pdm, + std::vector& descriptor) { - ModuleBase::TITLE("LCAO_Deepks", "cal_descriptor_equiv"); - ModuleBase::timer::tick("LCAO_Deepks", "cal_descriptor_equiv"); - - // a rather unnecessary way of writing this, but I'll do it for now - if (!this->d_tensor.empty()) - { - this->d_tensor.erase(this->d_tensor.begin(), this->d_tensor.end()); - } + ModuleBase::TITLE("DeePKS_domain", "cal_descriptor_equiv"); + ModuleBase::timer::tick("DeePKS_domain", "cal_descriptor_equiv"); + assert(des_per_atom > 0); for (int iat = 0; iat < nat; iat++) { auto tmp = torch::zeros(des_per_atom, torch::kFloat64); std::memcpy(tmp.data_ptr(), pdm[iat].data_ptr(), sizeof(double) * tmp.numel()); - this->d_tensor.push_back(tmp); + descriptor.push_back(tmp); } - ModuleBase::timer::tick("LCAO_Deepks", "cal_descriptor_equiv"); + ModuleBase::timer::tick("DeePKS_domain", "cal_descriptor_equiv"); } // calculates descriptors from projected density matrices -void LCAO_Deepks::cal_descriptor(const int nat) +void DeePKS_domain::cal_descriptor(const int nat, + const int inlmax, + const int* inl_l, + const std::vector& pdm, + std::vector& descriptor, + const int des_per_atom = -1) { - ModuleBase::TITLE("LCAO_Deepks", "cal_descriptor"); - ModuleBase::timer::tick("LCAO_Deepks", "cal_descriptor"); + ModuleBase::TITLE("DeePKS_domain", "cal_descriptor"); + ModuleBase::timer::tick("DeePKS_domain", "cal_descriptor"); if (PARAM.inp.deepks_equiv) { - this->cal_descriptor_equiv(nat); + DeePKS_domain::cal_descriptor_equiv(nat, des_per_atom, pdm, descriptor); return; } - // init d_tensor - // if d_tensor is not empty, clear it !! - if (!this->d_tensor.empty()) - { - this->d_tensor.erase(this->d_tensor.begin(), this->d_tensor.end()); - } - - for (int inl = 0; inl < this->inlmax; ++inl) + for (int inl = 0; inl < inlmax; ++inl) { const int nm = 2 * inl_l[inl] + 1; - this->pdm[inl].requires_grad_(true); - this->d_tensor.push_back(torch::ones({nm}, torch::requires_grad(true))); + pdm[inl].requires_grad_(true); + descriptor.push_back(torch::ones({nm}, torch::requires_grad(true))); } - // cal d_tensor + // cal descriptor for (int inl = 0; inl < inlmax; ++inl) { torch::Tensor vd; - std::tuple d_v(this->d_tensor[inl], vd); + std::tuple d_v(descriptor[inl], vd); // d_v = torch::symeig(pdm[inl], /*eigenvalues=*/true, // /*upper=*/true); d_v = torch::linalg::eigh(pdm[inl], /*uplo*/ "U"); - d_tensor[inl] = std::get<0>(d_v); + descriptor[inl] = std::get<0>(d_v); } - ModuleBase::timer::tick("LCAO_Deepks", "cal_descriptor"); + ModuleBase::timer::tick("DeePKS_domain", "cal_descriptor"); return; } -void LCAO_Deepks::check_descriptor(const UnitCell& ucell, const std::string& out_dir) +void DeePKS_domain::check_descriptor(const int inlmax, + const int des_per_atom, + const int* inl_l, + const UnitCell& ucell, + const std::string& out_dir, + const std::vector& descriptor) { - ModuleBase::TITLE("LCAO_Deepks", "check_descriptor"); + ModuleBase::TITLE("DeePKS_domain", "check_descriptor"); if (GlobalV::MY_RANK != 0) { @@ -95,17 +98,17 @@ void LCAO_Deepks::check_descriptor(const UnitCell& ucell, const std::string& out for (int ia = 0; ia < ucell.atoms[it].na; ia++) { int iat = ucell.itia2iat(it, ia); - ofs << ucell.atoms[it].label << " atom_index " << ia + 1 << " n_descriptor " << this->des_per_atom + ofs << ucell.atoms[it].label << " atom_index " << ia + 1 << " n_descriptor " << des_per_atom << std::endl; int id = 0; for (int inl = 0; inl < inlmax / ucell.nat; inl++) { int nm = 2 * inl_l[inl] + 1; + const int ind = iat * inlmax / ucell.nat + inl; + auto accessor = descriptor[ind].accessor(); for (int im = 0; im < nm; im++) { - const int ind = iat * inlmax / ucell.nat + inl; - ofs << d_tensor[ind].index({im}).item().toDouble() << " "; - + ofs << accessor[im] << " "; if (id % 8 == 7) { ofs << std::endl; @@ -122,11 +125,11 @@ void LCAO_Deepks::check_descriptor(const UnitCell& ucell, const std::string& out for (int iat = 0; iat < ucell.nat; iat++) { const int it = ucell.iat2it[iat]; - ofs << ucell.atoms[it].label << " atom_index " << iat + 1 << " n_descriptor " << this->des_per_atom - << std::endl; - for (int i = 0; i < this->des_per_atom; i++) + ofs << ucell.atoms[it].label << " atom_index " << iat + 1 << " n_descriptor " << des_per_atom << std::endl; + auto accessor = descriptor[iat].accessor(); + for (int i = 0; i < des_per_atom; i++) { - ofs << this->pdm[iat][i].item() << " "; + ofs << accessor[i] << " "; if (i % 8 == 7) { ofs << std::endl; diff --git a/source/module_hamilt_lcao/module_deepks/deepks_descriptor.h b/source/module_hamilt_lcao/module_deepks/deepks_descriptor.h new file mode 100644 index 0000000000..4466cff79b --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/deepks_descriptor.h @@ -0,0 +1,51 @@ +#ifndef DEEPKS_DESCRIPTOR_H +#define DEEPKS_DESCRIPTOR_H + +#ifdef __DEEPKS + +#include "module_base/intarray.h" +#include "module_base/timer.h" +#include "module_cell/unitcell.h" + +#include +#include + +namespace DeePKS_domain +{ +//------------------------ +// deepks_descriptor.cpp +//------------------------ + +// This file contains interfaces with libtorch, +// including loading of model and calculating gradients +// as well as subroutines that prints the results for checking + +// The file contains 8 subroutines: +// 1. cal_descriptor : obtains descriptors which are eigenvalues of pdm +// by calling torch::linalg::eigh +// 2. check_descriptor : prints descriptor for checking +// 3. cal_descriptor_equiv : calculates descriptor in equivalent version + +/// Calculates descriptors +/// which are eigenvalues of pdm in blocks of I_n_l +void cal_descriptor(const int nat, + const int inlmax, + const int* inl_l, + const std::vector& pdm, + std::vector& descriptor, + const int des_per_atom); +/// print descriptors based on LCAO basis +void check_descriptor(const int inlmax, + const int des_per_atom, + const int* inl_l, + const UnitCell& ucell, + const std::string& out_dir, + const std::vector& descriptor); + +void cal_descriptor_equiv(const int nat, + const int des_per_atom, + const std::vector& pdm, + std::vector& descriptor); +} // namespace DeePKS_domain +#endif +#endif \ No newline at end of file diff --git a/source/module_hamilt_lcao/module_deepks/deepks_orbpre.cpp b/source/module_hamilt_lcao/module_deepks/deepks_orbpre.cpp index 8d48b981c0..8c912bece8 100644 --- a/source/module_hamilt_lcao/module_deepks/deepks_orbpre.cpp +++ b/source/module_hamilt_lcao/module_deepks/deepks_orbpre.cpp @@ -40,6 +40,7 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, torch::Tensor orbital_pdm = torch::zeros({nks, inlmax, (2 * lmaxd + 1), (2 * lmaxd + 1)}, torch::dtype(torch::kFloat64)); + auto accessor = orbital_pdm.accessor(); for (int T0 = 0; T0 < ucell.ntype; T0++) { @@ -275,11 +276,11 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - orbital_pdm[ik][inl][m1][m2] += ddot_(&row_size, - p_g1dmt + index * row_size * nks, - &inc, - s_1t.data() + index * row_size, - &inc); + accessor[ik][inl][m1][m2] += ddot_(&row_size, + p_g1dmt + index * row_size * nks, + &inc, + s_1t.data() + index * row_size, + &inc); index++; } } @@ -291,14 +292,8 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, } } #ifdef __MPI - for (int iks = 0; iks < nks; iks++) - { - for (int inl = 0; inl < inlmax; inl++) - { - auto tensor_slice = orbital_pdm[iks][inl]; - Parallel_Reduce::reduce_all(tensor_slice.data_ptr(), (2 * lmaxd + 1) * (2 * lmaxd + 1)); - } - } + const int size = nks * inlmax * (2 * lmaxd + 1) * (2 * lmaxd + 1); + Parallel_Reduce::reduce_all(orbital_pdm.data_ptr(), size); #endif // transfer orbital_pdm [nks,inl,nm,nm] to orbital_pdm_vector [nl,[nks,nat,nm,nm]] @@ -321,7 +316,7 @@ void DeePKS_domain::cal_orbital_precalc(const std::vector& dm_hl, { for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d { - mmv.push_back(orbital_pdm[iks][inl][m1][m2].item()); + mmv.push_back(accessor[iks][inl][m1][m2]); } } torch::Tensor mm diff --git a/source/module_hamilt_lcao/module_deepks/deepks_vdpre.cpp b/source/module_hamilt_lcao/module_deepks/deepks_vdpre.cpp new file mode 100644 index 0000000000..e0c9a0be8e --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/deepks_vdpre.cpp @@ -0,0 +1,645 @@ +/// cal_v_delta_precalc : v_delta_precalc is used for training with v_delta label, +// which equals gvdm * v_delta_pdm, +// v_delta_pdm = overlap * overlap +/// check_v_delta_precalc : check v_delta_precalc +// prepare_phialpha : prepare phialpha for outputting npy file +// prepare_gevdm : prepare gevdm for outputting npy file + +#ifdef __DEEPKS + +#include "deepks_vdpre.h" + +#include "LCAO_deepks_io.h" // mohan add 2024-07-22 +#include "module_base/blas_connector.h" +#include "module_base/constants.h" +#include "module_base/libm/libm.h" +#include "module_base/parallel_reduce.h" +#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" +#include "module_parameter/parameter.h" + +// calculates v_delta_precalc[nks,nlocal,nlocal,NAt,NDscrpt] = gvdm * v_delta_pdm; +// v_delta_pdm[nks,nlocal,nlocal,Inl,nm,nm] = overlap * overlap; +// for deepks_v_delta = 1 +template +void DeePKS_domain::cal_v_delta_precalc(const int nlocal, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const int* inl_l, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const std::vector gevdm, + const ModuleBase::IntArray* inl_index, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& v_delta_precalc) +{ + ModuleBase::TITLE("DeePKS_domain", "calc_v_delta_precalc"); + // timeval t_start; + // gettimeofday(&t_start,NULL); + + constexpr torch::Dtype dtype = std::is_same::value ? torch::kFloat64 : torch::kComplexDouble; + + const double Rcut_Alpha = orb.Alpha[0].getRcut(); + + torch::Tensor v_delta_pdm + = torch::zeros({nks, nlocal, nlocal, inlmax, (2 * lmaxd + 1), (2 * lmaxd + 1)}, torch::dtype(dtype)); + auto accessor + = v_delta_pdm.accessor::value, double, c10::complex>, 6>(); + + for (int T0 = 0; T0 < ucell.ntype; T0++) + { + Atom* atom0 = &ucell.atoms[T0]; + + for (int I0 = 0; I0 < atom0->na; I0++) + { + const int iat = ucell.itia2iat(T0, I0); + const ModuleBase::Vector3 tau0 = atom0->tau[I0]; + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); + + for (int ad1 = 0; ad1 < GridD.getAdjacentNum() + 1; ++ad1) + { + const int T1 = GridD.getType(ad1); + const int I1 = GridD.getNatom(ad1); + const int ibt1 = ucell.itia2iat(T1, I1); + const int start1 = ucell.itiaiw2iwt(T1, I1, 0); + const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad1); + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; + if (dist1 >= Rcut_Alpha + Rcut_AO1) + { + continue; + } + + ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); + + if constexpr (std::is_same>::value) + { + if (phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr) + { + continue; + } + } + + for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) + { + const int T2 = GridD.getType(ad2); + const int I2 = GridD.getNatom(ad2); + const int ibt2 = ucell.itia2iat(T2, I2); + const int start2 = ucell.itiaiw2iwt(T2, I2, 0); + const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); + const Atom* atom2 = &ucell.atoms[T2]; + const int nw2_tot = atom2->nw * PARAM.globalv.npol; + + const double Rcut_AO2 = orb.Phi[T2].getRcut(); + const double dist2 = (tau2 - tau0).norm() * ucell.lat0; + + if (dist2 >= Rcut_Alpha + Rcut_AO2) + { + continue; + } + + ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); + + if constexpr (std::is_same>::value) + { + if (phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) + { + continue; + } + } + + for (int iw1 = 0; iw1 < nw1_tot; ++iw1) + { + const int iw1_all = start1 + iw1; // this is \mu + const int iw1_local = pv.global2local_row(iw1_all); + if (iw1_local < 0) + { + continue; + } + for (int iw2 = 0; iw2 < nw2_tot; ++iw2) + { + const int iw2_all = start2 + iw2; // this is \nu + const int iw2_local = pv.global2local_col(iw2_all); + if (iw2_local < 0) + { + continue; + } + + hamilt::BaseMatrix* overlap_1 = phialpha[0]->find_matrix(iat, ibt1, dR1); + hamilt::BaseMatrix* overlap_2 = phialpha[0]->find_matrix(iat, ibt2, dR2); + assert(overlap_1->get_col_size() == overlap_2->get_col_size()); + + for (int ik = 0; ik < nks; ik++) + { + int ib = 0; + std::complex kphase = std::complex(1.0, 0.0); + if constexpr (std::is_same>::value) + { + const double arg + = -(kvec_d[ik] * ModuleBase::Vector3(dR1 - dR2)) * ModuleBase::TWO_PI; + double sinp, cosp; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + kphase = std::complex(cosp, sinp); + } + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + { + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + { + const int inl = inl_index[T0](I0, L0, N0); + const int nm = 2 * L0 + 1; + + for (int m1 = 0; m1 < nm; ++m1) // nm = 1 for s, 3 for p, 5 for d + { + for (int m2 = 0; m2 < nm; ++m2) // nm = 1 for s, 3 for p, 5 for d + { + if constexpr (std::is_same::value) + { + accessor[ik][iw1][iw2][inl][m1][m2] + += overlap_1->get_value(iw1, ib + m1) + * overlap_2->get_value(iw2, ib + m2); + } + else + { + c10::complex tmp; + tmp = overlap_1->get_value(iw1, ib + m1) + * overlap_2->get_value(iw2, ib + m2) + * kphase; // from std::complex to c10::complex + accessor[ik][iw1][iw2][inl][m1][m2] += tmp; + } + } + } + ib += nm; + } + } + } // ik + } // iw2 + } // iw1 + } // ad2 + } // ad1 + } + } +#ifdef __MPI + const int size = nks * nlocal * nlocal * inlmax * (2 * lmaxd + 1) * (2 * lmaxd + 1); + TK* data_ptr; + if constexpr (std::is_same::value) + { + data_ptr = v_delta_pdm.data_ptr(); + } + else + { + c10::complex* c10_ptr = v_delta_pdm.data_ptr>(); + data_ptr = reinterpret_cast(c10_ptr); + } + Parallel_Reduce::reduce_all(data_ptr, size); +#endif + + // transfer v_delta_pdm to v_delta_pdm_vector + int nlmax = inlmax / nat; + + std::vector v_delta_pdm_vector; + for (int nl = 0; nl < nlmax; ++nl) + { + std::vector kuuammv; + for (int iks = 0; iks < nks; ++iks) + { + std::vector uuammv; + for (int mu = 0; mu < nlocal; ++mu) + { + std::vector uammv; + for (int nu = 0; nu < nlocal; ++nu) + { + std::vector ammv; + for (int iat = 0; iat < nat; ++iat) + { + int inl = iat * nlmax + nl; + int nm = 2 * inl_l[inl] + 1; + std::vector mmv; + + for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d + { + for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d + { + if constexpr (std::is_same::value) + { + mmv.push_back(accessor[iks][mu][nu][inl][m1][m2]); + } + else + { + c10::complex tmp_c10 = accessor[iks][mu][nu][inl][m1][m2]; + std::complex tmp = std::complex(tmp_c10.real(), tmp_c10.imag()); + mmv.push_back(tmp); + } + } + } + torch::Tensor mm = torch::from_blob(mmv.data(), + {nm, nm}, + torch::TensorOptions().dtype(dtype)) + .clone(); // nm*nm + ammv.push_back(mm); + } + torch::Tensor amm = torch::stack(ammv, 0); + uammv.push_back(amm); + } + torch::Tensor uamm = torch::stack(uammv, 0); + uuammv.push_back(uamm); + } + torch::Tensor uuamm = torch::stack(uuammv, 0); + kuuammv.push_back(uuamm); + } + torch::Tensor kuuamm = torch::stack(kuuammv, 0); + v_delta_pdm_vector.push_back(kuuamm); + } + + assert(v_delta_pdm_vector.size() == nlmax); + + // einsum for each nl: + std::vector v_delta_precalc_vector; + for (int nl = 0; nl < nlmax; ++nl) + { + torch::Tensor gevdm_complex = gevdm[nl].to(dtype); + v_delta_precalc_vector.push_back(at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_vector[nl], gevdm[nl]})); + } + + v_delta_precalc = torch::cat(v_delta_precalc_vector, -1); + // timeval t_end; + // gettimeofday(&t_end,NULL); + // std::cout<<"calculate v_delta_precalc time:\t"<<(double)(t_end.tv_sec-t_start.tv_sec) + + // (double)(t_end.tv_usec-t_start.tv_usec)/1000000.0< +void DeePKS_domain::check_v_delta_precalc(const int nat, + const int nks, + const int nlocal, + const int des_per_atom, + const torch::Tensor& v_delta_precalc) +{ + std::ofstream ofs("v_delta_precalc.dat"); + ofs << std::setprecision(10); + auto accessor + = v_delta_precalc + .accessor::value, double, c10::complex>, 5>(); + for (int iks = 0; iks < nks; ++iks) + { + for (int mu = 0; mu < nlocal; ++mu) + { + for (int nu = 0; nu < nlocal; ++nu) + { + for (int iat = 0; iat < nat; ++iat) + { + for (int p = 0; p < des_per_atom; ++p) + { + if constexpr (std::is_same::value) + { + ofs << accessor[iks][mu][nu][iat][p] << " "; + } + else + { + c10::complex tmp_c10 = accessor[iks][mu][nu][iat][p]; + std::complex tmp = std::complex(tmp_c10.real(), tmp_c10.imag()); + ofs << tmp << " "; + } + } + } + ofs << std::endl; + } + } + } + ofs.close(); +} + +// prepare_phialpha and prepare_gevdm for deepks_v_delta = 2 +template +void DeePKS_domain::prepare_phialpha(const int nlocal, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& phialpha_out) +{ + ModuleBase::TITLE("DeePKS_domain", "prepare_phialpha"); + constexpr torch::Dtype dtype = std::is_same::value ? torch::kFloat64 : torch::kComplexDouble; + int nlmax = inlmax / nat; + int mmax = 2 * lmaxd + 1; + phialpha_out = torch::zeros({nat, nlmax, nks, nlocal, mmax}, dtype); + + // cutoff for alpha is same for all types of atoms + const double Rcut_Alpha = orb.Alpha[0].getRcut(); + + for (int T0 = 0; T0 < ucell.ntype; T0++) + { + Atom* atom0 = &ucell.atoms[T0]; + for (int I0 = 0; I0 < atom0->na; I0++) + { + // iat: atom index on which |alpha> is located + const int iat = ucell.itia2iat(T0, I0); + const ModuleBase::Vector3 tau0 = atom0->tau[I0]; + GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); + + // outermost loop : find all adjacent atoms + for (int ad = 0; ad < GridD.getAdjacentNum() + 1; ++ad) + { + const int T1 = GridD.getType(ad); + const int I1 = GridD.getNatom(ad); + const int ibt = ucell.itia2iat(T1, I1); + const int start1 = ucell.itiaiw2iwt(T1, I1, 0); + const double Rcut_AO1 = orb.Phi[T1].getRcut(); + + const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad); + const Atom* atom1 = &ucell.atoms[T1]; + const int nw1_tot = atom1->nw * PARAM.globalv.npol; + + const double dist1 = (tau1 - tau0).norm() * ucell.lat0; + + if (dist1 > Rcut_Alpha + Rcut_AO1) + { + continue; + } + + ModuleBase::Vector3 dR(GridD.getBox(ad).x, GridD.getBox(ad).y, GridD.getBox(ad).z); + + if constexpr (std::is_same>::value) + { + if (phialpha[0]->find_matrix(iat, ibt, dR.x, dR.y, dR.z) == nullptr) + { + continue; + } + } + + // middle loop : all atomic basis on the adjacent atom ad + for (int iw1 = 0; iw1 < nw1_tot; ++iw1) + { + const int iw1_all = start1 + iw1; + const int iw1_local = pv.global2local_row(iw1_all); + const int iw2_local = pv.global2local_col(iw1_all); + if (iw1_local < 0 || iw2_local < 0) + { + continue; + } + hamilt::BaseMatrix* overlap = phialpha[0]->find_matrix(iat, ibt, dR); + + for (int ik = 0; ik < nks; ik++) + { + std::complex kphase = std::complex(1.0, 0.0); + if constexpr (std::is_same>::value) + { + const double arg = -(kvec_d[ik] * ModuleBase::Vector3(dR)) * ModuleBase::TWO_PI; + double sinp, cosp; + ModuleBase::libm::sincos(arg, &sinp, &cosp); + kphase = std::complex(cosp, sinp); + } + int ib = 0; + int nl = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + { + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + { + const int nm = 2 * L0 + 1; + + for (int m1 = 0; m1 < nm; ++m1) // nm = 1 for s, 3 for p, 5 for d + { + if constexpr (std::is_same::value) + { + phialpha_out[iat][nl][ik][iw1_all][m1] = overlap->get_value(iw1, ib + m1); + } + else + { + c10::complex tmp; + tmp = overlap->get_value(iw1, ib + m1) * kphase; + phialpha_out.index_put_({iat, nl, ik, iw1_all, m1}, tmp); + } + } + ib += nm; + nl++; + } + } + } // end ik + } // end iw + } // end ad + } // end I0 + } // end T0 + +#ifdef __MPI + int size = nat * nlmax * nks * nlocal * mmax; + TK* data_ptr; + if constexpr (std::is_same::value) + { + data_ptr = phialpha_out.data_ptr(); + } + else + { + c10::complex* c10_ptr = phialpha_out.data_ptr>(); + data_ptr = reinterpret_cast(c10_ptr); + } + Parallel_Reduce::reduce_all(data_ptr, size); + +#endif +} + +template +void DeePKS_domain::check_vdp_phialpha(const int nat, + const int nks, + const int nlocal, + const int inlmax, + const int lmaxd, + const torch::Tensor& phialpha_out) +{ + std::ofstream ofs("vdp_phialpha.dat"); + ofs << std::setprecision(10); + auto accessor + = phialpha_out.accessor::value, double, c10::complex>, 5>(); + + int nlmax = inlmax / nat; + int mmax = 2 * lmaxd + 1; + for (int iat = 0; iat < nat; iat++) + { + for (int nl = 0; nl < nlmax; nl++) + { + for (int iks = 0; iks < nks; iks++) + { + for (int mu = 0; mu < nlocal; mu++) + { + for (int m = 0; m < mmax; m++) + { + if constexpr (std::is_same::value) + { + ofs << accessor[iat][nl][iks][mu][m] << " "; + } + else + { + c10::complex tmp_c10 = accessor[iat][nl][iks][mu][m]; + std::complex tmp = std::complex(tmp_c10.real(), tmp_c10.imag()); + ofs << tmp << " "; + } + } + } + } + ofs << std::endl; + } + } + ofs.close(); +} + +void DeePKS_domain::prepare_gevdm(const int nat, + const int lmaxd, + const int inlmax, + const LCAO_Orbitals& orb, + const std::vector& gevdm_in, + torch::Tensor& gevdm_out) +{ + int nlmax = inlmax / nat; + int mmax = 2 * lmaxd + 1; + gevdm_out = torch::zeros({nat, nlmax, mmax, mmax, mmax}, torch::TensorOptions().dtype(torch::kFloat64)); + + int nl = 0; + for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) + { + for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) + { + for (int iat = 0; iat < nat; iat++) + { + const int nm = 2 * L0 + 1; + for (int v = 0; v < nm; ++v) // nm = 1 for s, 3 for p, 5 for d + { + for (int m = 0; m < nm; ++m) + { + for (int n = 0; n < nm; ++n) + { + gevdm_out[iat][nl][v][m][n] = gevdm_in[nl][iat][v][m][n]; + } + } + } + } + nl++; + } + } + assert(nl == nlmax); +} + +void DeePKS_domain::check_vdp_gevdm(const int nat, const int lmaxd, const int inlmax, const torch::Tensor& gevdm) +{ + std::ofstream ofs("vdp_gevdm.dat"); + ofs << std::setprecision(10); + + auto accessor = gevdm.accessor(); + + int nlmax = inlmax / nat; + int mmax = 2 * lmaxd + 1; + for (int iat = 0; iat < nat; iat++) + { + for (int nl = 0; nl < nlmax; nl++) + { + for (int v = 0; v < mmax; v++) + { + for (int m = 0; m < mmax; m++) + { + for (int n = 0; n < mmax; n++) + { + ofs << accessor[iat][nl][v][m][n] << " "; + } + } + } + ofs << std::endl; + } + } + ofs.close(); +} + +template void DeePKS_domain::cal_v_delta_precalc(const int nlocal, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const int* inl_l, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const std::vector gevdm, + const ModuleBase::IntArray* inl_index, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& v_delta_precalc); +template void DeePKS_domain::cal_v_delta_precalc>( + const int nlocal, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const int* inl_l, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const std::vector gevdm, + const ModuleBase::IntArray* inl_index, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& v_delta_precalc); + +template void DeePKS_domain::check_v_delta_precalc(const int nat, + const int nks, + const int nlocal, + const int des_per_atom, + const torch::Tensor& v_delta_precalc); +template void DeePKS_domain::check_v_delta_precalc>(const int nat, + const int nks, + const int nlocal, + const int des_per_atom, + const torch::Tensor& v_delta_precalc); + +template void DeePKS_domain::prepare_phialpha(const int nlocal, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& phialpha_out); + +template void DeePKS_domain::prepare_phialpha>( + const int nlocal, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& phialpha_out); + +template void DeePKS_domain::check_vdp_phialpha(const int nat, + const int nks, + const int nlocal, + const int inlmax, + const int lmaxd, + const torch::Tensor& phialpha_out); +template void DeePKS_domain::check_vdp_phialpha>(const int nat, + const int nks, + const int nlocal, + const int inlmax, + const int lmaxd, + const torch::Tensor& phialpha_out); + +#endif diff --git a/source/module_hamilt_lcao/module_deepks/deepks_vdpre.h b/source/module_hamilt_lcao/module_deepks/deepks_vdpre.h new file mode 100644 index 0000000000..41a6e1be80 --- /dev/null +++ b/source/module_hamilt_lcao/module_deepks/deepks_vdpre.h @@ -0,0 +1,95 @@ +#ifndef DEEPKS_VDPRE_H +#define DEEPKS_VDPRE_H + +#ifdef __DEEPKS + +#include "module_base/complexmatrix.h" +#include "module_base/intarray.h" +#include "module_base/matrix.h" +#include "module_base/timer.h" +#include "module_basis/module_ao/parallel_orbitals.h" +#include "module_basis/module_nao/two_center_integrator.h" +#include "module_cell/module_neighbor/sltk_grid_driver.h" +#include "module_hamilt_lcao/module_hcontainer/hcontainer.h" + +#include +#include + +namespace DeePKS_domain +{ +//------------------------ +// deepks_vdpre.cpp +//------------------------ + +// This file contains 6 subroutines for calculating v_delta, +// 1. cal_v_delta_precalc : v_delta_precalc is used for training with v_delta label, +// which equals gvdm * v_delta_pdm, +// v_delta_pdm = overlap * overlap +// 2. check_v_delta_precalc : check v_delta_precalc +// 3. prepare_phialpha : prepare phialpha for outputting npy file +// 4. check_vdp_phialpha : check phialpha +// 5. prepare_gevdm : prepare gevdm for outputting npy file +// 6. check_vdp_gevdm : check gevdm + +// for deepks_v_delta = 1 +// calculates v_delta_precalc +template +void cal_v_delta_precalc(const int nlocal, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const int* inl_l, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const std::vector gevdm, + const ModuleBase::IntArray* inl_index, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& v_delta_precalc); + +template +void check_v_delta_precalc(const int nat, + const int nks, + const int nlocal, + const int des_per_atom, + const torch::Tensor& v_delta_precalc); + +// for deepks_v_delta = 2 +// prepare phialpha for outputting npy file +template +void prepare_phialpha(const int nlocal, + const int lmaxd, + const int inlmax, + const int nat, + const int nks, + const std::vector>& kvec_d, + const std::vector*> phialpha, + const UnitCell& ucell, + const LCAO_Orbitals& orb, + const Parallel_Orbitals& pv, + const Grid_Driver& GridD, + torch::Tensor& phialpha_out); + +template +void check_vdp_phialpha(const int nat, + const int nks, + const int nlocal, + const int inlmax, + const int lmaxd, + const torch::Tensor& phialpha_out); + +// prepare gevdm for outputting npy file +void prepare_gevdm(const int nat, + const int lmaxd, + const int inlmax, + const LCAO_Orbitals& orb, + const std::vector& gevdm_in, + torch::Tensor& gevdm_out); + +void check_vdp_gevdm(const int nat, const int lmaxd, const int inlmax, const torch::Tensor& gevdm); +} // namespace DeePKS_domain +#endif +#endif \ No newline at end of file diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp index 76a8eb2d71..25bd243d14 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.cpp @@ -113,8 +113,8 @@ void test_deepks::set_dm_k_new() void test_deepks::set_p_elec_DM() { // gamma - int nspin=PARAM.inp.nspin; - this->p_elec_DM=new elecstate::DensityMatrix(&ParaO,nspin); + int nspin = PARAM.inp.nspin; + this->p_elec_DM = new elecstate::DensityMatrix(&ParaO, nspin); p_elec_DM->init_DMR(&Test_Deepks::GridD, &ucell); for (int ik = 0; ik < nspin; ik++) { @@ -126,7 +126,10 @@ void test_deepks::set_p_elec_DM() void test_deepks::set_p_elec_DM_k() { // multi k - this->p_elec_DM_k=new elecstate::DensityMatrix, double>(&ParaO, PARAM.inp.nspin, kv.kvec_d, kv.nkstot / PARAM.inp.nspin); + this->p_elec_DM_k = new elecstate::DensityMatrix, double>(&ParaO, + PARAM.inp.nspin, + kv.kvec_d, + kv.nkstot / PARAM.inp.nspin); p_elec_DM_k->init_DMR(&Test_Deepks::GridD, &ucell); for (int ik = 0; ik < kv.nkstot; ++ik) { @@ -155,18 +158,18 @@ void test_deepks::check_pdm() this->compare_with_ref("pdm.dat", "pdm_ref.dat"); } -void test_deepks::check_gdmx() +void test_deepks::check_gdmx(torch::Tensor& gdmx) { - GlobalC::ld.init_gdmx(ucell.nat); if (PARAM.sys.gamma_only_local) { - GlobalC::ld.cal_gdmx(dm_new, ucell, ORB, Test_Deepks::GridD, kv.nkstot, kv.kvec_d, GlobalC::ld.phialpha, 0); + GlobalC::ld.cal_gdmx(dm_new, ucell, ORB, Test_Deepks::GridD, kv.nkstot, kv.kvec_d, GlobalC::ld.phialpha, gdmx); } else { - GlobalC::ld.cal_gdmx(dm_k_new, ucell, ORB, Test_Deepks::GridD, kv.nkstot, kv.kvec_d, GlobalC::ld.phialpha, 0); + GlobalC::ld + .cal_gdmx(dm_k_new, ucell, ORB, Test_Deepks::GridD, kv.nkstot, kv.kvec_d, GlobalC::ld.phialpha, gdmx); } - GlobalC::ld.check_gdmx(ucell.nat); + GlobalC::ld.check_gdmx(ucell.nat, gdmx); for (int ia = 0; ia < ucell.nat; ia++) { @@ -193,19 +196,56 @@ void test_deepks::check_gdmx() } } -void test_deepks::check_descriptor() +void test_deepks::check_gdmepsl() { - GlobalC::ld.cal_descriptor(ucell.nat); - GlobalC::ld.check_descriptor(ucell,"./"); + torch::Tensor gdmepsl; + if (PARAM.sys.gamma_only_local) + { + GlobalC::ld.cal_gdmepsl(dm_new, ucell, ORB, Test_Deepks::GridD, kv.nkstot, kv.kvec_d, GlobalC::ld.phialpha, gdmepsl); + } + else + { + GlobalC::ld + .cal_gdmx(dm_k_new, ucell, ORB, Test_Deepks::GridD, kv.nkstot, kv.kvec_d, GlobalC::ld.phialpha, gdmepsl); + } + GlobalC::ld.check_gdmepsl(gdmepsl); + + for (int i = 0; i < 6; i++) + { + std::stringstream ss; + std::stringstream ss1; + ss.str(""); + ss << "gdmepsl_" << i << ".dat"; + ss1.str(""); + ss1 << "gdmepsl_" << i << "_ref.dat"; + this->compare_with_ref(ss.str(), ss1.str()); + } +} + +void test_deepks::check_descriptor(std::vector& descriptor) +{ + DeePKS_domain::cal_descriptor(ucell.nat, + GlobalC::ld.inlmax, + GlobalC::ld.inl_l, + GlobalC::ld.pdm, + descriptor, + GlobalC::ld.des_per_atom); + DeePKS_domain::check_descriptor(GlobalC::ld.inlmax, + GlobalC::ld.des_per_atom, + GlobalC::ld.inl_l, + ucell, + "./", + descriptor); this->compare_with_ref("deepks_desc.dat", "descriptor_ref.dat"); } -void test_deepks::check_gvx() +void test_deepks::check_gvx(torch::Tensor& gdmx) { std::vector gevdm; GlobalC::ld.cal_gevdm(ucell.nat, gevdm); - GlobalC::ld.cal_gvx(ucell.nat, gevdm); - GlobalC::ld.check_gvx(ucell.nat); + torch::Tensor gvx; + GlobalC::ld.cal_gvx(ucell.nat, gevdm, gdmx, gvx); + GlobalC::ld.check_gvx(ucell.nat, gvx); for (int ia = 0; ia < ucell.nat; ia++) { @@ -231,7 +271,7 @@ void test_deepks::check_gvx() } } -void test_deepks::check_edelta() +void test_deepks::check_edelta(std::vector& descriptor) { GlobalC::ld.load_model("model.ptg"); if (PARAM.sys.gamma_only_local) @@ -242,7 +282,7 @@ void test_deepks::check_edelta() { GlobalC::ld.allocate_V_delta(ucell.nat, kv.nkstot); } - GlobalC::ld.cal_gedm(ucell.nat); + GlobalC::ld.cal_gedm(ucell.nat, descriptor); std::ofstream ofs("E_delta.dat"); ofs << std::setprecision(10) << GlobalC::ld.E_delta << std::endl; @@ -256,16 +296,17 @@ void test_deepks::check_edelta() void test_deepks::cal_H_V_delta() { hamilt::HS_Matrix_K* hsk = new hamilt::HS_Matrix_K(&ParaO); - hamilt::HContainer* hR = new hamilt::HContainer(ucell,&ParaO); - hamilt::Operator* op_deepks = new hamilt::DeePKS>(hsk, - kv.kvec_d, - hR, // no explicit call yet - &ucell, - &Test_Deepks::GridD, - &overlap_orb_alpha_, - &ORB, - kv.nkstot, - p_elec_DM); + hamilt::HContainer* hR = new hamilt::HContainer(ucell, &ParaO); + hamilt::Operator* op_deepks + = new hamilt::DeePKS>(hsk, + kv.kvec_d, + hR, // no explicit call yet + &ucell, + &Test_Deepks::GridD, + &overlap_orb_alpha_, + &ORB, + kv.nkstot, + p_elec_DM); for (int ik = 0; ik < kv.nkstot; ++ik) { op_deepks->init(ik); @@ -277,15 +318,16 @@ void test_deepks::cal_H_V_delta_k() hamilt::HS_Matrix_K>* hsk = new hamilt::HS_Matrix_K>(&ParaO); hamilt::HContainer* hR = new hamilt::HContainer(&ParaO); - hamilt::Operator>* op_deepks = new hamilt::DeePKS, double>>(hsk, - kv.kvec_d, - hR, // no explicit call yet - &ucell, - &Test_Deepks::GridD, - &overlap_orb_alpha_, - &ORB, - kv.nkstot, - p_elec_DM_k); + hamilt::Operator>* op_deepks + = new hamilt::DeePKS, double>>(hsk, + kv.kvec_d, + hR, // no explicit call yet + &ucell, + &Test_Deepks::GridD, + &overlap_orb_alpha_, + &ORB, + kv.nkstot, + p_elec_DM_k); for (int ik = 0; ik < kv.nkstot; ++ik) { op_deepks->init(ik); @@ -297,7 +339,7 @@ void test_deepks::check_e_deltabands() if (PARAM.sys.gamma_only_local) { this->cal_H_V_delta(); - GlobalC::ld.cal_e_delta_band(dm_new,1); + GlobalC::ld.cal_e_delta_band(dm_new, 1); } else { @@ -341,19 +383,19 @@ void test_deepks::check_f_delta_and_stress_delta() { const int nks = kv.nkstot; DeePKS_domain::cal_f_delta>(dm_k_new, - ucell, - ORB, - Test_Deepks::GridD, - ParaO, - GlobalC::ld.lmaxd, - nks, - kv.kvec_d, - GlobalC::ld.phialpha, - GlobalC::ld.gedm, - GlobalC::ld.inl_index, - fvnl_dalpha, - cal_stress, - svnl_dalpha); + ucell, + ORB, + Test_Deepks::GridD, + ParaO, + GlobalC::ld.lmaxd, + nks, + kv.kvec_d, + GlobalC::ld.phialpha, + GlobalC::ld.gedm, + GlobalC::ld.inl_index, + fvnl_dalpha, + cal_stress, + svnl_dalpha); } DeePKS_domain::check_f_delta(ucell.nat, fvnl_dalpha, svnl_dalpha); diff --git a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h index 5dca7f1261..6b1cfb011e 100644 --- a/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h +++ b/source/module_hamilt_lcao/module_deepks/test/LCAO_deepks_test.h @@ -13,6 +13,8 @@ #include #include #include +#include +#include namespace Test_Deepks { @@ -21,7 +23,7 @@ extern Grid_Driver GridD; namespace GlobalC { - extern LCAO_Deepks ld; +extern LCAO_Deepks ld; } class test_deepks @@ -95,12 +97,13 @@ class test_deepks void read_dm_k(const int nks); void check_pdm(); - void check_gdmx(); + void check_gdmx(torch::Tensor& gdmx); + void check_gdmepsl(); - void check_descriptor(); - void check_gvx(); + void check_descriptor(std::vector& descriptor); + void check_gvx(torch::Tensor& gdmx); - void check_edelta(); + void check_edelta(std::vector& descriptor); // calculate H_V_delta void cal_H_V_delta(); diff --git a/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects b/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects index 2f57c87d09..f1a13cfd2d 100644 --- a/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects +++ b/source/module_hamilt_lcao/module_deepks/test/Makefile.Objects @@ -7,11 +7,9 @@ HEADERS= *.h OBJS_MAIN=klist_1.o\ parallel_orbitals.o\ -nnr.o\ LCAO_deepks.o\ LCAO_deepks_fdelta.o\ LCAO_deepks_io.o\ -LCAO_deepks_mpi.o\ LCAO_deepks_pdm.o\ LCAO_deepks_phialpha.o\ LCAO_deepks_vdelta.o\ diff --git a/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp b/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp index da8b64e4e6..a8b0f17737 100644 --- a/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp +++ b/source/module_hamilt_lcao/module_deepks/test/main_deepks.cpp @@ -5,54 +5,58 @@ int calculate(); -int main(int argc, char **argv) +int main(int argc, char** argv) { #ifdef __MPI - MPI_Init(&argc,&argv); + MPI_Init(&argc, &argv); #endif int status = calculate(); #ifdef __MPI - MPI_Finalize(); + MPI_Finalize(); #endif - if(status>0) - { - return 1; - } - else - { - return 0; - } + if (status > 0) + { + return 1; + } + else + { + return 0; + } } int calculate() { - test_deepks test; + test_deepks test; - test.preparation(); + test.preparation(); - test.check_dstable(); - test.check_phialpha(); + test.check_dstable(); + test.check_phialpha(); - test.check_pdm(); - test.check_gdmx(); + test.check_pdm(); - test.check_descriptor(); - test.check_gvx(); + torch::Tensor gdmx; + test.check_gdmx(gdmx); + test.check_gdmepsl(); - test.check_edelta(); - test.check_e_deltabands(); - test.check_f_delta_and_stress_delta(); + std::vector descriptor; + test.check_descriptor(descriptor); + test.check_gvx(gdmx); - std::cout << " [ ------ ] Total checks : " << test.total_check <0) - { - std::cout << "\e[1;31m [ FAILED ]\e[0m Failed checks : " << test.failed_check < 0) + { + std::cout << "\e[1;31m [ FAILED ]\e[0m Failed checks : " << test.failed_check << std::endl; + } + else + { + std::cout << "\e[1;32m [ PASS ]\e[0m All checks passed!" << std::endl; + } return test.failed_check; } \ No newline at end of file diff --git a/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp b/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp deleted file mode 100644 index c3cea5eb76..0000000000 --- a/source/module_hamilt_lcao/module_deepks/v_delta_precalc.cpp +++ /dev/null @@ -1,346 +0,0 @@ -/// cal_v_delta_precalc : v_delta_precalc is used for training with v_delta label, -// which equals gvdm * v_delta_pdm_shell, -// v_delta_pdm_shell = overlap * overlap -/// check_v_delta_precalc : check v_delta_precalc - -#ifdef __DEEPKS - -#include "LCAO_deepks.h" -#include "LCAO_deepks_io.h" // mohan add 2024-07-22 -#include "module_base/blas_connector.h" -#include "module_base/constants.h" -#include "module_base/libm/libm.h" -#include "module_base/parallel_reduce.h" -#include "module_hamilt_lcao/module_hcontainer/atom_pair.h" -#include "module_parameter/parameter.h" - -// calculates v_delta_precalc[nks,nlocal,nlocal,NAt,NDscrpt] = gvdm * v_delta_pdm_shell; -// v_delta_pdm_shell[nks,nlocal,nlocal,Inl,nm*nm] = overlap * overlap; -// for deepks_v_delta = 1 -template -void LCAO_Deepks::cal_v_delta_precalc(const int nlocal, - const int nat, - const int nks, - const std::vector>& kvec_d, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD) -{ - ModuleBase::TITLE("LCAO_Deepks", "calc_v_delta_precalc"); - // timeval t_start; - // gettimeofday(&t_start,NULL); - - std::vector gevdm; - this->cal_gevdm(nat, gevdm); - const double Rcut_Alpha = orb.Alpha[0].getRcut(); - this->init_v_delta_pdm_shell(nks, nlocal); - - for (int T0 = 0; T0 < ucell.ntype; T0++) - { - Atom* atom0 = &ucell.atoms[T0]; - - for (int I0 = 0; I0 < atom0->na; I0++) - { - const int iat = ucell.itia2iat(T0, I0); - const ModuleBase::Vector3 tau0 = atom0->tau[I0]; - GridD.Find_atom(ucell, atom0->tau[I0], T0, I0); - - for (int ad1 = 0; ad1 < GridD.getAdjacentNum() + 1; ++ad1) - { - const int T1 = GridD.getType(ad1); - const int I1 = GridD.getNatom(ad1); - const int ibt1 = ucell.itia2iat(T1, I1); - const int start1 = ucell.itiaiw2iwt(T1, I1, 0); - const ModuleBase::Vector3 tau1 = GridD.getAdjacentTau(ad1); - const Atom* atom1 = &ucell.atoms[T1]; - const int nw1_tot = atom1->nw * PARAM.globalv.npol; - const double Rcut_AO1 = orb.Phi[T1].getRcut(); - - const double dist1 = (tau1 - tau0).norm() * ucell.lat0; - if (dist1 >= Rcut_Alpha + Rcut_AO1) - { - continue; - } - - ModuleBase::Vector3 dR1(GridD.getBox(ad1).x, GridD.getBox(ad1).y, GridD.getBox(ad1).z); - - if constexpr (std::is_same>::value) - { - if (this->phialpha[0]->find_matrix(iat, ibt1, dR1.x, dR1.y, dR1.z) == nullptr) - { - continue; - } - } - - for (int ad2 = 0; ad2 < GridD.getAdjacentNum() + 1; ad2++) - { - const int T2 = GridD.getType(ad2); - const int I2 = GridD.getNatom(ad2); - const int ibt2 = ucell.itia2iat(T2, I2); - const int start2 = ucell.itiaiw2iwt(T2, I2, 0); - const ModuleBase::Vector3 tau2 = GridD.getAdjacentTau(ad2); - const Atom* atom2 = &ucell.atoms[T2]; - const int nw2_tot = atom2->nw * PARAM.globalv.npol; - - const double Rcut_AO2 = orb.Phi[T2].getRcut(); - const double dist2 = (tau2 - tau0).norm() * ucell.lat0; - - if (dist2 >= Rcut_Alpha + Rcut_AO2) - { - continue; - } - - ModuleBase::Vector3 dR2(GridD.getBox(ad2).x, GridD.getBox(ad2).y, GridD.getBox(ad2).z); - - if constexpr (std::is_same>::value) - { - if (this->phialpha[0]->find_matrix(iat, ibt2, dR2.x, dR2.y, dR2.z) == nullptr) - { - continue; - } - } - - for (int iw1 = 0; iw1 < nw1_tot; ++iw1) - { - const int iw1_all = start1 + iw1; // this is \mu - const int iw1_local = pv->global2local_row(iw1_all); - if (iw1_local < 0) - { - continue; - } - for (int iw2 = 0; iw2 < nw2_tot; ++iw2) - { - const int iw2_all = start2 + iw2; // this is \nu - const int iw2_local = pv->global2local_col(iw2_all); - if (iw2_local < 0) - { - continue; - } - - hamilt::BaseMatrix* overlap_1 = phialpha[0]->find_matrix(iat, ibt1, dR1); - hamilt::BaseMatrix* overlap_2 = phialpha[0]->find_matrix(iat, ibt2, dR2); - assert(overlap_1->get_col_size() == overlap_2->get_col_size()); - - for (int ik = 0; ik < nks; ik++) - { - int ib = 0; - std::complex kphase = std::complex(1.0, 0.0); - if constexpr (std::is_same>::value) - { - const double arg - = -(kvec_d[ik] * ModuleBase::Vector3(dR1 - dR2)) * ModuleBase::TWO_PI; - double sinp, cosp; - ModuleBase::libm::sincos(arg, &sinp, &cosp); - kphase = std::complex(cosp, sinp); - } - for (int L0 = 0; L0 <= orb.Alpha[0].getLmax(); ++L0) - { - for (int N0 = 0; N0 < orb.Alpha[0].getNchi(L0); ++N0) - { - const int inl = this->inl_index[T0](I0, L0, N0); - const int nm = 2 * L0 + 1; - - for (int m1 = 0; m1 < nm; ++m1) // nm = 1 for s, 3 for p, 5 for d - { - for (int m2 = 0; m2 < nm; ++m2) // nm = 1 for s, 3 for p, 5 for d - { - if constexpr (std::is_same::value) - { - this->v_delta_pdm_shell[ik][iw1_all][iw2_all][inl][m1 * nm + m2] - += overlap_1->get_value(iw1, ib + m1) - * overlap_2->get_value(iw2, ib + m2); - } - else - { - this->v_delta_pdm_shell_complex[ik][iw1_all][iw2_all][inl] - [m1 * nm + m2] - += overlap_1->get_value(iw1, ib + m1) - * overlap_2->get_value(iw2, ib + m2) * kphase; - } - } - } - ib += nm; - } - } - } // ik - } // iw2 - } // iw1 - } // ad2 - } // ad1 - } - } -#ifdef __MPI - const int mn_size = (2 * this->lmaxd + 1) * (2 * this->lmaxd + 1); - for (int ik = 0; ik < nks; ik++) - { - for (int inl = 0; inl < this->inlmax; inl++) - { - for (int mu = 0; mu < nlocal; mu++) - { - for (int nu = 0; nu < nlocal; nu++) - { - if constexpr (std::is_same::value) - { - Parallel_Reduce::reduce_all(this->v_delta_pdm_shell[ik][mu][nu][inl], mn_size); - } - else - { - Parallel_Reduce::reduce_all(this->v_delta_pdm_shell_complex[ik][mu][nu][inl], mn_size); - } - } - } - } - } -#endif - - // transfer v_delta_pdm_shell to v_delta_pdm_shell_vector - - int nlmax = this->inlmax / nat; - - std::vector v_delta_pdm_shell_vector; - for (int nl = 0; nl < nlmax; ++nl) - { - std::vector kuuammv; - for (int iks = 0; iks < nks; ++iks) - { - std::vector uuammv; - for (int mu = 0; mu < nlocal; ++mu) - { - std::vector uammv; - for (int nu = 0; nu < nlocal; ++nu) - { - std::vector ammv; - for (int iat = 0; iat < nat; ++iat) - { - int inl = iat * nlmax + nl; - int nm = 2 * this->inl_l[inl] + 1; - std::vector mmv; - - for (int m1 = 0; m1 < nm; ++m1) // m1 = 1 for s, 3 for p, 5 for d - { - for (int m2 = 0; m2 < nm; ++m2) // m1 = 1 for s, 3 for p, 5 for d - { - if constexpr (std::is_same::value) - { - mmv.push_back(this->v_delta_pdm_shell[iks][mu][nu][inl][m1 * nm + m2]); - } - else - { - mmv.push_back(this->v_delta_pdm_shell_complex[iks][mu][nu][inl][m1 * nm + m2]); - } - } - } - if constexpr (std::is_same::value) - { - torch::Tensor mm = torch::tensor(mmv, torch::TensorOptions().dtype(torch::kFloat64)) - .reshape({nm, nm}); // nm*nm - ammv.push_back(mm); - } - else - { - torch::Tensor mm = torch::from_blob(mmv.data(), - {nm, nm}, - torch::TensorOptions().dtype(torch::kComplexDouble)) - .clone(); // nm*nm - ammv.push_back(mm); - } - } - torch::Tensor amm = torch::stack(ammv, 0); - uammv.push_back(amm); - } - torch::Tensor uamm = torch::stack(uammv, 0); - uuammv.push_back(uamm); - } - torch::Tensor uuamm = torch::stack(uuammv, 0); - kuuammv.push_back(uuamm); - } - torch::Tensor kuuamm = torch::stack(kuuammv, 0); - v_delta_pdm_shell_vector.push_back(kuuamm); - } - - assert(v_delta_pdm_shell_vector.size() == nlmax); - - // einsum for each nl: - std::vector v_delta_precalc_vector; - for (int nl = 0; nl < nlmax; ++nl) - { - if constexpr (std::is_same::value) - { - v_delta_precalc_vector.push_back( - at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], gevdm[nl]})); - } - else - { - torch::Tensor gevdm_complex = gevdm[nl].to(torch::kComplexDouble); - v_delta_precalc_vector.push_back( - at::einsum("kxyamn, avmn->kxyav", {v_delta_pdm_shell_vector[nl], gevdm_complex})); - } - } - - this->v_delta_precalc_tensor = torch::cat(v_delta_precalc_vector, -1); - this->del_v_delta_pdm_shell(nks, nlocal); - - // check_v_delta_precalc(nlocal,nat); - // timeval t_end; - // gettimeofday(&t_end,NULL); - // std::cout<<"calculate v_delta_precalc time:\t"<<(double)(t_end.tv_sec-t_start.tv_sec) + - // (double)(t_end.tv_usec-t_start.tv_usec)/1000000.0< -void LCAO_Deepks::check_v_delta_precalc(const int nat, const int nks, const int nlocal) -{ - std::ofstream ofs("v_delta_precalc.dat"); - ofs << std::setprecision(10); - for (int iks = 0; iks < nks; ++iks) - { - for (int mu = 0; mu < nlocal; ++mu) - { - for (int nu = 0; nu < nlocal; ++nu) - { - for (int iat = 0; iat < nat; ++iat) - { - for (int p = 0; p < this->des_per_atom; ++p) - { - if constexpr (std::is_same::value) - { - ofs << this->v_delta_precalc_tensor.index({iks, mu, nu, iat, p}).item().toDouble() << " "; - } - else - { - auto tensor_value = this->v_delta_precalc_tensor.index({iks, mu, nu, iat, p}); - ofs << std::complex(torch::real(tensor_value).item(), - torch::imag(tensor_value).item()) - << " "; - } - } - } - ofs << std::endl; - } - } - } - ofs.close(); -} - -template void LCAO_Deepks::cal_v_delta_precalc(const int nlocal, - const int nat, - const int nks, - const std::vector>& kvec_d, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - -template void LCAO_Deepks::cal_v_delta_precalc>( - const int nlocal, - const int nat, - const int nks, - const std::vector>& kvec_d, - const UnitCell& ucell, - const LCAO_Orbitals& orb, - const Grid_Driver& GridD); - -template void LCAO_Deepks::check_v_delta_precalc(const int nat, const int nks, const int nlocal); -template void LCAO_Deepks::check_v_delta_precalc>(const int nat, const int nks, const int nlocal); - -#endif diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_0_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_0_ref.dat new file mode 100644 index 0000000000..c663a7e3fe --- /dev/null +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_0_ref.dat @@ -0,0 +1,195 @@ +0.167374502 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3119937007 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0835245276 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001969326958 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002113794732 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003041789508 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006795829431 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007575056859 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004183508038 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-8.965682239e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.751757933e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.333809072e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.735905951e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04324321692 0.0667723166 -0.001352757303 0 0 0.05200726041 -0.5534587326 -0.00730831143 0 0 -0.001512946681 0.002083205691 0.0758191543 0 0 0 0 0 0 0 0 0 0 0 0 +0.1056951402 0.1358533512 -0.002061765066 0 0 0.1473199422 0.1338837812 0.005088975041 0 0 -0.00174331901 0.002278103634 0.182664845 0 0 0 0 0 0 0 0 0 0 0 0 +0.06681086028 0.07281961119 -0.0001640295718 0 0 0.08481813717 0.2528102975 0.002626369317 0 0 0.0003338449177 -0.0005457465988 0.1186202064 0 0 0 0 0 0 0 0 0 0 0 0 +0.01650550583 0.01404930975 0.0005543706728 0 0 0.01695214324 0.08721168746 -0.0001221599792 0 0 0.0007899760702 -0.001027468373 0.0323233133 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003436383669 -0.002061817789 0.0003855538984 0 0 -0.002498516474 0.003651758241 -0.000401355939 0 0 0.0004228903922 -0.0005428419893 0.002338604668 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002408591088 -0.003352681314 0.0001310043072 0 0 -0.00383425501 -0.0109158043 -0.0002096500651 0 0 0.0001276960569 -0.0001594687609 -0.003626241887 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001451923571 -0.001624145333 -1.567105065e-05 0 0 -0.001853032558 -0.009510524263 -8.999336825e-05 0 0 -1.884117349e-05 2.964283259e-05 -0.003117194961 0 0 0 0 0 0 0 0 0 0 0 0 +-4.438089352e-07 0.0003160912512 -6.025436145e-05 0 0 0.0003416723988 0.0003039046977 6.393578838e-05 0 0 -6.340547193e-05 8.142894302e-05 -0.000447193113 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002988800079 0.0005201708738 -3.205301834e-05 0 0 0.0005772395879 0.001527893502 4.295656549e-05 0 0 -3.148540016e-05 3.949587384e-05 0.0004398818381 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001221963993 0.0001071538863 2.598183592e-06 0 0 0.0001333651689 0.0007616318814 1.066302635e-06 0 0 4.786659353e-06 -5.869711125e-06 0.0002691041919 0 0 0 0 0 0 0 0 0 0 0 0 +-9.601630719e-06 -6.353051626e-05 9.685492965e-06 0 0 -7.176080153e-05 -0.0001984708136 -1.156562352e-05 0 0 1.032788939e-05 -1.292475975e-05 5.776787799e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.3291455e-05 -2.531767346e-05 2.23984557e-06 0 0 -3.037286221e-05 -4.955800649e-05 -2.418963643e-06 0 0 2.360020606e-06 -2.638747165e-06 -1.584660909e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.53688192e-05 -1.629395391e-05 1.860543453e-07 0 0 -1.984865395e-05 -0.0001425730373 -2.809578258e-06 0 0 2.707531438e-07 -3.819571915e-07 -3.519029373e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03546665189 0.03065584987 -0.0003594400832 0.04827877048 0.0005039518305 -0.006719655735 -0.02521342093 -0.0007109919391 -0.0383051916 0.001055721397 0.0002277739658 0.0001756284221 0.004618047771 0.0002712848522 -0.006308215206 0.0624302601 -0.04319829294 0.001264715964 -0.06849305203 -0.001789436331 0.001540726451 0.001163879934 0.05077218991 0.001847351353 -0.06934993179 +-0.02074184405 0.0102690356 0.0002843512164 0.01669604454 -0.0003150070547 -0.02557621327 0.004580150817 0.0002088568894 0.008194363093 -0.0002121888871 0.0004154454892 0.0002750712931 0.01351371344 0.000424873329 -0.0186537482 0.03976613096 0.00881149665 0.0006517743732 0.01198997322 -0.001143689054 -4.388600006e-05 -0.0001934203531 0.04177011524 -0.0002390294273 -0.05764975368 +0.0001859069645 -0.004625671858 0.0003509594474 -0.007265507342 -0.0005100898487 -0.01903868722 0.01495380193 0.0003212817335 0.02450741378 -0.0003346250543 1.458124595e-05 -3.00786109e-05 0.01039398739 -5.654576564e-05 -0.01469909201 0.003873070004 0.02651797965 -0.000490644042 0.04150442386 0.0006341851201 -0.0006603877729 -0.0005053089701 0.009671795024 -0.0007682098526 -0.01367239588 +0.001863129188 -0.001161990333 1.461802542e-05 -0.002233434804 -8.8496376e-05 -0.003345192648 0.002773394663 -1.878751922e-05 0.005159694648 0.0001031718759 -0.0001917713712 -0.000137078684 0.002230801513 -0.0002238752415 -0.003412837722 -0.001433481554 0.005132652829 -0.0004210654889 0.009088573593 0.0006919362713 -8.809790362e-05 -2.555299308e-05 -0.0008881559419 -3.393009953e-05 0.001362274766 +-2.414524719e-05 0.0002955196038 -3.026757408e-05 0.0003492112566 2.799374377e-05 0.0001143512176 -0.000387745823 -2.822659872e-05 -0.0004188602732 5.535952562e-05 -5.476069937e-05 -2.563427185e-05 -1.782984313e-05 -4.550464061e-05 -6.778453955e-05 0.0002153168236 -0.0006479127429 -3.345564142e-05 -0.0007064625129 8.431794921e-05 5.492999199e-05 3.639174142e-05 2.995741295e-05 6.297052243e-05 9.044678494e-05 +-5.43367812e-05 -6.319732843e-05 1.404289788e-05 -8.975639703e-05 -1.697556054e-05 -0.0001764440192 0.0001513554704 9.450211266e-06 0.0002229738258 -1.332273017e-05 1.509234078e-05 1.453396284e-05 2.876013438e-05 2.086728417e-05 -3.659401998e-05 3.818370842e-05 0.0002411955489 2.806555349e-05 0.0003476110205 -3.813077364e-05 -1.00941839e-05 -1.53225642e-05 0.0002765352835 -1.953849653e-05 -0.0003500909655 +2.96571213e-05 1.423958929e-05 3.252461412e-06 2.409124166e-05 -3.870664572e-06 -1.669722914e-05 -6.231162624e-06 -5.057539912e-06 -1.5643124e-05 6.215426925e-06 -4.729191384e-06 -4.699370714e-06 4.35525207e-05 -6.79514154e-06 -5.54719436e-05 1.768286491e-05 6.698425427e-06 -1.757253194e-05 -1.924287136e-06 2.235642123e-05 -1.895429233e-06 1.059347291e-06 -2.9327404e-05 1.765780176e-06 3.731713508e-05 +6.286452306e-06 1.531576637e-05 -1.547441537e-06 2.239285893e-05 2.150651339e-06 4.270392876e-06 -2.001456843e-05 -2.965436211e-06 -2.980199118e-05 3.897392398e-06 -4.467900182e-06 -2.655029196e-06 3.80421375e-06 -3.855396334e-06 -5.066388606e-06 1.503342595e-05 -3.139937335e-05 -5.472694035e-06 -4.713383968e-05 7.258198867e-06 3.889931042e-06 2.964223292e-06 -4.07189982e-06 4.357196081e-06 5.415476343e-06 +-5.055761176e-06 -9.150297385e-06 2.001924969e-06 -1.378062323e-05 -2.681873191e-06 -1.834958406e-05 1.482871411e-05 1.561164997e-06 2.328724748e-05 -2.05367818e-06 1.943187349e-06 2.238083588e-06 -4.562615403e-06 3.336622354e-06 6.214676108e-06 -2.890824327e-06 2.185975205e-05 4.492872729e-06 3.345571066e-05 -6.171005579e-06 -1.039370664e-06 -1.850933284e-06 3.342603711e-05 -2.731711779e-06 -4.564558756e-05 +-2.953953368e-06 6.827588253e-06 1.477885097e-07 1.001772969e-05 -3.344272505e-07 6.060498642e-06 -8.931458259e-06 -6.131588024e-07 -1.309581253e-05 9.314680346e-07 -3.772931554e-07 -4.148878987e-07 1.556306654e-06 -6.290842141e-07 -2.321817714e-06 9.890479468e-06 -1.393285202e-05 -1.360041387e-06 -2.040413992e-05 2.018178606e-06 2.302105706e-07 4.4030497e-07 -1.721426349e-06 6.669221989e-07 2.582554056e-06 +3.178501601e-06 -6.2622489e-07 -1.79487451e-07 -1.204553762e-06 2.230203965e-07 -2.110960773e-06 3.589554513e-06 -2.043543256e-07 5.876658016e-06 2.936632252e-07 -4.742457984e-07 -3.438078634e-07 3.8911099e-06 -5.204054818e-07 -5.543788191e-06 1.821970195e-07 6.261419215e-06 -7.421640173e-07 1.000784754e-05 1.046781816e-06 2.328434885e-07 1.910558859e-07 -3.109517807e-06 2.912252907e-07 4.43161653e-06 +-1.239498915e-06 -2.262713938e-07 1.753903938e-07 -2.987624979e-07 -2.250624419e-07 -1.637362221e-06 6.108584037e-07 1.078515052e-07 9.613777768e-07 -1.404531073e-07 1.775264815e-07 2.500654099e-07 -9.877880736e-07 3.61973329e-07 1.299372865e-06 5.059574844e-07 4.336703014e-07 5.72487504e-07 6.357639002e-07 -7.593539824e-07 4.164691327e-08 -1.037345718e-07 4.839171645e-06 -1.261642238e-07 -6.376834908e-06 +-2.996549077e-06 3.418960567e-06 -1.178192076e-07 5.395387365e-06 1.667001644e-07 2.626019428e-06 -4.812522812e-06 -2.138884965e-07 -7.531715729e-06 2.949641241e-07 -1.339356924e-07 -1.190211843e-07 -6.509646874e-07 -1.786034196e-07 9.134089435e-07 5.202058669e-06 -7.953409733e-06 -1.904028477e-07 -1.248503641e-05 2.603106897e-07 2.816369101e-07 2.622886014e-07 1.4763871e-06 3.939273766e-07 -2.071683797e-06 +0.09086076468 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03306159266 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02182822068 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01052223592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007858375479 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.000222681498 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.022593037e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +7.718524861e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-4.201446633e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001396377371 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.457436869e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.485692189e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.763178371e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.180233709 0.1704080901 -0.002179272351 0 0 0.0598428498 -0.3016992766 -0.003908278695 0 0 -0.001343397407 0.001553783855 0.04457120375 0 0 0 0 0 0 0 0 0 0 0 0 +0.09413405244 0.1113403236 -0.001115110979 0 0 0.0403065664 0.08832789527 0.001174035856 0 0 0.0001642620032 0.0005238917102 0.03585539551 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003236962605 0.002772711038 0.0001691958253 0 0 -0.003630440947 0.01021131546 -5.981607969e-05 0 0 -0.000109095331 -7.727165541e-05 0.001635029075 0 0 0 0 0 0 0 0 0 0 0 0 +0.01614772982 0.0003047634315 6.744308227e-05 0 0 0.005498444452 0.0001485208643 2.566664254e-05 0 0 -1.336875905e-06 -5.366101511e-06 0.0001195913887 0 0 0 0 0 0 0 0 0 0 0 0 +-9.980503917e-06 -0.0003470175375 -8.954420189e-06 0 0 -0.0005789736582 -0.001383512312 -3.651088472e-05 0 0 3.463831341e-05 1.127278852e-06 -0.0002255023072 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001564759277 -0.0006306550305 1.412672984e-05 0 0 -0.0001583696972 -0.0007486253288 -1.700613723e-05 0 0 9.240476272e-06 -9.393227563e-06 -0.0001335358156 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001139390192 1.316352679e-06 1.659347377e-06 0 0 -5.335707317e-05 2.842700587e-06 -5.226892078e-07 0 0 8.662265591e-06 -3.359130772e-07 9.759680856e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-9.056555547e-05 0.0001438667797 -4.128572854e-06 0 0 -6.020129977e-05 5.696104623e-05 7.272352059e-07 0 0 1.698959182e-07 1.953978937e-06 3.389482616e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.409416991e-05 -2.70930922e-05 -2.7423145e-06 0 0 -3.466937171e-05 -0.0001644505273 -3.512518168e-06 0 0 -1.174353181e-06 6.853171762e-07 -2.72968652e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-9.858949679e-05 -6.130985987e-05 1.1777267e-06 0 0 -7.193784734e-05 -9.89390869e-05 -3.068052812e-06 0 0 1.768698633e-06 -1.016655159e-06 -1.132011163e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.503563337e-06 -1.468769697e-05 1.236685582e-06 0 0 -4.790307912e-06 -4.464579903e-05 -1.287762168e-06 0 0 6.700327254e-08 -5.188799354e-07 2.457511736e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.687098655e-05 1.271269434e-05 -5.588207765e-07 0 0 4.565565147e-06 -2.09720261e-05 -5.420405705e-07 0 0 -3.584190139e-07 2.673779411e-07 2.41015689e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-8.513365969e-06 -5.265461636e-06 -2.655934663e-07 0 0 -7.181125703e-06 -3.993004043e-05 -1.054924226e-06 0 0 -9.113816181e-09 2.918072599e-08 -4.023169892e-06 0 0 0 0 0 0 0 0 0 0 0 0 +0.1483589987 0.2197665072 -0.002090491851 0.05276567194 0.0009984119027 0.0601328275 -0.278630482 -0.003418603767 -0.06852378161 0.0006216048113 -0.0009222494508 0.001856653142 0.05542955782 0.0004216248955 -0.0105453337 -0.1375582814 -0.1609888323 0.003080802584 -0.0384623933 -0.001112593387 -0.001598972572 0.001871252964 0.1533998307 0.0003617756787 -0.02918355947 +0.08006042153 0.1045889354 -0.000192556163 0.01571739753 0.0003152518793 0.06665967404 0.1151839688 0.002244806261 0.01754165498 5.099347826e-05 -8.989399824e-05 0.000992809736 0.06672720805 -3.321551934e-05 -0.008052366848 -0.01495790439 0.04288193359 -6.224021887e-05 0.006970165955 0.0001273591757 0.0009516843289 -0.000594414129 0.02692256135 -0.0001819146508 -0.003251648328 +0.001825117262 0.007287827512 0.0002713232565 -0.0001065597933 2.228781405e-05 0.0005484324205 0.03605525142 2.278261347e-05 -0.0001854674633 0.0001893026036 4.160004787e-05 -0.0001575862781 0.01068260061 -7.024588176e-05 0.0002045416111 0.0007375757577 0.01495258955 -0.000314638505 -0.0001015036102 6.392301947e-05 2.858441851e-05 -1.374032169e-05 -0.005784849424 3.550053869e-05 -0.0001122334629 +0.007162605631 -0.001120955949 9.045062439e-05 0.0007530476525 1.367715896e-05 0.004651803465 -0.0009809276622 1.587772219e-05 0.0006337046058 -2.328167781e-05 -6.200332746e-05 -3.335426496e-05 -0.0006824091894 2.553400273e-05 -0.0004654856932 -0.001238598145 -0.0005040278834 -2.297596391e-05 0.0002925907239 -1.310731645e-05 0.0001075621884 1.554597646e-05 -0.0006668702495 -2.14532086e-06 -0.0004553726247 +0.001177315172 -0.0002618971622 2.662097751e-06 -7.486782525e-05 -3.223145345e-06 0.0008480878752 -0.003399750293 -6.918575835e-05 -0.0007410984688 1.672704406e-05 6.925278265e-05 -1.376953145e-05 -0.000753698354 -6.755901953e-06 9.614330142e-05 0.001447407114 -0.001587611912 1.180979529e-05 -0.0003574067039 1.144649771e-06 1.56095852e-05 1.866776682e-05 0.0003918770059 5.20123225e-06 -5.016373491e-05 +-0.000575113804 -0.0002027065424 3.24201175e-06 1.361773829e-06 4.733696361e-08 -0.001090907254 -0.0004453798888 -1.241901325e-05 8.461356365e-06 -2.247452789e-06 1.974520054e-05 -7.582322328e-06 -6.203998922e-05 2.472980726e-07 -1.222828171e-05 -0.0003010707755 -0.0001938321772 -4.686083202e-06 6.731714012e-06 -7.838605633e-08 -1.657892956e-05 1.761494091e-06 -9.970182348e-06 -4.55451194e-07 -2.073449532e-06 +0.0001182854401 -2.559928604e-05 1.049595699e-06 1.007276712e-05 -8.249521431e-07 0.0001115708022 -7.1841076e-05 -3.204144336e-07 3.426094397e-05 -8.126658022e-09 3.468413878e-06 -7.310091381e-07 -2.511410939e-05 -6.532059787e-07 -2.097113891e-05 3.216683433e-05 -3.16701355e-05 -1.096524425e-07 1.579829762e-05 5.118733807e-07 1.11615938e-06 9.220835978e-08 9.710892639e-07 -3.543052052e-08 7.831834999e-07 +-8.607410262e-05 0.0001825304772 -7.178264728e-06 4.538228029e-05 1.629166765e-06 -9.240996518e-05 5.913401085e-05 2.588164273e-06 1.516597407e-05 -3.152476903e-07 2.650633127e-06 6.606384395e-06 3.988462754e-05 1.575989904e-06 -7.713654619e-06 2.067468484e-05 1.075460032e-05 3.889581175e-06 2.484358726e-06 -7.780383236e-07 -1.528950799e-06 -7.771540345e-07 7.251120584e-05 -2.249701464e-07 -1.401764547e-05 +-4.442559434e-05 -1.334373132e-05 -7.528904453e-07 -4.183223766e-06 6.221716204e-08 -0.0001331681845 -0.000209170339 -6.219777143e-06 -6.994717556e-05 1.499814465e-06 -8.161017626e-07 -1.222087056e-06 -3.757656315e-05 -4.599433615e-07 1.017533685e-05 -0.0001092884584 -0.0001045467275 -4.069953653e-07 -3.459559817e-05 -1.183942191e-07 -3.389603826e-06 1.6430233e-06 3.21819887e-05 6.311318182e-07 -8.728262645e-06 +7.019830728e-07 -1.076157958e-05 7.437151033e-07 -3.805224282e-06 -2.337923559e-07 -1.838761806e-06 -7.668274617e-05 -2.291533513e-06 -2.689854512e-05 5.698487731e-07 1.22376098e-07 -1.151298761e-06 -5.833039531e-06 -3.985041368e-07 1.676767052e-06 2.29389452e-06 -3.71190545e-05 -3.708013464e-07 -1.307240939e-05 6.127782964e-08 -1.867394999e-07 6.953634454e-07 7.26013003e-06 2.398808617e-07 -2.086683102e-06 +6.462860855e-06 1.761152389e-05 2.684735448e-07 4.423652159e-06 -1.019819651e-08 2.593447895e-06 -1.115823234e-05 -4.826969915e-07 -2.859781816e-06 9.44553241e-08 8.209922551e-08 -1.722180976e-07 1.285657191e-05 -6.009532793e-08 -2.597156137e-06 -4.436780176e-06 -8.324316121e-06 6.914241328e-08 -2.079201801e-06 -3.731517736e-08 -1.181382775e-07 2.338163508e-07 8.590310024e-06 5.007245539e-08 -1.735528764e-06 +1.382419603e-05 1.849900899e-05 -6.266312074e-07 5.964154596e-06 2.199659561e-07 6.726879978e-06 -2.025281028e-05 -3.918475554e-07 -6.759261346e-06 1.204458504e-07 -6.406152049e-07 5.523939269e-07 5.608188497e-07 1.889932816e-07 -1.546884823e-07 -1.195219912e-05 -1.284499561e-05 4.589858832e-07 -4.116147282e-06 -1.65831014e-07 -1.588597995e-07 2.089716727e-07 1.227742546e-05 6.656563405e-08 -3.348264742e-06 +3.839785833e-07 6.062793968e-06 -1.755613453e-07 1.889852274e-06 4.439546417e-08 -3.26529277e-06 -4.81366485e-05 -1.273513628e-06 -1.501367686e-05 3.055246123e-07 8.968303402e-08 -9.726521777e-08 -5.908119081e-06 -3.414422642e-08 1.471706734e-06 -5.402348805e-06 -2.499260709e-05 1.969544398e-07 -7.796710915e-06 -8.706992275e-08 -3.578102872e-07 4.332151885e-07 1.107193539e-05 1.420852458e-07 -2.759762387e-06 +0.4377220322 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.145572972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.6078891148 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1722724741 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01180459185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.008517838404 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.009519828134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004695523566 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001594313082 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001608246158 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.310737802e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003502994344 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.469474855e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.3936657271 0.1650210926 -0.002017547722 0 0 -0.2456051966 0.1234995148 0.008197418806 0 0 -0.003705746139 0.01113953534 0.6104289519 0 0 0 0 0 0 0 0 0 0 0 0 +0.288103785 0.06171231507 0.0005941412917 0 0 -0.1942540534 0.07294854343 -0.007328525436 0 0 0.0005917044056 -0.01076695211 0.3253781384 0 0 0 0 0 0 0 0 0 0 0 0 +0.02346563748 0.03806042077 -7.543476358e-05 0 0 -0.01511708678 -0.02971667829 -0.0004133206358 0 0 0.0009745355605 0.00248889383 0.008485356202 0 0 0 0 0 0 0 0 0 0 0 0 +0.0207707582 0.06274502775 -0.0002237265889 0 0 0.05568597121 0.1648411036 -0.0007001459108 0 0 -8.119923056e-05 -0.0004972777185 0.001473634797 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002805287258 -0.006637429354 -7.032383047e-06 0 0 -0.006555742641 -0.02152659721 0.0001931659437 0 0 1.976973294e-05 0.0002857708611 -0.0002065764223 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002172966508 -0.0001823211806 -2.244975497e-05 0 0 0.0001820899342 -0.00144589063 -3.017685724e-05 0 0 -2.865360594e-05 -5.504420001e-05 -0.0002607945731 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006547504451 0.00318731275 2.836770348e-05 0 0 0.002596182167 0.006211921094 -7.993575767e-05 0 0 1.308110619e-05 -0.0001137106125 -0.0008949702358 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000252289999 -0.0009178542102 -2.314023979e-06 0 0 -0.0009757657951 -0.003063884059 -3.124339086e-05 0 0 -2.621986927e-06 -3.010568325e-05 5.481677309e-05 0 0 0 0 0 0 0 0 0 0 0 0 +6.749310267e-05 -0.0001494555015 -1.80827313e-06 0 0 -0.0003088314959 -0.0001826524862 2.487913335e-05 0 0 -7.06677426e-06 1.155373968e-05 0.0003416637045 0 0 0 0 0 0 0 0 0 0 0 0 +6.805380452e-06 0.0005221653308 5.043946124e-06 0 0 0.0003861084392 0.0009353415589 2.494781398e-05 0 0 -1.850979264e-06 9.912578185e-06 -0.0002089462645 0 0 0 0 0 0 0 0 0 0 0 0 +-9.02725594e-05 -0.000224574611 -1.010907806e-06 0 0 -0.0001661058293 -0.001081671585 -2.552851534e-05 0 0 1.65585927e-06 -1.280747666e-05 -0.0001379460581 0 0 0 0 0 0 0 0 0 0 0 0 +2.430655546e-05 -6.687950372e-06 -2.685060111e-07 0 0 2.6825121e-05 -5.533743968e-05 -1.831429367e-05 0 0 2.772287408e-06 -6.418161275e-06 -5.050341415e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-5.764923035e-07 6.966778077e-05 5.191163519e-07 0 0 5.13090563e-05 0.0001181596675 -3.426373757e-06 0 0 2.800975457e-07 -1.542878386e-06 -1.422264045e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.03113433522 0.3654995846 -0.0006203809485 0.2181362454 -0.005330436287 -0.2224674961 -0.2928395011 -0.0003826897464 0.05289980475 0.0008584661158 0.0006020738191 0.0003242893507 0.01256884444 -0.0006793848153 0.08572261616 0.326745235 -0.2015431658 -0.0001673010604 -0.5167982756 -0.004511240378 -0.003945428236 -0.001295936569 -0.01178674982 0.003844728054 -0.08034351584 +0.2827127451 0.3248522796 -0.0001107668832 -0.1466186459 0.003680598108 0.07132208823 0.2415059548 -0.0003549406032 0.06907440634 -0.002168172765 0.001714835066 0.0005465484664 0.02266011755 -0.001544556639 0.0975586201 -0.1532411598 -0.06651824008 0.0001263557057 0.1523530782 -0.003095273457 0.005223587115 -0.0009878407627 0.1255553739 -0.005742452036 0.5404859242 +-0.001395044182 0.09218861299 0.0007213164602 0.04304231732 0.002414398085 0.05001741547 0.02413308105 -5.033491675e-05 -0.06380231056 0.0002888679617 0.000159475635 0.0002222923691 0.009483208818 6.787308773e-05 0.02001840514 0.04023649667 -0.1009253978 -0.0006574320342 -0.1049084181 -0.002221245656 0.0007867063705 0.0026644465 0.03099031877 0.000625061117 0.06544800705 +0.0002467798556 -0.00581911256 7.943391687e-06 -0.005444325442 -0.0001060027268 -0.01948916937 0.01534207995 -1.100482575e-05 0.0309745912 -0.0004109445796 -0.0001418661625 4.268654821e-05 0.0002554708771 0.0001755019505 -0.003494227661 -0.006158006768 0.01670188789 -8.648617044e-06 0.02055504321 2.536724023e-05 -0.0002658934332 4.537999141e-05 0.0001958060564 0.0002793462473 -0.002686008925 +0.002714323743 -0.005529051619 4.478047144e-05 -0.007470607341 -2.838794164e-05 -0.005292005294 0.009783532128 -1.585623118e-05 0.01347117065 -0.000138896186 -1.197961254e-05 -6.142664108e-06 -9.860229805e-05 5.067918606e-06 0.0003587925525 -0.007120712071 0.01337963655 -5.044636374e-05 0.01821386048 -0.0001025305947 -7.904784686e-05 -5.078502235e-05 -1.409908604e-05 -2.317170071e-05 6.050266777e-05 +-0.0005604327062 -0.0001542977314 1.30197282e-05 0.000791262668 5.612732621e-05 0.0002746631668 -0.001002167057 -1.14076945e-06 -0.001151202643 7.037365354e-05 -2.258037189e-05 -1.494263759e-06 0.0001358954422 2.078795312e-05 0.0005903026983 0.00064535006 -0.0009410073154 -1.803174484e-05 -0.00170562428 7.489224067e-07 9.917004087e-05 2.417115369e-05 -0.0005814809958 -8.072281862e-05 -0.002526972071 +-0.0007834470037 0.0007982394684 3.450156798e-06 0.001469654565 3.574391584e-05 -0.0002250974739 4.607517055e-05 8.354446627e-07 0.0002804136191 1.799157168e-05 2.996243435e-06 3.470609642e-06 -1.321252582e-05 -3.309526711e-07 -0.0001042721615 0.0009093474725 -0.0009239604384 -3.18603536e-06 -0.001704043259 -3.024046019e-05 8.437592482e-05 -5.469471466e-05 -5.047361666e-05 -0.0001331439754 -0.0003998973584 +0.0004270213037 2.341226474e-05 6.200099847e-07 -0.0003997749579 8.750937318e-06 -0.0001229020861 0.0005242226923 -7.71856491e-07 0.0005762853089 6.789698302e-06 1.160942469e-06 4.372385122e-07 1.120945104e-06 -7.255783657e-07 5.889311516e-05 -0.0005193922203 0.0003822281034 -1.298347392e-06 0.0008439385941 -3.538622617e-06 1.200236309e-05 5.217091354e-06 1.064647251e-05 -6.83413174e-06 0.0005598155939 +0.0001154022512 -7.025872054e-05 -4.006868959e-06 -0.0001703083997 -4.005616402e-05 -0.0002222157644 5.682117142e-06 -7.400136045e-07 0.0002450621875 9.643504413e-07 -9.112890238e-08 1.459415746e-07 7.7550732e-06 1.995905517e-08 6.74692395e-05 -0.0002281927476 0.0001411393158 2.637058542e-06 0.0003416936991 3.250761411e-05 -2.500606704e-05 -1.887449384e-05 9.820907813e-06 1.34173485e-05 8.619442352e-05 +-0.0003146589108 2.823760151e-05 -7.430810691e-07 0.0003636355096 4.769797e-06 -0.0001199364195 -0.0001999990708 7.901331597e-08 -2.022336013e-05 9.126943476e-06 1.205626249e-06 2.816770891e-07 -5.104358609e-06 -7.377822678e-07 -6.184984954e-05 0.0003423552585 -0.000163888206 5.670873541e-07 -0.0004962019144 -6.107177727e-06 6.958239427e-06 4.838751539e-06 -4.844604853e-05 -6.111848673e-07 -0.0005867744798 +-8.154912103e-05 2.349963776e-05 1.08410589e-06 0.0001016441994 1.907705895e-05 5.55600519e-05 -3.271774295e-05 1.544115111e-07 -8.113282913e-05 -3.750829821e-06 -4.344303303e-07 -3.966326584e-08 9.414713863e-07 3.863892993e-07 1.054267215e-05 0.0001480689475 -3.775082906e-05 -1.040134691e-06 -0.0001810971215 -2.414205757e-05 1.309672255e-05 3.96326625e-06 -1.31886699e-05 -1.030420223e-05 -0.0001480728968 +2.597350359e-05 -1.305090456e-05 1.036351514e-06 -3.821383116e-05 8.560626923e-06 -4.388062496e-05 3.476949613e-05 -2.734146596e-08 7.343918759e-05 1.17038979e-06 -3.475741023e-08 -4.441292728e-09 7.227456495e-07 1.786654216e-08 6.480704326e-06 -2.703168324e-05 7.044428495e-05 -1.131128411e-06 8.116959148e-05 -9.019484143e-06 6.98750646e-06 2.689919006e-06 -2.219675872e-06 -5.602678213e-06 -2.008837178e-05 +-4.346287581e-05 -6.82520199e-07 -1.471859497e-07 4.646167976e-05 -5.086272857e-07 -3.726499768e-05 -6.539398161e-05 -1.479671159e-09 -8.167550381e-06 7.049355893e-07 1.457862207e-07 1.190682555e-09 -1.026307258e-06 -1.237578708e-07 -1.107100585e-05 6.208843894e-05 -2.533366368e-05 3.753665694e-08 -8.568951229e-05 -1.269480624e-06 -2.608917164e-07 -2.090358395e-07 -7.289384366e-06 3.304923342e-07 -7.859125709e-05 +0.1680113313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01927795424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.158420246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04999157965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.00510149704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0006270011353 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001795768696 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001772295156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +8.036418351e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004096163982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.797170945e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.963694335e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.581851995e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08416899471 -0.05204102587 -0.01970440783 0 0 0.1901746346 0.01904502876 -0.194171729 0 0 0.01710167678 0.3972677973 0.1497744764 0 0 0 0 0 0 0 0 0 0 0 0 +0.07076384303 -0.03125185647 0.0002432528585 0 0 0.1278277112 0.1760535382 -0.1483528147 0 0 0.02659274496 0.1631233514 0.02052652257 0 0 0 0 0 0 0 0 0 0 0 0 +0.00691417029 -0.005003892476 -0.003482360733 0 0 0.02635409728 -0.029756087 -0.0672970385 0 0 -0.009123323727 0.01648855429 0.02378309686 0 0 0 0 0 0 0 0 0 0 0 0 +0.005795636725 -0.007588365649 -0.01497739296 0 0 -0.0006443206816 0.00511416381 0.005524593683 0 0 -0.01676580739 0.02264594019 0.0387194618 0 0 0 0 0 0 0 0 0 0 0 0 +-4.255032957e-05 6.865154277e-05 5.677622605e-05 0 0 0.0001466360726 -0.0001196812665 -0.0002950572612 0 0 -0.0001240696267 0.0004424553032 0.0001866168907 0 0 0 0 0 0 0 0 0 0 0 0 +-5.384218433e-05 1.829334567e-05 0.0003036350854 0 0 -0.0002905213168 -0.001531229683 -0.0002992739364 0 0 -4.425028408e-05 -0.0006894741267 -0.0001850743266 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001490042452 -0.0002407016428 -0.0005685972645 0 0 0.0001679456732 -0.001272368845 -0.0008533962272 0 0 -0.0005005453241 0.0001131851131 0.0009334658277 0 0 0 0 0 0 0 0 0 0 0 0 +-1.436099679e-05 4.463412077e-05 7.834757224e-05 0 0 6.821086704e-05 1.771850106e-05 -9.542400095e-05 0 0 8.160436077e-05 -4.212689688e-05 -0.0001727667408 0 0 0 0 0 0 0 0 0 0 0 0 +3.117300748e-06 -1.605760169e-05 1.855037462e-05 0 0 6.889657182e-05 0.0001634548237 -1.189354933e-05 0 0 7.188562246e-05 0.0001512195469 -2.023360995e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-7.997445771e-06 -1.914643519e-05 -6.869100215e-05 0 0 1.646150103e-05 -0.0003183791771 -0.0001386052015 0 0 -4.908370136e-05 -3.470544446e-05 0.0001033963266 0 0 0 0 0 0 0 0 0 0 0 0 +-9.693321716e-06 2.484681982e-05 3.571314371e-05 0 0 -9.997742719e-06 -0.000236661658 -0.0001045986205 0 0 1.336898149e-05 -0.0001406250986 -0.0001102609162 0 0 0 0 0 0 0 0 0 0 0 0 +8.223795997e-06 -6.595590898e-06 -1.07007683e-05 0 0 -1.695366975e-05 -6.123456067e-05 5.376600219e-06 0 0 -1.587014466e-05 -1.687181622e-06 2.376797963e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.307967644e-06 1.032077558e-06 -6.66209638e-06 0 0 4.479742153e-06 -5.425925439e-05 -1.845598684e-05 0 0 -3.749512758e-06 1.075830249e-06 1.106427225e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01167679522 -0.05766637102 -0.05337059977 0.09354070868 0.1300166827 0.1689140971 -0.1327787484 -0.2560409191 -0.04649308521 0.0008683423363 -0.02130260492 0.04026375093 0.06387008104 -0.007406486995 -0.03990096701 0.224169539 0.1082085146 0.02992455327 -0.2561431517 -0.4913894931 -0.0014687896 0.0320641896 0.1463450634 0.2727344884 0.04033484983 +0.1065115209 -0.01516701423 -0.08964775357 -0.05848468234 -0.1161632986 0.05173536572 -0.02768651105 -0.07597847774 -0.03607250232 -0.02976150722 -0.03782847284 0.05195002703 0.07837222926 -0.01505459495 -0.03215035433 -0.01810703595 0.01467347943 0.0494106467 0.0431200803 0.01055155693 -0.1081364584 -0.04602110471 0.1026223173 0.2472644853 0.247722675 +0.005270903236 -0.008730517166 -0.02448306033 -0.01008973507 0.0001119352299 -0.00595043348 -0.001481794074 -0.01342733676 -0.01675025997 0.00657573188 -0.01176697163 0.009229249086 0.009878936938 -0.01061162458 0.004059148124 0.007689406409 0.002219291516 0.01136038696 0.01488797442 -0.009984150054 0.01253162746 -0.0004717478462 0.03611835492 0.04851092578 -0.007943430708 +0.0003075968578 0.0002200555884 0.001277287042 -0.000118842651 -0.00153432702 -0.002834559652 -0.002964444806 -0.006149142462 -0.003809624236 0.007824410859 0.004758261919 0.003246044604 0.005269320508 0.00535964314 -0.007250132739 0.007347832983 0.008170726124 0.01424293796 0.01183092249 -0.0179964469 0.003145213355 0.003803002569 0.006686139883 0.005384655258 -0.008576102884 +0.0005370891308 0.0007973740576 0.001345144995 0.001347496436 -0.001353028224 0.0003042565401 0.0003601031904 0.0007519664423 0.0002410019332 -0.001008308966 0.001740235243 0.001813457827 0.003336894935 0.002409062892 -0.00417273393 0.002813567886 0.002144557047 0.00400739272 0.002701065256 -0.005584855718 -0.0006300762809 -0.0009269570907 -0.001673686698 -0.001255230257 0.001802444521 +-0.000287100324 -1.549916414e-05 0.0007805737227 0.001312223351 0.0007291089706 0.0002517761079 1.06412853e-05 -2.733160023e-05 3.265565894e-05 -0.0003048347652 0.0002718337643 0.0001574400535 0.0002509726741 0.0001580153134 -0.000446436706 0.0008246938213 0.000208930076 -0.0004760044381 -0.001012100118 -0.001516210701 0.0003216653761 -0.0001576677489 -0.001132120411 -0.001453848543 -0.000651940143 +-0.0003417104087 -0.0002453511204 -0.0004497358786 -0.0003513084468 0.0006371843867 -0.0002483722817 -0.0001991192857 -0.0003677916109 -0.0002900673875 0.0005085023096 -7.882562615e-05 -6.263215512e-05 -0.0001207084427 -9.643653368e-05 0.0001689162136 0.000264088563 0.0002140258197 0.0003974588287 0.0003015886194 -0.0005479197969 0.0007543510305 0.0005631283545 0.001036461397 0.0008105527038 -0.001455668186 +0.0001479090129 -1.604227629e-05 -5.930324619e-05 -9.204607565e-05 -0.0001570337399 2.150074451e-05 1.295426344e-05 1.229254008e-05 -4.103269958e-05 -6.364785078e-05 3.743155395e-05 9.999951243e-05 0.0001748002315 6.692862748e-05 -0.0001952489953 0.0001118980073 0.0001052087176 0.0002048866339 0.0002385449273 -0.0002063268979 -0.0001593820323 1.692161313e-05 9.259905481e-05 0.0002690658733 0.0002425994655 +3.616518842e-05 3.761279807e-05 8.205455826e-05 9.520818821e-05 -6.234391615e-05 9.849423623e-05 1.838282413e-07 -1.411563199e-06 5.024167896e-05 -8.985955174e-05 0.0001063887013 4.465033753e-05 7.933470189e-05 8.926964578e-05 -0.0001527533516 0.0001325553436 5.967148436e-05 6.439427657e-05 -2.77825196e-05 -0.0002452050832 -0.0001263354549 -6.653754545e-05 -0.0001054595659 -6.973410118e-05 0.0002134536192 +-0.000141394132 -4.237771057e-05 -4.993098119e-05 3.674376119e-05 0.0002352929677 -2.804664265e-05 -3.426033668e-05 -5.739631969e-05 -1.863648603e-05 8.101924881e-05 -1.918548982e-05 -2.967474863e-05 -5.096578546e-05 -2.089665072e-05 6.313445701e-05 0.0001065209177 2.773704572e-05 1.975900431e-05 -9.096874323e-05 -0.0001953465658 0.0002214457167 9.101313375e-05 0.000126643557 -1.52414632e-05 -0.0003938666061 +-2.734924009e-05 -3.267329013e-06 1.244621815e-05 5.650447421e-05 5.41426993e-05 4.174704303e-06 -1.182562118e-06 -4.398386602e-06 -6.596742553e-06 -5.112596061e-06 -1.270866359e-05 5.861651599e-06 9.647497475e-06 -4.625856835e-06 1.672560724e-06 4.143966836e-05 4.502105838e-07 -2.240339617e-05 -6.742435247e-05 -6.911609889e-05 4.412094255e-05 -2.167847282e-06 -2.129316935e-05 -4.896307799e-05 -5.983475407e-05 +-3.140914345e-06 2.84878331e-06 1.238712066e-05 2.625210188e-05 8.067833185e-06 1.957366797e-05 -3.895997092e-06 -7.121139991e-06 7.990858944e-06 -1.164899391e-05 1.374278584e-05 9.819931958e-06 1.781716671e-05 1.558048794e-05 -2.48950545e-05 3.414657011e-05 1.550377815e-05 1.339986968e-05 -2.095725269e-05 -6.870767189e-05 -5.840103392e-06 -8.1761496e-06 -1.699467919e-05 -1.757531969e-05 1.319322215e-05 +-1.876559202e-05 -4.316297314e-06 -2.249902008e-06 1.004821841e-05 3.068841129e-05 5.08378296e-06 -1.013149718e-05 -1.769685788e-05 -2.103189855e-06 1.076270288e-05 -1.01211293e-06 -6.136569744e-06 -1.062586976e-05 -3.236594759e-06 1.004237673e-05 1.935667755e-05 4.10054188e-06 -3.155221467e-06 -3.180069598e-05 -3.928077502e-05 2.119619767e-05 1.135543558e-05 1.710005022e-05 5.908201942e-06 -3.876960337e-05 +0.1684555805 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02171758813 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1520997191 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0557642902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.006008538232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.237233393e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001409059577 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001838713169 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001234530223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003496358882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.118147762e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.385265018e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.225563432e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08148251551 -0.04859078095 0.01733212924 0 0 0.1891704357 0.005720805433 0.1864516344 0 0 -0.01879757059 -0.3875247634 0.1435801149 0 0 0 0 0 0 0 0 0 0 0 0 +0.07319555807 -0.03204064793 0.000687521901 0 0 0.1319897975 0.1997459961 0.1359134215 0 0 -0.0285423183 -0.1761846884 0.0258001606 0 0 0 0 0 0 0 0 0 0 0 0 +0.007380281231 -0.004275064334 0.0006249689415 0 0 0.02967918105 -0.03021550783 0.07430666793 0 0 0.005872251908 -0.01436969402 0.01692513324 0 0 0 0 0 0 0 0 0 0 0 0 +0.00571282588 -0.007547932885 0.01479915898 0 0 0.0004143228869 0.003279875244 -0.002772953561 0 0 0.01718546446 -0.02284789078 0.03929811253 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004102404157 -0.00047975046 0.0008255466083 0 0 -0.0002803130594 0.0001646053171 -0.000463628941 0 0 0.001021785648 -0.001460450064 0.002097046074 0 0 0 0 0 0 0 0 0 0 0 0 +-8.623879459e-05 2.895353103e-05 -0.0003272763167 0 0 -0.0004070358521 -0.001543364306 3.653979345e-05 0 0 3.527019319e-05 0.0007531854097 -0.0001567572386 0 0 0 0 0 0 0 0 0 0 0 0 +9.412658461e-05 -0.0001540252966 0.000418239449 0 0 0.0003472018958 -0.001280216453 0.001159072007 0 0 0.0003290463242 1.494625285e-05 0.0005653554516 0 0 0 0 0 0 0 0 0 0 0 0 +2.497835534e-05 -4.78968401e-06 -3.891256395e-06 0 0 4.269638074e-05 0.0001292350503 -2.481603998e-07 0 0 -1.404984953e-05 -0.0001008810742 1.825197127e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.251968528e-06 -3.088386938e-05 1.967967141e-05 0 0 3.572493353e-05 0.0001450760656 -5.234225381e-05 0 0 -3.478583895e-05 -0.0001717606505 6.655778165e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.131433318e-05 6.295230783e-06 2.693115403e-05 0 0 4.559774244e-05 -0.0003935903319 0.000228169018 0 0 8.398583266e-06 0.0001189488793 -1.542043123e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.658723662e-06 1.524202463e-05 -2.575909087e-05 0 0 -2.224863177e-05 -0.0001918369359 6.281493016e-05 0 0 1.571839704e-07 0.0001055337915 -7.15556571e-05 0 0 0 0 0 0 0 0 0 0 0 0 +9.410288721e-06 -1.0662655e-05 1.944859112e-05 0 0 -1.498774614e-05 -4.059800503e-05 -1.679181045e-05 0 0 2.042944841e-05 -1.763615346e-05 4.395189905e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.379618222e-06 5.411551515e-06 -5.81867075e-07 0 0 8.347627218e-06 -5.747498722e-05 2.659058478e-05 0 0 -3.283563095e-06 8.292747645e-06 -6.507977373e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01730185265 -0.05605443236 0.04908367061 0.09844460676 -0.1363296624 0.1685447867 -0.1300672921 0.250744368 -0.0432002679 -0.002056190982 0.02089979084 -0.03689034051 0.05907415719 0.006625741517 -0.03578562671 0.2218087069 0.10408262 -0.0256575578 -0.2601078414 0.4832143734 0.0006915821979 -0.03338153741 0.138819015 -0.2502431501 0.03171847154 +0.1089641425 -0.0146817396 0.087780296 -0.05769203582 0.117802743 0.05690476105 -0.03080620932 0.08072551482 -0.03457378344 0.02984424951 0.03710308057 -0.05072449692 0.07723845158 0.01342749144 -0.03193609744 -0.01976967447 0.01511500702 -0.04850748551 0.03964746092 -0.01047935793 0.1159212022 0.04622717437 0.1010103807 -0.2451476004 0.2549237454 +0.007896313767 -0.008748468139 0.02647753799 -0.01094823082 0.00304853281 -0.004135360926 -0.00128349734 0.013850794 -0.01645449935 -0.004056937385 0.01295282896 -0.01002962013 0.01090041583 0.01123656579 0.004141119095 0.005820558435 0.001118176921 -0.01070873896 0.01446916557 0.00638395627 -0.009129091416 0.00325338135 0.03673320515 -0.05155520952 -0.0001426704191 +-0.0002547471502 -0.0004291745642 -0.0004737066779 -0.0004644434495 0.0002695891846 -0.00365186489 -0.003205449062 0.007033373967 -0.004895663633 -0.008961879955 -0.003726972981 -0.002818668876 0.004203302879 -0.003954390431 -0.00552172753 0.007037578647 0.007659744709 -0.0130797886 0.01107872351 0.01722438334 -0.004551269663 -0.004638801854 0.0084127212 -0.006882830801 -0.01127126085 +0.0005054612833 0.0008286869805 -0.001415405149 0.00154319436 0.001282054556 0.0001545633495 0.0002586780087 -0.0005439746882 -8.914145099e-05 0.0008117768725 -0.001876859275 -0.002065080791 0.003769732278 -0.002582858911 -0.004702329376 0.003275441508 0.002504944942 -0.004604684973 0.003014980726 0.006584834157 0.0003192131492 0.0007665326609 -0.001377993389 0.00100838997 0.001324395268 +-0.0001922471148 3.943356719e-05 -0.0008852507132 0.001334505182 -0.0005591877428 0.0003595519113 7.180804627e-05 -0.000116550995 0.0002284985925 0.0004667486703 -0.0005335249233 -0.00031618173 0.000555831214 -0.0004851755695 -0.0008817102654 0.001049444031 0.0004711989557 1.926502294e-05 -0.0006020725458 0.001999930904 -0.0001442052423 0.0002487506674 -0.001351267024 0.00163750303 -0.0003733241673 +-0.0003028069542 -0.0002378633286 0.0004420917065 -0.0003516322233 -0.0005806289599 -0.0002536003791 -0.0002022134795 0.0003853040511 -0.0003161364882 -0.0005151004333 0.0001544917321 0.0001181676892 -0.0002270760498 0.0001938776836 0.0003127116791 0.0001107321081 9.473912172e-05 -0.0001902577038 0.0001525322538 0.000246782491 -0.0006770095569 -0.000531598168 0.001005319587 -0.0008092573987 -0.001327307663 +0.0001437054783 -4.398129236e-05 0.0001223067892 -0.0001512110892 0.0001266820368 5.445089303e-06 -3.79522387e-07 1.792938181e-05 -7.964862626e-05 3.763545116e-05 -1.2188653e-05 -9.565150582e-05 0.0001633524152 -3.890468494e-05 -0.0001697160659 0.0001201574718 0.0001124888633 -0.0002255934993 0.00027403081 0.0002145881976 0.0001263323729 -6.837167923e-05 0.0002148722862 -0.0004153762136 0.0001719590368 +1.640985233e-05 4.861810823e-05 -0.0001155303984 0.0001439063502 4.003697161e-05 0.0001055845919 3.93628267e-06 -1.023126756e-05 7.58144461e-05 9.263317639e-05 -0.0001478838931 -6.210827604e-05 0.0001132044191 -0.000137111261 -0.0002065182333 0.00019040425 9.556330242e-05 -0.0001178624741 -1.151499833e-05 0.0003576223625 0.0001044939585 7.583599636e-05 -0.0001507725086 0.0001662355739 0.0001690105149 +-0.0001356910441 -4.221805743e-05 5.514632914e-05 3.032072413e-05 -0.0002256191578 -3.089074973e-05 -3.009298091e-05 5.138233412e-05 -2.216851679e-05 -7.581638904e-05 3.365225983e-05 3.23907261e-05 -5.650052976e-05 3.274631268e-05 7.825536255e-05 8.186997544e-05 1.389899888e-05 -1.982594039e-06 -0.0001005992306 0.0001508843221 -0.0002139747614 -8.503286586e-05 0.000123693006 9.736749729e-06 -0.0003724923113 +-1.670129566e-05 -3.334535525e-06 -9.690901007e-06 4.823131293e-05 -3.983646684e-05 5.051022961e-06 -1.431181745e-06 5.689599902e-06 -9.586964673e-06 6.554563364e-06 1.354499837e-05 -6.502648509e-06 1.032078871e-05 7.478210299e-06 5.154610063e-07 3.476168162e-05 -8.701569651e-07 2.283150376e-05 -6.079913782e-05 5.698910688e-05 -3.124721801e-05 2.612629163e-06 -1.698404608e-05 3.194052448e-05 -3.922927504e-05 +-1.188921863e-06 4.235304479e-06 -1.277988809e-05 2.178709928e-05 -2.305212236e-06 1.958207566e-05 -4.7733164e-06 8.144518197e-06 9.68388539e-06 9.108781154e-06 -1.748990758e-05 -9.628588932e-06 1.777018472e-05 -1.908544253e-05 -2.707567749e-05 3.237761597e-05 1.77768386e-05 -2.000538478e-05 -1.280947411e-05 6.769337162e-05 1.008018168e-05 7.723266327e-06 -1.455170826e-05 1.409697096e-05 1.802881028e-05 +-1.913238867e-05 -4.38204722e-06 2.506257564e-06 1.066694719e-05 -3.127066372e-05 3.960243417e-06 -9.000727095e-06 1.590917496e-05 -2.753504726e-06 -9.982355551e-06 3.27273544e-06 6.469172108e-06 -1.134263043e-05 5.179403117e-06 1.218065365e-05 1.717736838e-05 1.897432616e-06 6.388481603e-06 -3.435572132e-05 3.448317111e-05 -2.207084919e-05 -1.077202829e-05 1.590040358e-05 -4.439097044e-06 -3.895601261e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_1_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_1_ref.dat new file mode 100644 index 0000000000..87218c77fb --- /dev/null +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_1_ref.dat @@ -0,0 +1,195 @@ +0.003845021358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003548702313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002752428456 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003471551681 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.58404105e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-9.990228903e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-9.655245521e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-6.241907227e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.932706151e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.341511635e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.842172512e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +7.227953449e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.596609031e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001018558974 -0.001417046626 -0.05238872347 0 0 -0.00151294668 0.00208320574 0.07581915428 0 0 -0.06406395747 -0.770958849 -0.002950450166 0 0 0 0 0 0 0 0 0 0 0 0 +0.001055755094 -0.00147130983 -0.1232138992 0 0 -0.001743319007 0.00227810334 0.1826648452 0 0 -0.1204227189 -0.3211979942 0.0124151093 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005132052146 0.0004259052608 -0.08002588217 0 0 0.0003338449446 -0.0005457477344 0.1186202075 0 0 -0.07969328682 0.003687017346 0.003913144339 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007452063239 0.0007170057234 -0.02224016773 0 0 0.0007899761051 -0.001027469412 0.03232331413 0 0 -0.02319356007 0.03768872464 -0.001649456652 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003761639545 0.0003727556676 -0.001968646157 0 0 0.000422890393 -0.000542842129 0.002338604605 0 0 -0.002040026418 0.01011661501 -0.001642905809 0 0 0 0 0 0 0 0 0 0 0 0 +-9.619848919e-05 0.000108908437 0.002462165156 0 0 0.0001276960557 -0.0001594682413 -0.00362624245 0 0 0.002492013929 7.689295755e-05 -0.0006343753974 0 0 0 0 0 0 0 0 0 0 0 0 +2.412207514e-05 -2.336604767e-05 0.002220498933 0 0 -1.884116954e-05 2.964349276e-05 -0.003117195466 0 0 0.002105998342 -0.004114911601 -4.798625542e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.127591667e-05 -5.917927534e-05 0.000349687031 0 0 -6.340547453e-05 8.142916931e-05 -0.0004471932502 0 0 0.0003705969765 -0.0006665695064 0.0002475751164 0 0 0 0 0 0 0 0 0 0 0 0 +2.323612155e-05 -2.852125309e-05 -0.0003217130553 0 0 -3.148539967e-05 3.949586121e-05 0.0004398819116 0 0 -0.0003106875103 -9.230001068e-05 0.0001425097781 0 0 0 0 0 0 0 0 0 0 0 0 +-4.044573323e-06 4.681365745e-06 -0.0001948433917 0 0 4.786660916e-06 -5.869750979e-06 0.0002691042247 0 0 -0.0002076537904 0.0004109052273 -4.531169055e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-8.060580559e-06 9.594444814e-06 -4.64978321e-05 0 0 1.032788958e-05 -1.29247959e-05 5.776790524e-05 0 0 -5.277134034e-05 1.118170078e-06 -4.055780575e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.715006272e-06 1.948221775e-06 1.24340692e-05 0 0 2.36002053e-06 -2.638746803e-06 -1.584661662e-05 0 0 1.323666922e-05 2.702286918e-05 -9.168706955e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.631557018e-07 1.898875944e-07 2.470622851e-05 0 0 2.707532002e-07 -3.819526019e-07 -3.519029547e-05 0 0 2.120412626e-05 -8.781939352e-05 -3.549693886e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007760362961 -0.0005847980093 -0.02685008732 -0.0009313665549 0.03667439563 0.0002277739656 0.0001756284233 0.004618047768 0.000271284854 -0.006308215203 0.007392610049 -0.03700173886 -0.0004074490281 -0.05690525618 0.0006424098785 -0.00146700024 -0.001156234439 -0.0483452256 -0.001832371356 0.06603502227 0.06818537325 -0.07443720133 0.0001761948258 -0.1165365537 -0.0002208809307 +0.0002441814642 0.0002571245289 -0.01666282029 0.0003635934281 0.02299587136 0.0004154454909 0.0002750712735 0.01351371346 0.0004248732987 -0.01865374824 0.0156617963 -0.02431858275 0.0007936527055 -0.03813184264 -0.0011238359 0.0001509169985 0.0001616225154 -0.03386430119 0.0001969826804 0.04673752127 0.05116928658 -0.07310003876 -0.001149508846 -0.1147996876 0.001482771304 +0.0004260486674 0.0002951863737 0.0002339145867 0.0004419826457 -0.0003342977004 1.458124698e-05 -3.007867909e-05 0.01039398746 -5.654587294e-05 -0.01469909211 0.0126346399 -0.00208326228 0.0003537700863 -0.003911117054 -0.000609790919 0.0006053893718 0.0004274355127 -0.003389119632 0.0006440139403 0.004787512992 0.007273827192 -0.02820055946 -0.0005019469973 -0.04468383556 0.000648823165 +-1.382904298e-05 -4.608635169e-05 0.001722823111 -8.194109733e-05 -0.00263827326 -0.0001917713792 -0.0001370787132 0.002230801549 -0.0002238752915 -0.003412837776 0.003582024723 0.001524591334 -0.0002626040825 0.002286330115 0.0003153575105 -8.765377273e-07 -3.289002791e-05 0.002070309767 -6.147702907e-05 -0.003171294481 -0.003470613193 -0.002904671429 0.0003161664029 -0.004707215553 -0.000408510802 +-4.921652203e-05 -3.406817043e-05 -2.721952035e-05 -5.936357817e-05 -8.510595761e-05 -5.476070114e-05 -2.563426917e-05 -1.782984269e-05 -4.550463794e-05 -6.778454059e-05 0.0002588469252 -5.464123683e-05 -8.512480833e-05 -1.717111161e-05 0.0001246873513 -6.958299271e-05 -4.850148735e-05 -3.790666701e-05 -8.20752817e-05 -0.0001133633601 -0.0003127748903 -0.0001147182573 0.0001098487227 -0.000184455487 -0.0001515157618 +1.139063036e-05 1.399910564e-05 -0.0001395427693 1.875083498e-05 0.0001765793999 1.509234193e-05 1.453395101e-05 2.876014874e-05 2.086726718e-05 -3.659403806e-05 1.541761581e-05 -0.0001639430721 4.342263575e-05 -0.0002367780201 -5.332539367e-05 1.328083126e-05 1.358366824e-05 -0.0002381822395 1.727153562e-05 0.0003015228505 0.0002820680733 -0.0003134051096 -5.608037079e-05 -0.0004604017708 7.33673175e-05 +-1.174002696e-06 -2.843867692e-06 3.803846902e-05 -4.246449575e-06 -4.842766679e-05 -4.729195133e-06 -4.699372609e-06 4.355252719e-05 -6.795143886e-06 -5.547195189e-05 7.041593535e-05 2.92523495e-05 -6.841595659e-06 3.939545808e-05 9.221418124e-06 -2.38758947e-07 -2.844566874e-06 4.425203824e-05 -4.311806142e-06 -5.633005039e-05 -9.294357086e-05 -3.592371459e-05 8.388360573e-06 -4.724115775e-05 -1.135501488e-05 +-3.980575226e-06 -2.914675001e-06 4.053242834e-06 -4.277011232e-06 -5.3917457e-06 -4.467901653e-06 -2.655028208e-06 3.804214491e-06 -3.855394818e-06 -5.066389593e-06 2.40364306e-05 8.787606034e-07 -6.836015394e-06 2.37581123e-07 9.242364548e-06 -4.802281005e-06 -3.612068753e-06 4.930660341e-06 -5.304908881e-06 -6.558411555e-06 -3.232923539e-05 -4.60240714e-06 9.041648525e-06 -5.380507075e-06 -1.224030546e-05 +1.353349888e-06 1.926816486e-06 -2.108008434e-05 2.857235342e-06 2.878026781e-05 1.94318707e-06 2.238086216e-06 -4.562616434e-06 3.33662637e-06 6.214677512e-06 -3.77205006e-06 -2.332110681e-05 6.3031646e-06 -3.543697552e-05 -8.531170672e-06 1.386381648e-06 1.895552965e-06 -3.302799778e-05 2.788175318e-06 4.509966917e-05 3.321109484e-05 -2.349025257e-05 -8.708958436e-06 -3.700516157e-05 1.174838148e-05 +-3.009230601e-07 -4.359074444e-07 1.68452584e-06 -6.603486378e-07 -2.521810752e-06 -3.772934642e-07 -4.148877981e-07 1.556306952e-06 -6.290840713e-07 -2.321818149e-06 3.05546455e-06 2.354620136e-07 -8.20095571e-07 3.724276977e-07 1.023776277e-06 -3.290320345e-07 -5.130400679e-07 2.039994648e-06 -7.778093384e-07 -3.056965693e-06 -3.236738719e-06 -1.89381426e-06 8.90417145e-07 -2.786404066e-06 -1.067303964e-06 +-3.145362897e-07 -2.472968331e-07 3.517998509e-06 -3.760725857e-07 -5.013283278e-06 -4.742458531e-07 -3.438081951e-07 3.891110137e-06 -5.204060089e-07 -5.543788527e-06 5.609265697e-06 2.964437052e-06 -7.926637565e-07 4.386672895e-06 1.068749711e-06 -3.126752165e-07 -2.537864366e-07 3.880150583e-06 -3.866134767e-07 -5.52973627e-06 -6.446241046e-06 -5.417708154e-06 1.093764042e-06 -8.258070992e-06 -1.477308471e-06 +4.522413368e-08 1.54203205e-07 -3.196602286e-06 2.090463189e-07 4.211467425e-06 1.775263366e-07 2.500663278e-07 -9.877885805e-07 3.619747012e-07 1.299373527e-06 -6.276981748e-07 -3.706867337e-06 6.229997026e-07 -5.512417657e-06 -7.926713336e-07 -4.517227872e-09 1.090710991e-07 -4.846210231e-06 1.329581442e-07 6.385938646e-06 4.79172305e-06 -3.343569018e-06 -8.981638241e-07 -5.145474378e-06 1.189846523e-06 +-2.229633845e-07 -2.045207504e-07 -1.137306946e-06 -3.070866621e-07 1.595861731e-06 -1.339358024e-07 -1.190208786e-07 -6.509649964e-07 -1.786029426e-07 9.134093779e-07 -4.525920621e-07 -1.628827423e-06 -4.036520178e-07 -2.499975916e-06 5.618343459e-07 -3.043796831e-07 -2.752989518e-07 -1.576457716e-06 -4.131353221e-07 2.212106705e-06 2.642811738e-06 -9.629145814e-07 4.870747727e-07 -1.589888776e-06 -6.802059666e-07 +0.002185550894 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0009196921657 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0008139445476 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001666513093 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.71652118e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.204970449e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-9.165987834e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.468719428e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.358376934e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.836567947e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.055180344e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.716849934e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.076145087e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003446711571 -0.001877621658 -0.1122019104 0 0 -0.001343397408 0.001553783844 0.04457120371 0 0 -0.0914695659 -0.4478955269 -0.001832271135 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005753235893 0.0001526785356 -0.08717415488 0 0 0.0001642620028 0.0005238916259 0.03585539522 0 0 -0.03867413156 -0.007642618763 0.002262061831 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003605753761 0.0002451193476 -0.003434533961 0 0 -0.0001090953257 -7.727169429e-05 0.001635028995 0 0 -0.003998258858 0.008584003956 -0.0002248502041 0 0 0 0 0 0 0 0 0 0 0 0 +-1.098162511e-05 1.738553531e-05 -0.0003342560238 0 0 -1.336896847e-06 -5.366103039e-06 0.0001195913671 0 0 -0.007386981527 -0.0001153449112 -2.518539576e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001028265879 -8.654742886e-06 0.0006518599092 0 0 3.463830501e-05 1.12733194e-06 -0.0002255021931 0 0 -0.0004514561966 -0.001005170328 -2.403001977e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.346098689e-05 1.644291659e-05 0.0003348687344 0 0 9.240474662e-06 -9.393221584e-06 -0.0001335357797 0 0 -3.990165799e-05 -0.0001888427794 -2.897628523e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.743767241e-05 9.063565053e-07 -3.154903614e-05 0 0 8.662263116e-06 -3.359176978e-07 9.759671171e-06 0 0 -0.0001670938395 -1.029825368e-06 -2.113412223e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-5.474755469e-07 -3.397171348e-06 -8.482670971e-05 0 0 1.698958743e-07 1.953981584e-06 3.3894822e-05 0 0 1.949481538e-05 -5.894472601e-05 4.62246831e-06 0 0 0 0 0 0 0 0 0 0 0 0 +4.372448749e-06 -2.725752735e-06 6.785627766e-05 0 0 -1.174352608e-06 6.853274718e-07 -2.729684221e-05 0 0 8.629910285e-06 -0.0001413964239 -9.813438756e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-4.827831006e-06 1.959035515e-06 2.858151206e-05 0 0 1.768698495e-06 -1.016654988e-06 -1.132010938e-05 0 0 1.024370904e-05 -4.596086473e-05 -4.108101626e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.04658949e-07 1.340648138e-06 -7.442735896e-06 0 0 6.700336231e-08 -5.188814173e-07 2.457505623e-06 0 0 -3.707178487e-06 -3.010276644e-05 -2.362803039e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.022123023e-06 -6.117075244e-07 -8.67284318e-06 0 0 -3.584189204e-07 2.673781525e-07 2.410152339e-06 0 0 -1.182394821e-05 -3.167567812e-05 -2.047518231e-08 0 0 0 0 0 0 0 0 0 0 0 0 +9.882834462e-08 -2.520882874e-07 9.678120783e-06 0 0 -9.113794148e-09 2.918077162e-08 -4.023170293e-06 0 0 -8.817919449e-07 -3.472701791e-05 -7.932224404e-07 0 0 0 0 0 0 0 0 0 0 0 0 +0.002003497329 -0.001893211392 -0.1533383904 -0.0003698027506 0.02917303015 -0.0009222494508 0.001856653135 0.05542955778 0.0004216248939 -0.01054533369 -0.05293458608 -0.45206207 -0.001101969364 -0.1101918483 -0.0002810335306 0.001801321778 -0.001313146609 -0.14242829 -0.0002342281329 0.02709752355 -0.1450543188 -0.2762974703 0.0004421455736 -0.06660742191 -0.0007179121959 +-0.000619222563 0.000701116017 -0.0922641253 0.0003829701821 0.01113981513 -8.989399741e-05 0.0009928095857 0.06672720757 -3.321554181e-05 -0.008052366791 -0.05234628139 -0.05909691365 0.003791623253 -0.008808524323 -0.0006219988077 -0.0006125716459 0.00105762253 -0.01318858387 0.0002122704508 0.001595017272 -0.01778956666 -0.07960629603 -0.001244987814 -0.0124245593 -7.069186688e-05 +-9.236445e-05 0.0004200484833 -0.008194665944 5.619914446e-05 -0.0001541365642 4.160005167e-05 -0.0001575863567 0.01068260045 -7.024588058e-05 0.0002045416075 -0.003958267147 0.01660891765 -0.0002569850496 8.291243288e-05 0.0001342877963 -1.468218802e-05 6.48669609e-05 0.007831276078 -4.948930035e-05 0.0001518065673 0.001419652025 -0.001225042647 -3.780219477e-05 -7.462651186e-05 -3.247471899e-05 +2.28774278e-05 1.260264771e-05 0.001337825743 -1.939337606e-05 0.0009126333612 -6.200334505e-05 -3.335422359e-05 -0.0006824090429 2.553397636e-05 -0.0004654855928 -0.005318142579 0.001252873973 -0.0001390882871 -0.0008201902949 -5.641832492e-05 -7.848363441e-05 -2.035669361e-05 0.0004853296484 7.015757878e-06 0.0003313322972 -0.002250495498 0.001061831751 7.408286575e-06 -0.000658671189 2.674287987e-05 +-0.0001179816042 -9.750387949e-06 0.0008450576413 2.816875265e-06 -0.0001075990806 6.925276509e-05 -1.376943767e-05 -0.0007536981478 -6.755881046e-06 9.614327476e-05 -0.00246005494 -0.001660425853 -8.962169538e-05 -0.0003195092865 2.288837459e-05 1.977966482e-06 -2.720931097e-05 -0.0005159862683 -7.747073982e-06 6.599874023e-05 0.001514590564 -0.0001704724319 3.789576863e-05 -5.705703236e-05 -7.569688561e-06 +-1.625541463e-05 5.382491008e-06 6.638337476e-05 -6.433771838e-08 1.311937191e-05 1.974519949e-05 -7.582327623e-06 -6.203998537e-05 2.472983726e-07 -1.22282809e-05 0.000130010278 -1.050137803e-05 -2.077043034e-05 3.897731976e-06 -3.113396615e-06 1.509745612e-05 -3.21912439e-06 -2.70821667e-06 4.098311797e-07 -4.486517143e-07 -0.0001277897216 3.039605102e-05 7.206244914e-06 -2.026880922e-06 1.166257785e-06 +-5.873278457e-06 2.310955877e-07 3.228067218e-05 1.257974715e-06 2.702021544e-05 3.468413161e-06 -7.310036481e-07 -2.511409759e-05 -6.532083459e-07 -2.097112927e-05 -0.0001350797126 -1.451905152e-05 -2.694544171e-06 1.090499053e-05 1.269425803e-06 -1.10457991e-07 -3.941185994e-07 -4.288546104e-06 4.186303216e-08 -3.557349234e-06 3.481595265e-05 1.820829255e-05 1.218243607e-06 -1.011199291e-05 -3.626785383e-07 +-3.127467856e-06 -6.385075417e-06 -7.816581831e-05 -1.494286178e-06 1.51161474e-05 2.650632804e-06 6.606390291e-06 3.988462646e-05 1.575991353e-06 -7.713654408e-06 2.378374706e-05 -0.0001931674674 1.71000892e-05 -4.754432245e-05 -3.456984134e-06 1.434998098e-06 1.838728393e-06 -6.642298709e-05 4.821502393e-07 1.284113303e-05 4.836367834e-05 -0.0001291467056 -5.601968216e-06 -3.201229308e-05 9.336116706e-07 +3.791052749e-06 -4.586507177e-07 2.565129967e-05 -1.528010253e-07 -6.934400461e-06 -8.161014918e-07 -1.222083163e-06 -3.757655066e-05 -4.599420241e-07 1.017533347e-05 5.994088689e-05 -0.0001175641395 -5.74215408e-06 -4.041354076e-05 1.908486454e-06 2.838399491e-06 -2.000896667e-06 -3.65856631e-05 -7.542037088e-07 9.919464763e-06 -0.0001121800223 -3.573703226e-05 1.359981051e-06 -1.118083142e-05 -6.789675064e-07 +-2.925162283e-08 7.925829787e-07 3.594209966e-06 2.729870506e-07 -1.033632608e-06 1.223759899e-07 -1.151300333e-06 -5.833038824e-06 -3.985046862e-07 1.676766848e-06 -5.003744581e-06 -2.961531329e-05 -4.142307476e-06 -1.028947447e-05 1.172759086e-06 2.270899872e-07 -8.944946479e-07 -8.184425926e-06 -3.096122412e-07 2.352158949e-06 3.111205066e-06 -1.183282341e-05 1.343046622e-06 -4.210504764e-06 -4.040576429e-07 +-7.278573181e-08 3.365887825e-07 -2.181942966e-05 1.126881812e-07 4.408005451e-06 8.20992388e-08 -1.722188218e-07 1.285657031e-05 -6.009551032e-08 -2.597155816e-06 -5.210281387e-06 -2.49783952e-05 -1.112938825e-06 -6.307199796e-06 1.749116398e-07 1.460001118e-07 -2.01237993e-07 -7.698131454e-06 -4.31069098e-08 1.555440007e-06 -3.092757227e-06 -2.516503717e-05 3.321056859e-07 -6.374533525e-06 -1.061634617e-07 +9.787102771e-07 -7.653627535e-07 -8.52411679e-06 -2.602070668e-07 2.327123352e-06 -6.40615155e-07 5.523970593e-07 5.60824624e-07 1.889943137e-07 -1.546900554e-07 -4.353886388e-06 -3.734410736e-05 7.489962516e-07 -1.228763928e-05 -2.309471231e-07 1.341654675e-07 -1.311069818e-07 -1.232607305e-05 -4.057361003e-08 3.361482481e-06 -1.550142246e-05 -2.074333009e-05 -4.369798989e-07 -6.687360552e-06 6.40874957e-08 +1.009656706e-07 -2.52482736e-07 1.5708087e-06 -7.761128651e-08 -3.900892336e-07 8.968295252e-08 -9.726238886e-08 -5.908112122e-06 -3.414333983e-08 1.471705e-06 1.683973901e-06 -3.722318112e-05 -1.254894587e-06 -1.160572697e-05 3.409774568e-07 3.555694586e-07 -4.772141063e-07 -1.172130481e-05 -1.562365141e-07 2.921423929e-06 -5.497042629e-06 -1.531588514e-05 3.575964744e-07 -4.779341533e-06 -1.314031068e-07 +0.005735735339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004930258738 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001987217837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004779343363 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001307558178 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.841883737e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.594511554e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-4.651780762e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.222156355e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +7.045926204e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-8.453637287e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-6.70304799e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.172870888e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002431832303 -6.439768946e-05 0.0664000807 0 0 -0.003705746145 0.01113953537 0.6104289516 0 0 -0.3032096524 -0.982279319 0.0004095722564 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003648702982 -0.00148346575 0.04941938497 0 0 0.0005917043125 -0.01076695215 0.3253781403 0 0 -0.167707564 -0.288467284 0.002196805744 0 0 0 0 0 0 0 0 0 0 0 0 +5.402626241e-05 0.0002957192612 0.003159293183 0 0 0.0009745355725 0.002488893895 0.008485357017 0 0 -0.06433145375 -0.1954992677 -5.080685648e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.42470695e-06 7.335201498e-05 -0.00129166815 0 0 -8.119910257e-05 -0.0004972769906 0.001473633551 0 0 -0.01293211258 -0.03083063684 7.971380686e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.311308289e-06 -4.581827869e-08 -0.000254365092 0 0 1.97697251e-05 0.0002857707475 -0.0002065767553 0 0 -0.0008970936212 -0.003255398145 6.765140245e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.772860344e-07 3.689248742e-05 0.0003308529607 0 0 -2.865354175e-05 -5.504394157e-05 -0.000260792881 0 0 -0.0002455226607 -0.001939637841 -3.692986855e-05 0 0 0 0 0 0 0 0 0 0 0 0 +6.046807429e-08 -7.526220848e-06 -0.0001381973272 0 0 1.308111618e-05 -0.0001137106519 -0.0008949716532 0 0 -0.0004526429216 -0.002061973292 -5.742487386e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.619048039e-07 1.391997566e-07 -1.641457713e-05 0 0 -2.621984672e-06 -3.010565686e-05 5.481690154e-05 0 0 -8.787001124e-05 -0.0001950327493 -7.304659615e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.704212481e-07 4.96994137e-07 5.238045914e-05 0 0 -7.066769767e-06 1.155374913e-05 0.0003416645647 0 0 -2.562306398e-05 -2.435331118e-05 8.473221821e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-6.160963954e-08 -1.309516726e-06 -3.007963703e-05 0 0 -1.850976275e-06 9.912536261e-06 -0.0002089470876 0 0 -4.356668375e-05 -0.0003982133822 -1.16800467e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.767243839e-09 -2.661331582e-07 -9.572869833e-06 0 0 1.655858647e-06 -1.280746251e-05 -0.0001379459316 0 0 1.505824552e-06 -0.0001844991476 -1.082966945e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.522075895e-08 1.968019872e-07 3.990636625e-06 0 0 2.772285256e-06 -6.418144808e-06 -5.050078616e-06 0 0 1.066357929e-05 -3.233048041e-05 -7.560685917e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.516418002e-08 -2.598121898e-07 -7.177552615e-06 0 0 2.800983095e-07 -1.542884656e-06 -1.422291506e-05 0 0 -9.653119518e-06 -7.731408105e-05 -2.78378364e-06 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007194389739 0.0002038082402 0.04040618294 -0.001365377562 0.2755978327 0.0006020738186 0.0003242893504 0.01256884443 -0.0006793848148 0.08572261612 -0.3564862634 -0.7395823046 -0.0003871360573 -0.1029321604 0.002775643466 -0.009245326958 -0.00410107775 0.2045381652 0.00437560578 1.395264822 0.518122313 -0.3472701015 0.001287043182 -0.8385614236 0.002764642703 +1.487433237e-05 0.001075232409 -0.0258435286 0.0003640381677 -0.1112322713 0.001714835074 0.0005465484681 0.0226601177 -0.001544556645 0.09755862073 -0.1198916835 -0.2566367704 -0.0003576588586 -0.01679690654 -0.00233388106 0.009447084741 0.001559633743 0.1281902699 -0.009429617356 0.5519015269 -0.01644924236 -0.141687739 0.001999896431 -0.07292067515 0.008894659019 +-0.0001712033346 -0.0008160743189 -0.006296617847 -0.0002231528855 -0.01330186911 0.0001594756428 0.0002222923796 0.009483209262 6.787309067e-05 0.02001840607 0.007405990037 -0.03519947537 -4.449051542e-05 -0.02725598164 -0.0003190283951 0.0005681916373 0.0013759115 0.0218474281 0.0002098328909 0.04613241839 0.04570946326 -0.06795355146 -0.0005319905312 -0.09997655169 -0.001369382208 +7.194105263e-05 -1.80523147e-05 2.93255162e-05 -7.585122934e-05 -0.0003969937844 -0.0001418661923 4.268656061e-05 0.0002554709192 0.0001755019899 -0.003494228237 0.01053192284 -0.01797476719 6.436297351e-06 -0.02561634354 9.585806715e-05 5.189778945e-05 -0.0001112221313 9.081066778e-05 -0.0001409105956 -0.001238841164 0.02677508451 -0.04624383481 -1.421034363e-06 -0.06576156984 0.0003955537096 +1.80468721e-05 1.524576742e-05 -5.735063685e-05 1.317422384e-05 0.0002055165962 -1.197961537e-05 -6.142664496e-06 -9.860231478e-05 5.067920457e-06 0.0003587926135 0.0006808436666 -0.0009903645144 -7.826159863e-08 -0.001489973864 5.69015076e-06 -6.630372989e-05 -2.956621519e-05 -0.0001803835148 6.388456783e-06 0.0006609647336 0.00263392297 -0.00306193904 -2.11117373e-05 -0.004877646788 4.95234162e-05 +-5.551224268e-05 -1.613573866e-05 0.0003183354461 4.409996256e-05 0.001383585189 -2.258040175e-05 -1.494260367e-06 0.0001358956471 2.078798182e-05 0.0005903035879 -0.000161035427 -0.0005076935601 1.866319639e-07 -9.872107891e-05 3.264983624e-05 -2.412756675e-05 -2.768734968e-05 0.000110255624 7.752169425e-06 0.0004805978621 0.0007754646902 0.0008949624703 -2.342740094e-05 -0.0005896434733 -0.0001534032646 +-3.13056628e-05 2.310182324e-05 1.350968496e-05 5.166814566e-05 0.0001072184632 2.996250887e-06 3.470616773e-06 -1.321255485e-05 -3.309547252e-07 -0.0001042723907 0.0004566883919 -0.0006610167477 2.45242269e-07 -0.00100786284 -2.97039976e-06 2.443050166e-05 -1.287627295e-05 -2.048297581e-05 -3.615295272e-05 -0.0001620875691 0.001574846424 -0.002160589314 -2.395502306e-06 -0.003383628377 -3.697896403e-05 +-3.444942624e-06 -1.564215976e-06 -3.142763738e-06 1.896523027e-06 -0.0001652773636 1.16094511e-06 4.372391337e-07 1.12095045e-06 -7.255802769e-07 5.889339596e-05 -1.324167501e-05 -0.0001020326738 -1.384839651e-09 -7.41778163e-05 -2.928552477e-07 6.822734781e-06 2.071286808e-06 6.512378263e-06 -4.646883104e-06 0.0003423612541 8.88489523e-07 -0.0002013073598 8.032906351e-08 -0.0001743110103 -4.389738841e-06 +8.47298355e-06 6.717863252e-06 6.474085574e-06 -4.546711688e-06 5.606623187e-05 -9.113027377e-08 1.459414302e-07 7.755095865e-06 1.995987933e-08 6.746943672e-05 -0.0001098199933 -0.0001117973265 -9.340668227e-08 4.340880216e-05 1.485254496e-06 -1.389771846e-05 -8.558908927e-06 5.1530147e-05 7.708802676e-06 0.0004487259956 5.887257675e-05 6.059772005e-05 3.563309119e-06 -2.24919036e-05 2.968348884e-05 +-3.61415127e-06 -1.769587288e-06 1.779375321e-05 1.370052574e-06 0.0002155715834 1.205634386e-06 2.816789083e-07 -5.104386912e-06 -7.377877361e-07 -6.185019257e-05 2.83680774e-05 -9.226589102e-05 1.143209901e-07 -9.965819762e-05 9.099880502e-07 -6.609767943e-06 1.638241627e-06 -6.395501239e-06 8.753183369e-06 -7.706559299e-05 0.0003654950163 -0.0002275127147 1.669291565e-07 -0.0005648882617 -1.398687451e-05 +-5.792137957e-06 -1.6561143e-06 6.545965335e-06 4.596637799e-06 7.345321895e-05 -4.344347833e-07 -3.96634976e-08 9.41487143e-07 3.863931349e-07 1.05428484e-05 -1.971069526e-05 -2.118349901e-05 4.71925315e-08 5.514037931e-06 1.182781466e-06 -9.875029219e-08 3.057869419e-07 3.598367891e-06 1.731822791e-07 4.01975762e-05 6.847593728e-05 2.206648065e-05 -1.219743468e-06 -5.568537751e-05 -1.779569525e-05 +-2.938203081e-06 -1.084184124e-06 2.906128213e-06 2.344758586e-06 2.613387219e-05 -3.475792793e-08 -4.441467432e-09 7.22750228e-07 1.786687462e-08 6.480745388e-06 -2.886398574e-05 -3.825204875e-05 2.112493065e-08 4.047565536e-06 6.615868668e-07 2.322789352e-07 2.617386819e-07 1.119047794e-05 -3.170890068e-07 0.0001003206118 2.934235785e-05 1.463801583e-06 -8.941996999e-07 -3.079578006e-05 -8.893905747e-06 +-1.622535002e-07 3.557427522e-09 3.547692145e-06 7.541886263e-08 3.825779852e-05 1.45787e-07 1.190852732e-09 -1.026316621e-06 -1.237582954e-07 -1.107110683e-05 -1.385871581e-05 -3.729705494e-05 2.051573455e-08 -1.270568715e-05 4.660156858e-07 -2.243166133e-06 -5.557524152e-07 5.515003334e-06 1.822889884e-06 5.953006731e-05 5.862004797e-05 -3.007876897e-05 5.161263285e-08 -8.551978527e-05 -1.026682448e-06 +0.1605559926 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.06314180663 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2304591168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08706825373 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.007204959128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001089962883 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003111642416 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002948932931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001233514346 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007689512806 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.529282369e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.721823517e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.917660868e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.15120334 -0.02061744682 -0.06598870553 0 0 0.01710167679 0.3972677978 0.1497744762 0 0 0.09120234515 -0.415231316 -0.07303497977 0 0 0 0 0 0 0 0 0 0 0 0 +0.1270632849 -0.004716165091 -0.03190421961 0 0 0.02659274511 0.1631233486 0.02052652451 0 0 0.06814078072 -0.03635213654 -0.01328759918 0 0 0 0 0 0 0 0 0 0 0 0 +0.01194058398 -0.002589583574 -0.007929251179 0 0 -0.009123323661 0.01648855173 0.02378309804 0 0 0.02685287888 -0.03561471947 -0.05067619252 0 0 0 0 0 0 0 0 0 0 0 0 +0.01014316269 -0.01437611454 -0.02538607523 0 0 -0.01676580766 0.02264594252 0.03871946123 0 0 -0.01781741501 0.02333330715 0.03642208285 0 0 0 0 0 0 0 0 0 0 0 0 +-9.008048512e-05 8.212977957e-05 0.0001471423332 0 0 -0.0001240696347 0.0004424548862 0.0001866170087 0 0 -8.296128913e-05 -0.0007556535665 -0.000674489528 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001241985506 0.000392522749 0.0004800984419 0 0 -4.425032174e-05 -0.0006894767707 -0.000185073491 0 0 0.0007826998469 -0.001961936183 -0.001303519555 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002778583686 -0.000616888765 -0.0009775982901 0 0 -0.0005005453017 0.000113187701 0.0009334648382 0 0 -0.0005547006839 0.0005374341782 0.0008833381519 0 0 0 0 0 0 0 0 0 0 0 0 +-2.371480774e-05 8.47582421e-05 0.0001380844431 0 0 8.160435127e-05 -4.212778235e-05 -0.0001727662706 0 0 0.0001635537057 -0.000245657225 -0.0003983296104 0 0 0 0 0 0 0 0 0 0 0 0 +5.749646106e-06 1.826599341e-05 1.051803486e-05 0 0 7.188562406e-05 0.0001512193913 -2.023353116e-05 0 0 5.944844266e-05 -7.936157097e-05 5.764731034e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.37520846e-05 -7.703135831e-05 -0.0001089464982 0 0 -4.908369446e-05 -3.470413582e-05 0.0001033957516 0 0 -3.836080015e-05 -3.461707277e-05 2.635199322e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.660697326e-05 4.09965501e-05 6.335195638e-05 0 0 1.336898498e-05 -0.0001406260443 -0.0001102605582 0 0 3.430621147e-05 -0.0001986717678 -0.0001837228345 0 0 0 0 0 0 0 0 0 0 0 0 +1.571158241e-05 -1.039093165e-05 -2.06969058e-05 0 0 -1.587014354e-05 -1.687045013e-06 2.37679308e-05 0 0 -2.746066676e-05 -2.328114699e-05 4.778538569e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.796327001e-06 -7.420134253e-06 -8.553249831e-06 0 0 -3.749512265e-06 1.076206455e-06 1.106409867e-05 0 0 -1.052748388e-06 -3.425991529e-05 -2.026265232e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.02148235196 -0.06589379103 -0.1274022148 -0.06033481678 0.056872894 -0.02130260491 0.04026375095 0.06387008102 -0.007406487131 -0.03990096709 0.1368678995 -0.1015804162 -0.1728319624 0.03389045704 0.01456899245 -0.2655200481 -0.1086544865 -0.05583442241 0.1608323166 0.5069346533 0.158740401 0.08024889143 -0.02257392623 -0.3205927597 -0.3981083281 +0.1108031961 -0.04136377197 -0.121301737 -0.04583558042 -0.08149678356 -0.03782847283 0.05195002667 0.0783722295 -0.01505459348 -0.03215035349 0.006108390883 0.006575909424 0.03348905633 0.05115194822 -0.00410523164 -0.05110543994 -0.04676736092 0.0194970464 0.1287524475 0.1552459713 -0.07497229797 -0.002943061514 0.01592539077 -0.01316301587 0.08787841838 +0.007025717632 -0.01854500082 -0.03660304445 -0.00832728679 0.008137125343 -0.01176697159 0.009229248082 0.009878937473 -0.01061162257 0.004059149395 -0.01983579829 -0.002731889414 0.005502633575 -0.00455666225 0.02746695335 -0.01375347569 -0.02508016749 -0.02080190675 0.002323883877 0.0435438958 0.003459035837 0.01170063962 0.03002490422 0.01795448768 -0.01279464989 +-0.003767573492 -0.001985816623 -0.002443431666 -0.003895476699 0.003818465312 0.004758261827 0.003246044328 0.005269320573 0.005359642483 -0.007250132901 0.00224816884 -0.000459499089 -9.601444054e-05 -0.0004031666234 -0.0008709877899 -0.01212290868 -0.00928053908 -0.01528051904 -0.01485850033 0.02039866008 -0.002154372657 -0.002918950852 -0.005566110636 -0.003872853594 0.006727974618 +0.001246437959 0.00132092773 0.002229249457 0.002233331681 -0.002478405825 0.001740235198 0.001813457871 0.003336894901 0.002409063244 -0.004172733691 0.002357468818 0.002709128417 0.004797676017 0.004063325022 -0.005596342125 0.001112814968 0.001445128743 0.002215018722 0.002999723912 -0.001976916577 -0.003428555074 -0.003750369298 -0.006622254916 -0.005635468447 0.007748823251 +9.284817926e-05 6.966329552e-05 0.0005354813126 0.0007939766888 6.058951669e-05 0.0002718336768 0.000157439787 0.000250972805 0.0001580161984 -0.0004464360726 0.00056862242 0.0001193530616 0.0003067182232 0.000479564803 -0.0006683173364 0.0005561392729 5.295010073e-05 -4.949476797e-05 -4.879818781e-05 -0.0006768279358 -0.0002818384299 -0.0001440068756 -0.00105705426 -0.001634933078 2.658100437e-05 +-0.0005001406974 -0.0003785399442 -0.0006721875308 -0.000550747691 0.0009354896601 -7.882559351e-05 -6.263221938e-05 -0.0001207084524 -9.643666008e-05 0.0001689161487 -0.000328892462 -0.0002879185288 -0.0005065865677 -0.0004353525659 0.0006809532477 -0.0005981454 -0.0005016886361 -0.0008601909068 -0.0007460428752 0.001160401303 0.0006166707504 0.0004471949905 0.0008104130553 0.0006526552602 -0.001144189157 +0.0002060380615 -1.293403651e-05 -3.841108018e-05 3.546908071e-05 -0.000167318188 3.743154853e-05 9.999942061e-05 0.0001748002592 6.69296737e-05 -0.0001952483728 6.496846214e-05 0.0001248805784 0.0002352066451 0.0001926193668 -0.000216118185 4.812791895e-05 2.485827614e-05 9.39798544e-05 0.0003321112144 4.532489878e-05 -0.0002672749074 -0.0001070234052 -0.0001718536799 -0.0001297485322 0.0004118047291 +7.590309256e-05 7.661482801e-05 0.0001372480194 9.434655183e-05 -0.0001650108859 0.0001063887201 4.465042764e-05 7.933465708e-05 8.926902257e-05 -0.0001527537326 0.0002297318811 5.411167221e-05 9.575322841e-05 0.0001642418294 -0.0002752079553 6.274961696e-05 6.499373916e-05 0.0001474572121 0.000185743108 -0.000102084816 -0.0001682808713 -0.0001112978227 -0.0002438959302 -0.0003227928384 0.0002388629818 +-0.000140222397 -4.61833361e-05 -7.103743289e-05 -4.671298676e-05 0.000206585807 -1.918546476e-05 -2.967472673e-05 -5.096579974e-05 -2.089692e-05 6.313428103e-05 -4.422625347e-05 -6.564142158e-05 -0.0001220241636 -9.864996767e-05 0.0001195341024 -9.949271859e-05 -5.834259913e-05 -0.0001157668012 -0.000162337968 0.0001378279067 0.0002200115659 9.499222021e-05 0.0001394085288 2.018061488e-05 -0.0003852895176 +-5.898135714e-06 -6.732358633e-06 -2.120466411e-06 3.348238227e-05 2.87020461e-05 -1.270869894e-05 5.861594105e-06 9.64752299e-06 -4.625420141e-06 1.672852724e-06 -1.307935907e-05 3.20897608e-06 8.892770574e-06 9.771299107e-06 1.140318622e-05 -2.117912399e-06 -3.976568981e-06 -1.032299124e-06 2.142630289e-05 1.609299363e-05 4.100108049e-05 3.793207832e-07 -2.151739133e-05 -6.892964176e-05 -6.756932996e-05 +7.233485519e-06 9.028781829e-06 1.77153055e-05 1.61014426e-05 -1.65796617e-05 1.37427955e-05 9.81996798e-06 1.781714808e-05 1.558022299e-05 -2.489521796e-05 3.644630738e-05 8.765313309e-06 1.484926476e-05 2.403172727e-05 -4.429957496e-05 -9.793583283e-07 9.625520165e-06 2.25667192e-05 2.549051305e-05 -5.56840228e-06 -6.712301239e-06 -1.745641783e-05 -4.599354799e-05 -6.882951713e-05 1.086534168e-05 +-2.17622188e-05 -4.315878856e-06 -6.362200687e-06 -9.513177112e-06 2.623352253e-05 -1.012111768e-06 -6.136566783e-06 -1.062587164e-05 -3.236623092e-06 1.004235954e-05 4.221935536e-06 -1.675084545e-05 -3.146825071e-05 -1.544813735e-05 1.751530331e-05 -3.127733399e-05 -1.120088437e-05 -1.713567686e-05 -1.269494285e-05 4.626896473e-05 3.896778581e-05 1.533229019e-05 1.656552994e-05 -1.447259944e-05 -7.180965349e-05 +-0.1565035168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.05521929869 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.2203817969 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0954712408 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.009312403932 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.252685489e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002387073434 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003173378587 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002264044934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0006983006766 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-8.478367363e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.726158647e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.925803785e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1459154955 0.01815699322 -0.06258386373 0 0 -0.0187975706 -0.3875247633 0.1435801151 0 0 0.09010976488 -0.4308585095 0.08188932708 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1312437911 0.004031772832 -0.03324431791 0 0 -0.02854231854 -0.1761846891 0.02580016043 0 0 0.0665203365 -0.03168359652 0.01084512203 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01298766056 1.283180046e-05 -0.004099285529 0 0 0.005872251962 -0.01436969459 0.01692513304 0 0 0.03223798535 -0.04164856835 0.05893174428 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00998368546 0.01433753261 -0.02519501753 0 0 0.01718546511 -0.02284789157 0.03929811458 0 0 -0.01585330824 0.02057829632 -0.03173552688 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007270120507 0.000802708188 -0.00150247058 0 0 0.00102178568 -0.00146045006 0.002097046002 0 0 -0.001781410349 0.001166308904 -0.00328205823 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001750414196 -0.0003775497277 0.00049350259 0 0 3.52703652e-05 0.000753184938 -0.0001567572819 0 0 0.0008016015917 -0.00184383668 0.001066244219 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001806968599 0.0004483718949 -0.0007007909029 0 0 0.0003290463464 1.494656328e-05 0.0005653556865 0 0 -0.0002159022455 0.0001181905739 -7.270079804e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.670408721e-05 -9.12754793e-06 -1.705895939e-06 0 0 -1.404985821e-05 -0.0001008812469 1.825190834e-05 0 0 2.557432656e-05 -4.101273138e-05 2.487568462e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-9.018325865e-06 2.100252618e-05 -5.301638357e-05 0 0 -3.478583667e-05 -0.0001717606567 6.655777384e-05 0 0 -1.374587517e-06 -1.342570649e-06 -0.0001957326494 0 0 0 0 0 0 0 0 0 0 0 0 +3.735484528e-05 3.143835479e-05 -3.212737166e-05 0 0 8.398579817e-06 0.000118949105 -1.54203578e-05 0 0 3.514517255e-05 -0.000155400318 0.0001744226993 0 0 0 0 0 0 0 0 0 0 0 0 +2.147993972e-06 -3.0055902e-05 4.399081741e-05 0 0 1.57183148e-07 0.0001055336255 -7.155572149e-05 0 0 1.053355792e-05 -0.0001538894436 0.0001079801991 0 0 0 0 0 0 0 0 0 0 0 0 +-1.795069853e-05 1.964355745e-05 -3.540921172e-05 0 0 2.042944566e-05 -1.763613684e-05 4.395192645e-05 0 0 -3.7035951e-05 2.460698346e-06 -7.676146842e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.434302163e-05 -3.527585356e-07 4.795889394e-06 0 0 -3.283563249e-06 8.292810317e-06 -6.507943507e-06 0 0 1.114192527e-05 -5.156447718e-05 5.204129467e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01656773976 0.06298958963 -0.1206826168 0.05683650409 0.05951869416 0.02089979084 -0.03689034051 0.05907415719 0.006625741505 -0.0357856267 0.1394553624 -0.1014557493 0.1746334171 0.0312987474 -0.01428003229 0.2604936706 0.1037507228 -0.0534299523 -0.1560970395 0.4904869223 0.1671029956 0.08005342399 0.02356527384 -0.32675476 0.409404699 +-0.1104105626 0.03929192405 -0.119522929 0.05105955441 -0.08313813933 0.03710308057 -0.05072449702 0.07723845152 0.01342749184 -0.03193609768 0.01177608824 0.002868221058 -0.02615940227 0.05076953958 0.00561323339 0.06028039886 0.04488739013 0.02085173239 -0.1230444622 0.1614501552 -0.07213682235 -0.001831842762 -0.01193873294 -0.01984614709 -0.08062678558 +-0.01038622037 0.01832503151 -0.03814091913 0.008610621598 0.00413260964 0.01295282897 -0.01002962033 0.01090041572 0.0112365662 0.004141118835 -0.01971869654 -0.002247117629 -0.007114198724 -0.0027209612 -0.0263723682 0.01241286031 0.02354156932 -0.01650073956 -0.006281287007 0.04071391862 0.001038730875 0.01122797113 -0.03027466438 0.01765408437 0.009277735095 +0.004518304839 0.003279862511 -0.004320499656 0.004539760965 0.005868886064 -0.003726972996 -0.002818668927 0.00420330288 -0.00395439049 -0.005521727544 0.000439467774 -0.001686495263 0.001845046706 -0.002238024977 -0.002605903598 0.01299482619 0.01113575837 -0.01788457419 0.015811102 0.02328089162 -0.0001987529474 -0.0009701160532 0.002075860864 -0.001426210277 -0.002545412381 +-0.001202067998 -0.001204485333 0.002051440134 -0.002301401178 -0.002188482729 -0.001876859278 -0.002065080794 0.003769732284 -0.002582858913 -0.004702329386 0.002387457799 0.002879634936 -0.005122184213 0.00432919363 0.005828516445 -0.0009339463663 -0.001072848593 0.001667188687 -0.002922923142 -0.001183744035 -0.003640615685 -0.004026599809 0.007150277711 -0.006100323813 -0.008285414378 +-0.0002873564746 -0.000271598215 0.0008699237341 -0.0009828256991 -0.000363548752 -0.0005335249309 -0.0003161817742 0.0005558311916 -0.0004851754248 -0.0008817103617 0.00101873783 0.000435383522 -0.0008225910255 0.0009260979152 0.001496522984 -0.0008546523952 -0.0003798486939 0.0004025438676 -0.0001943569931 -0.001370020551 -0.0007676005188 -0.0005240355119 0.001717414841 -0.002114325228 -0.0009473966637 +0.000495299044 0.0004094370198 -0.0007241052539 0.0005775582822 0.0009624309669 0.0001544917333 0.0001181676721 -0.0002270760522 0.0001938776844 0.0003127116722 -0.0004346422118 -0.0003743070313 0.0006481945829 -0.0005430038825 -0.000897025027 0.0006332930576 0.0005613710363 -0.0009367719122 0.0007582693074 0.001273543606 0.0006786306589 0.0005359148278 -0.0009777242996 0.0007870683986 0.001300893079 +-0.000194217068 5.263810255e-05 -0.0001149656491 1.493957117e-05 -0.0001081769859 -1.218865552e-05 -9.565152487e-05 0.0001633524075 -3.890449861e-05 -0.0001697161779 1.777242751e-05 9.873965647e-05 -0.0001942948881 0.0001676705359 0.0001299371277 -3.164865395e-06 1.456432031e-05 4.875149639e-05 -0.000353618654 0.0001630608675 -0.0002337511277 -5.765015902e-05 7.574963436e-05 -5.738279161e-05 -0.0003184970911 +-6.927548546e-05 -0.0001024254235 0.0001891191476 -0.0001307195624 -0.0001844747581 -0.0001478838902 -6.210826129e-05 0.0001132044263 -0.0001371113678 -0.000206518168 0.0002902436565 8.541498646e-05 -0.0001456285675 0.0002038636722 0.0003725305011 -8.781048227e-05 -8.889575207e-05 0.0001689227995 -0.0001476824322 -0.0001787566832 -0.0001964766017 -0.0001564460219 0.0003350822065 -0.000418748555 -0.0003022825236 +0.0001352603892 4.918425489e-05 -7.799192931e-05 4.65393382e-05 0.0002041404741 3.365226258e-05 3.23907288e-05 -5.650052829e-05 3.274627271e-05 7.825538797e-05 -6.815047097e-05 -6.654998543e-05 0.0001216659769 -0.0001048212934 -0.0001429678881 9.454149262e-05 5.644210482e-05 -0.0001083831224 0.0001473350763 0.0001321828113 0.0002255611084 9.876034315e-05 -0.0001534269369 4.345187781e-05 0.0003860197437 +-3.748845633e-06 8.399155152e-06 -6.596855156e-06 -2.916205091e-05 1.982561333e-05 1.354499454e-05 -6.502658727e-06 1.032078402e-05 7.478286676e-06 5.154122804e-07 -1.341155934e-05 3.061835637e-06 -9.100725029e-06 8.900054259e-06 -1.18743502e-05 1.029640196e-06 6.145707913e-06 -2.45945658e-06 -2.747019907e-05 2.097697707e-05 2.870166859e-05 7.281561778e-07 1.822855012e-05 -5.883124531e-05 5.146461983e-05 +-5.151257419e-06 -1.123856253e-05 2.031456966e-05 -1.175408019e-05 -1.955238951e-05 -1.748990634e-05 -9.628582599e-06 1.777018782e-05 -1.908549135e-05 -2.707564775e-05 4.1249156e-05 8.358678654e-06 -1.323662501e-05 2.374603441e-05 4.817049858e-05 5.627448018e-06 -9.400047274e-06 2.088323594e-05 -1.881884211e-05 -2.832043257e-06 -9.877366735e-06 -1.935341177e-05 4.730916862e-05 -6.709338414e-05 -1.75110031e-05 +2.156802225e-05 4.916932254e-06 -7.128607018e-06 8.21530905e-06 2.709417903e-05 3.272735712e-06 6.469173067e-06 -1.134263004e-05 5.179394157e-06 1.218065917e-05 2.485132696e-07 -1.637776187e-05 3.045644454e-05 -1.613483538e-05 -2.082816874e-05 2.952926706e-05 1.092049275e-05 -1.647590814e-05 1.02267131e-05 4.441386443e-05 4.057166392e-05 1.596786454e-05 -1.843419421e-05 -1.274123948e-05 7.354379144e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_2_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_2_ref.dat new file mode 100644 index 0000000000..fd41f78456 --- /dev/null +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_2_ref.dat @@ -0,0 +1,195 @@ +-0.0059566419 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002365319231 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.004231005287 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002023857938 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9.890746195e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.000198881275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001223368341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9.606614353e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.690490272e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.417258486e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.590980662e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.5791239e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.859147289e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.009968619566 0.8032120738 0.008556039664 0 0 -0.04324321691 -0.06677231659 0.001352757303 0 0 -0.00101855893 0.001417046627 0.05238872349 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01350591763 0.4009931832 -0.004761624334 0 0 -0.1056951405 -0.1358533512 0.002061765062 0 0 -0.001055755393 0.001471309829 0.1232138992 0 0 0 0 0 0 0 0 0 0 0 0 +-0.009970130711 0.05192154118 -0.00373730104 0 0 -0.06681086144 -0.0728196113 0.0001640295528 0 0 0.0005132039476 -0.0004259052531 0.08002588201 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002382136833 -0.02052295149 -0.0005567137255 0 0 -0.01650550678 -0.0140493099 -0.0005543706912 0 0 0.0007452050399 -0.0007170057073 0.02224016752 0 0 0 0 0 0 0 0 0 0 0 0 +-6.933650809e-05 -0.007580443296 0.0002249784037 0 0 0.0003436384384 0.00206181772 -0.0003855538992 0 0 0.0003761637968 -0.0003727556677 0.001968646087 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001924641936 -0.001463079528 0.0001700952842 0 0 0.002408591676 0.003352681351 -0.0001310043015 0 0 9.619902578e-05 -0.0001089084318 -0.002462165112 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001677969859 0.002416969548 0.0001017987675 0 0 0.001451924051 0.001624145443 1.56710562e-05 0 0 -2.412146774e-05 2.336605762e-05 -0.002220498823 0 0 0 0 0 0 0 0 0 0 0 0 +-1.265211946e-05 0.0002247337596 -3.321204458e-05 0 0 4.439429293e-07 -0.0003160912044 6.025436411e-05 0 0 -5.127569113e-05 5.91792753e-05 -0.000349686979 0 0 0 0 0 0 0 0 0 0 0 0 +-9.086242719e-06 0.0002444349444 -3.04280699e-05 0 0 -0.0002988800813 -0.0005201708564 3.205301787e-05 0 0 -2.323613429e-05 2.852125312e-05 0.0003217130712 0 0 0 0 0 0 0 0 0 0 0 0 +-1.137580515e-06 -0.0002556708293 -6.240437654e-06 0 0 -0.0001221964362 -0.0001071538927 -2.598184346e-06 0 0 4.044524262e-06 -4.681364921e-06 0.0001948433828 0 0 0 0 0 0 0 0 0 0 0 0 +7.965346306e-06 6.536474473e-05 6.691812594e-06 0 0 9.601601925e-06 6.35305103e-05 -9.685493392e-06 0 0 8.060542537e-06 -9.594445088e-06 4.649782559e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.027606352e-06 -3.094553849e-05 1.619864202e-06 0 0 1.32914641e-05 2.531767119e-05 -2.239845485e-06 0 0 1.715006654e-06 -1.948221765e-06 -1.243407137e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.56163591e-06 6.762972768e-05 2.50799481e-06 0 0 1.536882088e-05 1.629395545e-05 -1.860542989e-07 0 0 1.631597593e-07 -1.898874878e-07 -2.470622705e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003535374642 0.05240024859 0.001220750099 0.08032686674 -0.001811804307 -0.06918559031 0.06453800474 -0.0008183423016 0.1014083223 0.001137447084 -0.001663592399 -0.001307214507 -0.05261170009 -0.002066548513 0.07186303748 0.007056132887 -0.005894158966 0.000151771456 -0.00930003229 -0.0002066557598 -0.0002277739634 -0.0001756284233 -0.004618047771 -0.0002712848541 0.006308215206 +-0.0009567674752 0.05449696353 0.0003372945863 0.08405656737 -0.0005792336583 -0.05500948976 0.04650205074 5.223690437e-06 0.07389131696 0.0002065260121 -0.0002281316682 -9.030990472e-05 -0.04677356513 -0.0001937502238 0.06455725744 0.02061900484 -0.01444936677 0.0002923978975 -0.02316310285 -0.000455823492 -0.0004154455359 -0.0002750712754 -0.01351371344 -0.0004248732993 0.0186537482 +0.001003318765 0.02135394778 -0.0004456823656 0.03351750452 0.0006109532621 -0.01146889738 0.009694478606 0.0003847113385 0.01576363973 -0.0003995066002 0.0005278393579 0.0004214666042 -0.01346606668 0.0006466872572 0.01903892958 0.01583666375 -0.008518532064 1.624413546e-05 -0.01420926536 -0.0001375828746 -1.458144671e-05 3.007866673e-05 -0.01039398739 5.654586523e-05 0.01469909201 +0.0004264158728 0.001785861198 -0.0002616755057 0.003057178363 0.0003842925551 0.001677060445 -0.0002153550511 7.957986083e-05 -0.0005129353995 -0.0001301451548 0.0001111740942 7.24868434e-05 -2.555148626e-05 0.0001143791617 3.605413795e-05 0.00346360884 -0.0006244016397 -0.0001219083067 -0.001436682236 0.000106092855 0.0001917712047 0.0001370786971 -0.002230801512 0.0002238752779 0.003412837721 +-8.692936537e-05 -2.762618405e-05 -1.571206994e-05 -1.395073069e-05 2.901697663e-05 0.0001392788679 0.0002507760293 -2.396810532e-05 0.0002860663587 1.871122886e-05 -3.926745432e-05 -2.588542163e-05 -2.071848783e-05 -4.222506611e-05 -5.640230385e-05 7.224785881e-05 0.0001665522936 -2.844910476e-05 0.0002008445814 3.466391368e-05 5.47606789e-05 2.563426682e-05 1.782984323e-05 4.550463599e-05 6.778453957e-05 +-2.875720523e-05 0.0002950878131 1.694106026e-05 0.0004273437148 -2.403159287e-05 -0.0002261377079 0.0001816705657 3.691787807e-06 0.0002682534207 -5.833989284e-06 3.645874101e-06 4.659054104e-06 -0.0002730223789 4.332609649e-06 0.0003457693521 9.593083193e-05 -0.0001576492636 1.698620601e-05 -0.0002298759122 -2.000132385e-05 -1.50923534e-05 -1.453395133e-05 -2.876013419e-05 -2.08672673e-05 3.659401957e-05 +3.205927814e-05 1.162331029e-05 -7.732710887e-06 1.358528459e-05 1.005973341e-05 2.389308586e-05 4.561602121e-06 3.550732352e-06 7.43819649e-06 -4.297204988e-06 3.690116891e-06 1.021810871e-06 7.694874744e-06 1.277482425e-06 -9.767997662e-06 4.355660659e-05 1.77417602e-05 -8.920323712e-07 2.7519296e-05 1.50300153e-06 4.729171359e-06 4.699368652e-06 -4.35525206e-05 6.795139031e-06 5.547194329e-05 +3.471276476e-06 -3.07331051e-06 -2.551782613e-06 -4.681035079e-06 3.399908011e-06 6.407362932e-06 9.47409428e-06 -8.887086457e-07 1.372877596e-05 1.257071276e-06 -1.797645393e-06 -1.527924055e-06 1.982137681e-06 -2.254100438e-06 -2.635110399e-06 9.883028312e-06 1.044666524e-05 -1.935290266e-06 1.501978679e-05 2.672487035e-06 4.467888605e-06 2.655026638e-06 -3.80421376e-06 3.855393097e-06 5.066388531e-06 +-5.498406555e-06 2.814707003e-05 3.018487127e-06 4.307500522e-05 -4.160622114e-06 -2.156343553e-05 1.747927695e-05 7.486535089e-07 2.741818515e-05 -9.322401281e-07 8.167950342e-08 4.091456937e-07 -2.994225808e-05 5.710157425e-07 4.089637102e-05 7.288766059e-06 -1.907491101e-05 2.371001154e-06 -2.936211229e-05 -3.238748086e-06 -1.943184814e-06 -2.238086147e-06 4.562615346e-06 -3.336626379e-06 -6.214676042e-06 +2.32676191e-06 -1.162260734e-06 -4.514371228e-07 -1.728536785e-06 6.169880074e-07 -1.537342378e-06 4.000936495e-06 2.136466267e-07 5.839327113e-06 -3.716290685e-07 -3.802828321e-08 -1.983306999e-07 8.437362673e-07 -3.009734376e-07 -1.271614825e-06 -1.502515988e-06 4.583460336e-06 -1.034686052e-07 6.734120361e-06 4.615442948e-08 3.772927782e-07 4.148875302e-07 -1.556306645e-06 6.290837078e-07 2.321817706e-06 +1.666693101e-06 2.63573081e-06 -4.973161911e-07 4.111506305e-06 6.87395631e-07 7.587184305e-07 2.409428281e-07 -4.071929137e-08 3.365726264e-07 4.424492266e-08 -7.247394098e-10 -1.651198507e-08 8.96316282e-07 -2.646255946e-08 -1.27809152e-06 3.860114105e-06 -3.125585768e-07 -2.941549646e-07 -7.449923681e-07 3.875435977e-07 4.742442397e-07 3.438080606e-07 -3.891109891e-06 5.204058945e-07 5.543788177e-06 +-1.029662308e-06 3.653472389e-06 4.223802287e-07 5.492884434e-06 -5.787175177e-07 -3.150805434e-06 3.301810951e-06 2.189239755e-08 5.027180342e-06 -4.06744637e-08 -1.244951573e-07 -5.428082953e-08 -4.148703944e-06 -1.029545438e-07 5.468297517e-06 5.048317398e-07 -2.158863135e-06 2.575745268e-07 -3.236898105e-06 -3.261096744e-07 -1.775258564e-07 -2.500663607e-07 9.877880584e-07 -3.619747627e-07 -1.299372841e-06 +-1.654677617e-07 -1.299902649e-08 -2.699457609e-08 -1.088425035e-08 3.758201296e-08 -2.654695537e-06 2.994510379e-06 -9.260279082e-08 4.72983935e-06 1.311617269e-07 -1.998331591e-07 -1.833467248e-07 -1.082970809e-06 -2.751722059e-07 1.519676071e-06 -1.539306513e-06 1.591847504e-06 -9.488167424e-08 2.515869651e-06 1.334349877e-07 1.339363244e-07 1.190208343e-07 6.509646842e-07 1.78602848e-07 -9.134089387e-07 +-0.0189058471 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.005212608868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01393421698 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004207635118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001497314533 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.216976975e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +8.92610301e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001355935665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.731169953e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.076817422e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-4.474627546e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.442048821e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.302072682e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.008608501664 0.1548151285 0.0006438103162 0 0 -0.180233709 -0.1704080901 0.002179272361 0 0 -0.003446711595 0.001877621667 0.1122019104 0 0 0 0 0 0 0 0 0 0 0 0 +0.009601046489 -0.1956199068 -0.000252152974 0 0 -0.09413405215 -0.1113403234 0.001115111056 0 0 0.0005753234893 -0.00015267846 0.08717415464 0 0 0 0 0 0 0 0 0 0 0 0 +0.002129949483 -0.01426171458 0.0006589780633 0 0 -0.0003236965735 -0.002772710932 -0.0001691957922 0 0 -0.0003605752117 -0.0002451193094 0.003434533946 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004349053983 -0.0002779162662 2.658840277e-05 0 0 -0.0161477277 -0.0003047634003 -6.744306743e-05 0 0 1.098098272e-05 -1.738554009e-05 0.0003342559954 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005401017857 0.002029749655 -1.329194588e-06 0 0 9.981122947e-06 0.000347017464 8.954388539e-06 0 0 0.0001028263122 8.654703147e-06 -0.0006518597901 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001392501351 0.001236295497 5.328713022e-05 0 0 0.0001564758525 0.0006306549907 -1.412673193e-05 0 0 2.346099232e-05 -1.644291887e-05 -0.0003348687036 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004361830804 -2.003385352e-05 4.956776438e-06 0 0 -0.0001139388086 -1.316342114e-06 -1.659343993e-06 0 0 2.74375872e-05 -9.063551583e-07 3.154902466e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.178602422e-06 -0.0001752605859 -7.906552542e-06 0 0 9.056554566e-05 -0.0001438667554 4.128570411e-06 0 0 5.474689619e-07 3.397168692e-06 8.482672748e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000115341025 0.0002292135885 -3.729841865e-06 0 0 5.409409288e-05 2.709303676e-05 2.742306672e-06 0 0 -4.372418898e-06 2.725745485e-06 -6.785628811e-05 0 0 0 0 0 0 0 0 0 0 0 0 +7.331231241e-05 0.0001445690452 6.809366955e-06 0 0 9.858948912e-05 6.130986631e-05 -1.177726463e-06 0 0 4.827830646e-06 -1.959035293e-06 -2.858150287e-05 0 0 0 0 0 0 0 0 0 0 0 0 +8.294837624e-06 4.352684854e-05 4.417517589e-06 0 0 1.503565996e-06 1.468770284e-05 -1.236684583e-06 0 0 2.046586709e-07 -1.340647109e-06 7.442731047e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.97008551e-06 1.109027094e-05 -7.433619466e-07 0 0 -1.687097248e-05 -1.271269893e-05 5.588204506e-07 0 0 -1.022121941e-06 6.11707179e-07 8.67283127e-06 0 0 0 0 0 0 0 0 0 0 0 0 +5.518745084e-06 5.068216999e-05 2.994382508e-07 0 0 8.513367437e-06 5.265468275e-06 2.655934825e-07 0 0 -9.882841364e-08 2.520882955e-07 -9.678115547e-06 0 0 0 0 0 0 0 0 0 0 0 0 +0.00527940532 0.429442782 0.004394109759 0.104970262 -0.0005020899009 0.02564727666 0.05663954625 9.788994466e-05 0.01367699052 0.0001012054404 -6.986482584e-05 9.473875091e-05 -0.03023823777 4.451334201e-05 0.005751912593 -0.05653370677 -0.08671579395 0.001158317201 -0.02083403332 -0.0004513191707 0.0009222494545 -0.001856653137 -0.05542955781 -0.0004216248944 0.0105453337 +0.00164263148 -0.0259751385 -0.001005438093 -0.004144415134 4.777841206e-05 -0.1059212461 -0.1444289874 0.00164074517 -0.0217689377 -0.0006026995899 -0.0004917312417 0.0004376681737 0.1196950074 -0.0002691386969 -0.01444806017 -0.05950297746 -0.08714044123 0.0007734084755 -0.01317508966 -0.0003364961406 8.989407099e-05 -0.0009928096334 -0.06672720794 3.321553454e-05 0.008052366834 +0.002679493061 -0.02990629981 0.0006707611272 4.134452957e-05 -0.0001776735322 -0.005318423612 -0.02635043428 -0.0001175049258 0.0003606970952 -7.005192587e-05 0.0001167133093 -0.0006489379873 0.0278097033 -0.0001823296115 0.0005310123918 -0.00225334978 -0.009723166912 -0.0001398838431 0.0001341899471 -2.750740434e-05 -4.160004954e-05 0.0001575863305 -0.01068260055 7.024588083e-05 -0.0002045416099 +0.001685828564 -0.0001931328038 7.025760678e-05 0.0001455227383 3.829171093e-05 -0.00891690176 0.001383748791 -0.0001410974075 -0.0009382363111 -3.732511052e-05 -0.0002256711185 -5.773113047e-05 -0.001164982186 4.275140552e-05 -0.0007940223755 -0.004984972393 0.001116900843 -7.748299438e-05 -0.0007269474569 -1.656831957e-05 6.200348965e-05 3.335424113e-05 0.0006824091577 -2.553398596e-05 0.0004654856705 +0.0004493182017 0.002871667183 5.789136823e-05 0.0006045677532 -1.888477763e-05 -0.005001166183 0.002211703494 -5.431647416e-05 0.0005441385911 1.200769178e-05 0.0001907180206 -2.898895984e-05 -0.002371545936 -1.782728175e-05 0.0003025295366 -0.001654070897 0.0008696622512 -1.021794962e-05 0.000210794592 3.08066212e-06 -6.925259768e-05 1.376947205e-05 0.0007536982967 6.75588702e-06 -9.614329409e-05 +-0.0003768211418 0.0001965500436 1.75899237e-05 -1.227102963e-05 1.629284924e-06 0.00142498678 0.0005145341426 -8.135488878e-06 -7.063494333e-06 -1.169861377e-06 5.98315364e-05 -1.430336654e-05 -0.0001077174191 9.767179021e-07 -2.109862241e-05 0.0006104587462 0.0002174392506 -4.175709231e-06 -2.281812183e-06 -4.32972062e-07 -1.974518034e-05 7.582327114e-06 6.203999144e-05 -2.472980735e-07 1.222828216e-05 +2.843235618e-06 4.542353011e-05 1.454946767e-06 -2.728816288e-05 -2.282552559e-06 -0.0002718591452 5.78011007e-05 -2.926545006e-06 -2.313284851e-05 1.279662245e-06 8.9461874e-06 -8.865980473e-07 -6.117139459e-05 -2.101580509e-06 -5.114091385e-05 -0.0001233252428 2.866101283e-05 -1.187063729e-06 -1.167797811e-05 6.387764957e-07 -3.468409492e-06 7.310053953e-07 2.511410635e-05 6.532074427e-07 2.097113632e-05 +6.31471188e-05 9.794313388e-05 -1.211828477e-05 2.354266356e-05 2.381655091e-06 8.004635239e-05 -0.0001977599071 1.414550329e-05 -4.907646909e-05 -2.977372355e-06 8.380874406e-06 1.367515398e-05 -3.546975415e-06 3.29529914e-06 6.768337648e-07 5.8096855e-05 -0.0001261507343 7.255963297e-06 -3.135514707e-05 -1.570868379e-06 -2.650630176e-06 -6.606388289e-06 -3.988463165e-05 -1.575990878e-06 7.71365541e-06 +-1.800760573e-05 0.000181216356 5.626200829e-06 6.171447622e-05 -1.797610797e-06 0.000298415799 0.0001633957363 3.510569632e-07 5.302197134e-05 6.895988048e-07 -3.382763893e-07 -2.849514966e-06 -0.0001131970305 -1.120677029e-06 3.065846798e-05 9.655450627e-05 4.580309742e-05 2.388121826e-07 1.476681688e-05 2.043357414e-07 8.160956374e-07 1.222084232e-06 3.757656091e-05 4.599424557e-07 -1.017533626e-05 +-7.586218545e-06 5.865717585e-05 3.521974823e-06 2.06642577e-05 -9.647760534e-07 -6.620968578e-06 6.759149561e-05 -2.260396621e-06 2.38737612e-05 7.477197741e-07 4.644957509e-07 -2.962651175e-06 -2.166989726e-05 -1.02232025e-06 6.229142517e-06 -1.582491223e-06 2.353371571e-05 -9.253871924e-07 8.304535071e-06 3.014552165e-07 -1.223766001e-07 1.151299963e-06 5.833040117e-06 3.985045658e-07 -1.676767219e-06 +-3.760317415e-06 2.105034608e-05 1.549499634e-06 5.38490467e-06 -2.890451456e-07 -3.664464601e-06 2.985290209e-06 -8.662575768e-07 7.917427579e-07 1.611423575e-07 3.902064123e-07 -1.018042861e-06 2.150390914e-05 -2.883609129e-07 -4.34391858e-06 -3.90186417e-06 -6.910081788e-06 -3.151210138e-07 -1.723709085e-06 4.022817835e-08 -8.209901461e-08 1.72218589e-07 -1.285657137e-05 6.009545044e-08 2.597156029e-06 +2.820873167e-06 3.481946744e-05 -4.08963358e-07 1.146728718e-05 1.280509431e-07 3.509399281e-06 1.547095816e-06 1.063349754e-06 4.732870618e-07 -2.792483608e-07 -1.402143999e-06 9.855673126e-07 -9.839295995e-06 3.435521455e-07 2.679051593e-06 -5.540388588e-06 -8.545647868e-06 5.704223781e-07 -2.764188689e-06 -1.756966302e-07 6.406127267e-07 -5.523961603e-07 -5.608208417e-07 -1.889939919e-07 1.54689018e-07 +7.798431182e-07 4.898837334e-05 1.203051863e-06 1.527560955e-05 -3.110771529e-07 1.023431677e-05 2.980742779e-05 -2.50470628e-07 9.302733149e-06 1.415780134e-07 5.385035055e-07 -4.731173459e-07 -2.551395209e-05 -1.638953677e-07 6.356838563e-06 2.474631505e-06 5.456734243e-06 9.309984331e-09 1.703975112e-06 1.77262912e-08 -8.968362855e-08 9.726325948e-08 5.908117131e-06 3.414361444e-08 -1.471706253e-06 +-0.09658573083 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.09055583978 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1783873539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.05817116017 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002714382322 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002805138695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003043033401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001341310911 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004920143015 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005218463972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.300692447e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9.006417208e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.297169802e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1062168893 1.119037488 0.007742475317 0 0 -0.393665727 -0.1650210928 0.002017547734 0 0 -0.0002431832209 6.439769417e-05 -0.06640008085 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1258240641 0.3129800023 -0.004364004319 0 0 -0.288103788 -0.06171231455 -0.00059414124 0 0 -0.0003648702541 0.001483465727 -0.0494193847 0 0 0 0 0 0 0 0 0 0 0 0 +0.0560237211 0.1957677525 -0.0001128124279 0 0 -0.02346563824 -0.0380604199 7.543477212e-05 0 0 -5.402625754e-05 -0.0002957192412 -0.003159292924 0 0 0 0 0 0 0 0 0 0 0 0 +0.003514260803 0.01214455383 -0.0001006468902 0 0 -0.02077075804 -0.0627450306 0.0002237266799 0 0 -4.424594954e-06 -7.335175442e-05 0.001291667489 0 0 0 0 0 0 0 0 0 0 0 0 +0.002468125013 0.006419967739 1.606148e-05 0 0 0.002805287796 0.006637429675 7.032356805e-06 0 0 -4.31132508e-06 4.579497315e-08 0.0002543650942 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004826002338 0.001657626864 3.567130491e-05 0 0 -0.0002172974699 0.0001823221259 2.244978079e-05 0 0 2.772957985e-07 -3.689236948e-05 -0.0003308522875 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003494603017 0.0005998057942 7.793106039e-06 0 0 -0.0006547494319 -0.003187313595 -2.836773022e-05 0 0 -6.045971242e-08 7.526202415e-06 0.0001381968278 0 0 0 0 0 0 0 0 0 0 0 0 +8.864113531e-05 0.000498839627 2.198559397e-06 0 0 0.0002522898213 0.0009178541585 2.314029719e-06 0 0 -4.61900842e-07 -1.391928111e-07 1.641460431e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-6.350275133e-05 0.0001297467072 2.708950684e-06 0 0 -6.749383515e-05 0.0001494558682 1.808272958e-06 0 0 -2.704222136e-07 -4.969894608e-07 -5.238016117e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001419994028 0.0001609276016 5.1853592e-06 0 0 -6.804771501e-06 -0.0005221657463 -5.043963029e-06 0 0 6.160881493e-08 1.309504996e-06 3.00793788e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.202592637e-05 0.0001862448168 6.123658182e-06 0 0 9.027245323e-05 0.0002245746673 1.01091279e-06 0 0 3.768377732e-09 2.661360493e-07 9.572902517e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.210096962e-05 2.895939459e-05 3.033057392e-06 0 0 -2.430679362e-05 6.688064127e-06 2.685131152e-07 0 0 1.522235426e-08 -1.967985084e-07 -3.990561935e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.881703252e-05 5.747940609e-05 2.0700734e-06 0 0 5.767152809e-07 -6.966790644e-05 -5.191194797e-07 0 0 -1.516370971e-08 2.598099649e-07 7.17746181e-06 0 0 0 0 0 0 0 0 0 0 0 0 +0.3602098194 0.7954199307 4.171288718e-05 0.1374297859 -0.005204442216 -0.8987937984 -0.08425058353 -4.521079909e-05 0.9775366391 0.01097918415 -0.006546003544 -0.003158147403 0.1463393532 0.002895781 0.998258889 -0.06700938366 -0.2233714018 -2.223154032e-06 -0.07791598262 0.0009585886853 -0.0006020738154 -0.0003242893362 -0.01256884445 0.0006793848212 -0.08572261622 +0.09685877444 0.2310000334 -5.247460124e-05 0.02928427908 0.0002407167423 -0.319982437 -0.354454676 -0.001934398271 0.1745185405 -0.0121743685 0.004197734672 0.0006851174369 0.04739719982 -0.004317698058 0.2040755445 -0.09560688717 -0.2490713648 -1.359114863e-06 -0.04293565624 -8.285410292e-05 -0.001714835024 -0.0005465483549 -0.0226601176 0.001544556658 -0.09755862033 +-0.01050297382 0.03515569957 1.451465267e-05 0.03197974437 0.0002247333904 -0.0835296735 0.009203585967 -5.993419383e-05 0.13033349 -0.0005912323129 7.801811144e-05 0.0001249471531 0.00176316988 -2.871609247e-05 0.003723921354 -0.02130571378 -0.0296662801 2.922200944e-06 0.01827316522 -0.000303948202 -0.0001594756306 -0.0002222923652 -0.009483208741 -6.787309109e-05 -0.02001840497 +-0.01724195194 0.02507129553 -8.871274353e-06 0.03798999536 -0.0002048552318 -0.0210445109 0.03962094402 -3.688704772e-06 0.05463637172 -0.0002373187983 0.0001931861572 -0.0001253350494 -0.0001557887629 -0.0002888795048 0.002134782414 0.01501054714 -0.01665842385 8.720560128e-06 -0.02829546853 0.000253401381 0.0001418660754 -4.268633452e-05 -0.000255470858 -0.0001755016787 0.003494227399 +-0.001946708927 0.003527956276 -3.381000668e-06 0.005134342803 -4.307864871e-05 -0.0002145573472 -0.0007410995119 -6.00395094e-06 -0.0003967426247 0.0001021765437 -1.851398621e-05 -5.187699604e-06 -6.695026001e-05 6.741661764e-06 0.0002444970579 0.002986424621 -0.005386948466 7.888988171e-06 -0.007480572453 7.229315541e-05 1.197959028e-05 6.14268731e-06 9.860228621e-05 -5.06788533e-06 -0.0003587925095 +0.0005348175247 0.000449942091 1.273996292e-06 -0.000528031716 -1.814388665e-05 -0.000450117492 0.0003132955588 1.890831322e-05 0.0009247610913 5.54390007e-05 -2.714750665e-05 -2.391064849e-05 0.000140362841 1.209150947e-05 0.0006111274347 -0.0002178500132 0.0002472359629 6.636960996e-07 0.0005262413535 -1.886188284e-05 2.258035416e-05 1.494265061e-06 -0.0001358953942 -2.078792936e-05 -0.0005903024902 +-0.0006189022872 0.0007975300067 -3.823389731e-08 0.001289899532 7.923817327e-06 -0.001127223569 0.001701958431 -3.943100893e-07 0.002542154917 5.309131083e-06 -5.722400693e-06 1.80484203e-06 6.591257973e-06 7.49908912e-06 5.210257727e-05 0.0003408931886 -0.0003535457589 -2.951021113e-07 -0.0006441383532 -1.048100124e-05 -2.996253335e-06 -3.470589738e-06 1.321252294e-05 3.309788791e-07 0.0001042721389 +-9.062391317e-05 0.0001567660604 -2.519153584e-07 0.0002245472069 4.19321509e-07 -0.0002211190889 -0.0002214721963 1.44129482e-07 2.280298607e-05 -7.22870941e-06 7.871839478e-07 -4.364979786e-07 1.309317163e-06 -1.097618253e-06 6.881366076e-05 5.482984382e-05 -0.0003131280436 3.852358413e-07 -0.0003252315193 -3.541278656e-06 -1.160939656e-06 -4.372367433e-07 -1.120945372e-06 7.25577109e-07 -5.889312932e-05 +0.0001506057746 0.0002187111927 -6.441561376e-08 -1.657825122e-05 -2.625974262e-06 -3.056254386e-05 -8.004550259e-05 7.397327667e-07 -2.421892482e-05 7.188210201e-06 -3.567298344e-06 -1.320103154e-06 3.049573674e-05 2.166595474e-06 0.0002654215117 5.619771886e-05 -5.873988856e-05 3.233027297e-07 -0.0001008266249 2.604492166e-07 9.112597471e-08 -1.459458536e-07 -7.755068992e-06 -1.995879304e-08 -6.746920286e-05 +-4.196328079e-05 0.0001457589146 -8.549052279e-08 0.0001531534237 3.539898578e-07 -0.0001628448811 0.0003424921668 5.530378151e-07 0.0004312549626 1.183251451e-05 -7.308148397e-06 -1.354954771e-07 1.123094288e-05 6.991398969e-06 0.0001363289242 7.415255243e-05 5.386687925e-05 1.765383578e-08 -3.971753481e-05 -4.1084932e-06 -1.205626185e-06 -2.816813046e-07 5.104359536e-06 7.377790094e-07 6.184986079e-05 +2.964789831e-05 8.374872243e-06 -8.393760257e-10 -2.496209478e-05 -1.914230584e-06 -7.529778096e-05 -2.501832605e-05 3.821516505e-07 6.072962684e-05 8.8953217e-06 -3.163183533e-06 -7.890046261e-07 5.449049349e-06 2.515763889e-06 6.104527489e-05 -3.763554645e-05 5.766962427e-06 -5.360951299e-08 4.332350054e-05 2.466812076e-06 4.34430312e-07 3.96632533e-08 -9.414711054e-07 -3.863893006e-07 -1.054266901e-05 +2.140539473e-05 4.649551262e-05 -4.536933988e-08 1.017903299e-05 -6.365572917e-07 -4.729812429e-05 -4.930328256e-05 2.303146324e-07 1.581449098e-05 3.085949482e-06 -1.666108057e-06 -5.503175654e-07 8.376580305e-06 1.224346362e-06 7.514368338e-05 7.508281399e-06 -3.651081433e-05 2.423325159e-08 -3.469579943e-05 -2.544002654e-07 3.475768389e-08 4.441826913e-09 -7.227460045e-07 -1.786644812e-08 -6.480707511e-06 +1.873560873e-05 4.940553652e-05 -3.129130595e-08 1.638475571e-05 -6.592487043e-07 -4.542850032e-05 5.659467631e-05 1.65784335e-07 9.07352863e-05 3.177130546e-06 -1.70124606e-06 -3.528787542e-07 6.659633103e-06 1.361770152e-06 7.185718041e-05 1.170324797e-05 1.404857487e-05 1.09977847e-08 -2.269101225e-06 -1.194614459e-07 -1.457862627e-07 -1.190913533e-09 1.026306696e-06 1.237577623e-07 1.107099979e-05 +0.04889986364 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04298377332 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0868816853 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03750670768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002541247401 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000464353841 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001180256288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001125950163 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.835349998e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003148505104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.446686944e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.395452954e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.898553851e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04883802764 0.5925997322 0.3094101353 0 0 -0.08416899448 0.05204102611 0.01970440784 0 0 -0.1512033396 0.02061744684 0.06598870574 0 0 0 0 0 0 0 0 0 0 0 0 +0.07485399915 0.071494481 0.1191262195 0 0 -0.07076384525 0.03125185556 -0.000243252688 0 0 -0.1270632887 0.004716165404 0.03190421865 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02730892363 0.04673616043 0.08896847629 0 0 -0.006914171724 0.005003891257 0.003482360385 0 0 -0.01194058662 0.002589583288 0.007929249669 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004911107171 0.0058982005 0.009959554291 0 0 -0.005795635147 0.007588366355 0.0149773927 0 0 -0.01014315938 0.01437611395 0.02538607521 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004698627912 0.001108723269 0.0008735954456 0 0 4.255023772e-05 -6.865176488e-05 -5.677627561e-05 0 0 9.008029978e-05 -8.212984632e-05 -0.0001471425581 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002299516795 0.0006029198642 0.0006315618073 0 0 5.384169423e-05 -1.829486678e-05 -0.0003036357588 0 0 0.0001241976495 -0.0003925234911 -0.0004801003831 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002978719556 0.0003713550295 0.0005740567615 0 0 -0.0001490031911 0.0002407028094 0.0005685974025 0 0 -0.00027785649 0.0006168889293 0.0009775992776 0 0 0 0 0 0 0 0 0 0 0 0 +1.554789002e-05 8.165598466e-05 7.726266217e-05 0 0 1.436048597e-05 -4.46344643e-05 -7.834752776e-05 0 0 2.371391583e-05 -8.475820764e-05 -0.0001380847021 0 0 0 0 0 0 0 0 0 0 0 0 +1.323144057e-05 9.88846174e-05 -1.946731757e-05 0 0 -3.117369872e-06 1.605753095e-05 -1.85503848e-05 0 0 -5.74977031e-06 -1.826600195e-05 -1.051811232e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-9.171681411e-05 0.0001394945839 0.000119618994 0 0 7.997880364e-06 1.914706761e-05 6.869116214e-05 0 0 1.375285355e-05 7.703152346e-05 0.000108947205 0 0 0 0 0 0 0 0 0 0 0 0 +-3.028854893e-07 7.029711957e-05 4.102490183e-05 0 0 9.692992713e-06 -2.484727643e-05 -3.571326576e-05 0 0 1.660638355e-05 -4.099666878e-05 -6.335243758e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.692752533e-05 3.372231969e-05 -5.022005274e-06 0 0 -8.223744309e-06 6.595656543e-06 1.070077961e-05 0 0 -1.571148404e-05 1.039094474e-05 2.069696813e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.833557172e-05 4.953169571e-05 2.533998249e-05 0 0 5.308123462e-06 -1.031905963e-06 6.662124018e-06 0 0 8.796606391e-06 7.420162431e-06 8.55342864e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1713256118 0.1688285978 0.3036341934 0.0224792066 -0.06041978536 -0.3626851374 -0.0885763216 0.08508996337 0.4147186517 0.664302321 -0.3012597834 -0.02658728212 0.01848762306 -0.007399203829 0.3680930613 -0.01602309869 0.01559916606 0.04160447826 0.04019177121 0.006850325086 0.02130260479 -0.0402637509 -0.06387008093 0.007406487097 0.03990096713 +-0.04972966745 0.05265755902 0.09277694044 0.002511332714 -0.01531446024 -0.09140403336 0.01453962313 0.0899384273 0.07134137258 0.102770758 -0.1348857484 0.07089789911 0.1269755032 -0.03912248146 0.04867986747 -0.02281348847 0.01713121106 0.05473376802 0.04361222421 0.01282813761 0.03782847465 -0.05195002795 -0.07837223162 0.0150545941 0.03215035331 +0.00286164583 0.007605944619 0.01354217566 0.006229056112 -0.01053591633 -0.02027791588 0.001201771604 0.001020613682 -0.01536653364 0.02258492 -0.03845400521 0.007512464355 0.006478074854 -0.03176375607 0.03739341474 -0.006942683879 -0.0006250460352 0.009464986798 0.006096797248 0.01044561076 0.01176697385 -0.009229249956 -0.009878940423 0.01061162368 -0.004059150277 +0.008027515911 0.006850090469 0.0123281131 0.01016928706 -0.01618953852 -0.005726233424 -0.005632922603 -0.01088915446 -0.007752226462 0.01392600597 -0.008742491919 -0.009644006623 -0.01773451097 -0.01349599233 0.02236098622 0.002541364762 0.001252472594 0.003026563172 0.001703228806 -0.004347698534 -0.004758262871 -0.003246044101 -0.005269320014 -0.005359642543 0.007250132645 +0.001477493781 0.001522285511 0.002750794381 0.002197162162 -0.003457528213 -0.0003152784988 0.0002247197366 0.0002850027092 0.0006004701406 0.0001795457422 -0.0004160028188 8.417200873e-05 2.753219658e-05 0.0003867106935 0.0005133638975 0.00102660597 0.00117451256 0.002022854753 0.001911161335 -0.002294016563 -0.001740234974 -0.001813457865 -0.003336894927 -0.002409063169 0.004172733666 +-4.554701584e-05 0.0001886724716 0.0003484915175 8.826188959e-05 -9.228531005e-05 -4.558323279e-05 -3.807703221e-05 0.0001810653552 0.0003741933749 0.0002267747123 7.365521716e-05 8.995747742e-05 0.000155145614 2.984330353e-05 -0.000129830405 0.0001584227297 5.435626991e-05 0.0001670252407 0.000223453891 -0.0001817412712 -0.0002718329653 -0.0001574401668 -0.0002509733946 -0.0001580158216 0.0004464355863 +0.0001417477882 0.0001077006941 0.0001901855986 0.000153627418 -0.0002639211138 -0.0002888995496 -0.0002362601324 -0.0004289066168 -0.0003457596378 0.0005884735098 -0.0004862271317 -0.0004091667223 -0.0007323895118 -0.0006026728788 0.0009957538914 -4.026002316e-05 -4.439966606e-05 -6.939763169e-05 -7.2642658e-05 8.622564192e-05 7.882544505e-05 6.263230653e-05 0.0001207086655 9.643681181e-05 -0.0001689163379 +7.409011727e-05 8.129317288e-05 0.0001459655845 0.0001053930859 -0.0001802356008 -0.0001008095646 2.96011621e-05 6.968367008e-05 5.062975426e-05 6.651131738e-05 -0.0001493594095 3.033935703e-05 6.791152335e-05 1.612220296e-06 9.252995593e-05 2.173310447e-05 5.596351734e-05 0.0001114576413 0.0001168254679 -7.623532373e-05 -3.743030835e-05 -9.999995843e-05 -0.0001748012261 -6.692925929e-05 0.0001952483106 +-3.052003278e-05 7.61221609e-05 0.0001384834441 4.114184336e-05 -6.749340743e-05 -2.691421064e-05 -1.352123105e-05 3.737889847e-05 0.0001856713122 0.0001143256445 5.761748178e-05 -1.169563201e-06 1.51958532e-05 9.206353138e-05 -2.973178208e-05 6.561915962e-05 2.696373778e-05 4.858214631e-05 5.700041211e-05 -9.26741682e-05 -0.0001063892805 -4.465016094e-05 -7.933422005e-05 -8.926929594e-05 0.0001527538396 +-6.146599736e-07 1.215259166e-05 2.2307866e-05 1.057105383e-05 -1.570576542e-05 -8.163060858e-05 -4.932899458e-05 -7.268456043e-05 7.146676089e-06 0.0001730970378 -7.806593706e-05 -6.936388294e-05 -0.0001193700483 -6.618755728e-05 0.0001738771369 -8.089681989e-06 -1.569059264e-05 -3.231399257e-05 -4.00066001e-05 1.925744402e-05 1.918525614e-05 2.967480418e-05 5.096593303e-05 2.089682839e-05 -6.313423646e-05 +-7.664161871e-06 2.968143553e-06 5.736308734e-06 7.845877178e-07 3.142420905e-06 -3.507058599e-05 4.829845987e-06 2.236338916e-05 3.848440973e-05 4.290696159e-05 -3.602335879e-05 9.852128666e-06 2.393390358e-05 1.239666952e-05 2.621481249e-05 -8.627280748e-06 2.195899398e-06 6.645763391e-06 8.183788676e-06 8.257855342e-06 1.270911803e-05 -5.86177635e-06 -9.647833682e-06 4.625581737e-06 -1.672937273e-06 +-6.264741586e-06 1.480949387e-05 2.704271213e-05 8.643159338e-06 -1.418382189e-05 -2.199395888e-05 -2.981724682e-06 1.113850277e-05 4.431737537e-05 4.386875419e-05 -7.667804064e-06 2.163314826e-06 8.877401911e-06 1.517703379e-05 9.954936889e-06 8.436476166e-06 6.330566439e-06 1.098507548e-05 8.020575112e-06 -1.632526251e-05 -1.374305159e-05 -9.819844741e-06 -1.781693863e-05 -1.55803225e-05 2.489525477e-05 +-1.216880389e-05 8.04810498e-06 1.490635988e-05 5.943143188e-07 -4.20443442e-07 -2.582149528e-05 -1.195679956e-05 -9.513371696e-06 2.886933907e-05 5.793658084e-05 -1.478023179e-05 -1.508100506e-05 -2.321609455e-05 -2.125870978e-06 3.960074002e-05 -4.309068144e-07 -3.309683649e-06 -6.88571006e-06 -6.672455953e-06 3.376305379e-06 1.012084761e-06 6.136578002e-06 1.062589158e-05 3.236614752e-06 -1.004235332e-05 +0.04754696629 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04223965169 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08313080913 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04131487971 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003490086938 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-8.007993054e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0008799886192 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001245911282 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001051574889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002958272935 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.841527453e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.121290698e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.159061789e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04826214775 0.6027474441 -0.299612928 0 0 -0.08148251562 0.04859078098 -0.01733212925 0 0 0.1459154956 -0.01815699325 0.06258386372 0 0 0 0 0 0 0 0 0 0 0 0 +0.08220715422 0.07314113824 -0.113235049 0 0 -0.07319555807 0.03204064839 -0.0006875216959 0 0 0.1312437907 -0.004031772847 0.03324431804 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0258071238 0.04774527178 -0.09201070151 0 0 -0.007380280893 0.004275064552 -0.0006249689151 0 0 0.01298765993 -1.283171946e-05 0.004099285639 0 0 0 0 0 0 0 0 0 0 0 0 +-0.007046383222 0.008304557027 -0.01423135368 0 0 -0.005712827044 0.007547933802 -0.01479916054 0 0 0.009983686672 -0.01433753345 0.02519501882 0 0 0 0 0 0 0 0 0 0 0 0 +-7.412842242e-05 0.0007154043642 -0.000104750577 0 0 -0.0004102403786 0.0004797504138 -0.0008255466952 0 0 0.0007270120058 -0.0008027082202 0.001502470653 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001979605595 0.0004959143079 -0.0004840443993 0 0 8.623883922e-05 -2.89532778e-05 0.0003272759493 0 0 -0.0001750415463 0.000377549585 -0.000493502097 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003788016221 0.0004781589856 -0.0007827363568 0 0 -9.412679393e-05 0.0001540252163 -0.0004182395252 0 0 0.0001806972036 -0.0004483719482 0.000700790888 0 0 0 0 0 0 0 0 0 0 0 0 +4.743137172e-05 5.861664687e-05 -2.945550545e-05 0 0 -2.497828077e-05 4.789762709e-06 3.891261141e-06 0 0 4.670393422e-05 9.127542535e-06 1.705949733e-06 0 0 0 0 0 0 0 0 0 0 0 0 +4.818803658e-06 8.645767096e-05 5.517321915e-05 0 0 -5.251953046e-06 3.088386081e-05 -1.967968003e-05 0 0 9.018301756e-06 -2.100253228e-05 5.301638763e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001004674926 0.0001562818835 -0.0001565272488 0 0 2.131427589e-05 -6.295345688e-06 -2.69311191e-05 0 0 -3.735473334e-05 -3.143832129e-05 3.21272436e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.193825851e-05 5.746971035e-05 -2.456152995e-05 0 0 1.658777301e-06 -1.524194044e-05 2.575907176e-05 0 0 -2.148094633e-06 3.005588119e-05 -4.39907273e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.427879703e-05 3.085148318e-05 9.459693152e-06 0 0 -9.41030767e-06 1.06626521e-05 -1.944858995e-05 0 0 1.795072279e-05 -1.964356044e-05 3.540919943e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.136664909e-05 5.212214174e-05 -2.988274013e-05 0 0 8.379591332e-06 -5.411579897e-06 5.818717105e-07 0 0 -1.434297446e-05 3.527627768e-07 -4.795921951e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.172935831 0.1629494502 -0.2951209371 0.02180831801 0.05439574449 -0.3589440148 -0.08704691916 -0.08292312737 0.4163515407 -0.6564891707 0.2884982554 0.02803109064 0.01677945655 -0.004297602295 0.3556790484 -0.01454471214 0.01430577139 -0.03805547545 0.03724950765 -0.006111920672 -0.02089979087 0.03689034055 -0.05907415725 -0.006625741532 0.03578562673 +-0.05399552462 0.05418518917 -0.09630540187 0.002857123142 0.01377546613 -0.09682493435 0.0121463545 -0.09159371415 0.08012422381 -0.1129341932 0.1355958999 -0.06939539293 0.1268611369 0.03366539563 0.05052589032 -0.02256433614 0.0168372149 -0.05344245824 0.04267166189 -0.01211550825 -0.03710308046 0.05072449711 -0.07723845158 -0.01342749188 0.03193609794 +0.0009912355502 0.007369152926 -0.01309862078 0.004831057151 0.008186561077 -0.02053610573 0.002806642649 -0.004877037576 -0.01316035703 -0.02094190555 0.03953141277 -0.01145169761 0.01282806446 0.0303598888 0.03369869874 -0.007791667575 -0.0004818104339 -0.01048249608 0.006866769348 -0.01115771545 -0.01295282855 0.01002961997 -0.01090041519 -0.01123656599 -0.004141118706 +0.007755296745 0.006737752012 -0.01212835549 0.009830791328 0.01573605203 -0.00639759123 -0.005946276958 0.01182441224 -0.008848074179 -0.01514591376 0.009720161177 0.01009367061 -0.01881396869 0.0148308346 0.02438694132 0.002045666159 0.000759476791 -0.002594163433 0.00132881917 0.003177987928 0.003726973187 0.002818669284 -0.004203303653 0.003954391029 0.005521728525 +0.001748774128 0.001874937181 -0.00337986974 0.002620097697 0.004166461295 -0.0005103104128 8.63268957e-05 -9.403904263e-05 0.0004124522073 -0.0005200035453 0.0008288830845 0.0002468482572 -0.0005080159382 5.483037064e-05 0.001282423297 0.00111644724 0.001310478454 -0.002289104749 0.002209167506 0.002508369798 0.001876859451 0.0020650809 -0.003769732463 0.002582859124 0.004702329618 +0.0001471896145 0.000301182688 -0.0005469757816 0.000274707897 0.0004213593947 5.113836763e-05 -1.546452299e-05 -0.0002033806292 0.0004049673676 -8.399276194e-05 -0.0002127311525 -0.000158177483 0.000247058712 -0.000129555799 -0.0003670115908 0.0003295930164 0.0001817877018 -0.0003530199856 0.0003487997361 0.0005148871743 0.0005335250493 0.0003161816807 -0.0005558310775 0.0004851755455 0.0008817104016 +5.854241883e-05 4.760934399e-05 -8.289995315e-05 5.800720005e-05 0.0001005693013 -0.0002648857509 -0.0002186626285 0.0004022567057 -0.0003305557663 -0.0005419967232 0.0004524194106 0.0003838033625 -0.0006879042376 0.0005671662624 0.0009338716752 -9.052092429e-05 -8.604678154e-05 0.000131445259 -0.0001134336805 -0.000190962279 -0.0001544917067 -0.0001181676381 0.000227075975 -0.0001938776011 -0.0003127115486 +6.399764264e-05 9.355839315e-05 -0.0001683995443 0.0001121583141 0.0001881259001 -0.0001353114403 2.133905932e-05 -6.199767186e-05 4.525770406e-05 -0.0001155110358 0.0002068964044 -8.23579835e-06 3.300537152e-05 3.588167825e-05 0.0001784697176 6.163815225e-06 4.955952458e-05 -0.0001061120337 0.0001236596981 4.615082188e-05 1.218886026e-05 9.565143152e-05 -0.0001633522393 3.890455548e-05 0.0001697161935 +4.806674253e-06 9.514447849e-05 -0.0001727738 7.648108094e-05 0.0001235754856 -2.235035813e-05 -2.332627244e-05 -1.711522422e-05 0.0001810102419 -0.0001246857822 -7.23156735e-05 1.267428374e-05 -7.868617447e-06 -8.750515536e-05 -2.824741095e-05 9.232947798e-05 4.073938463e-05 -6.769869317e-05 6.402454916e-05 0.0001399486775 0.0001478838066 6.210829041e-05 -0.0001132044761 0.0001371113309 0.0002065181362 +-1.014383696e-05 1.412586417e-06 -2.983344657e-06 -2.713365608e-06 -6.677034333e-06 -7.240729437e-05 -3.953550599e-05 5.98932735e-05 4.630233765e-06 -0.0001461201487 7.423844251e-05 5.628534328e-05 -9.699013641e-05 5.698979636e-05 0.0001510935206 -1.862987838e-05 -1.822849181e-05 3.514180544e-05 -4.13264114e-05 -3.357573818e-05 -3.365229605e-05 -3.239072275e-05 5.65005167e-05 -3.274628394e-05 -7.825540554e-05 +-6.768158607e-06 3.292451298e-06 -6.241437531e-06 5.663057028e-07 -1.507224546e-06 -3.453583214e-05 5.917550897e-06 -2.427490561e-05 3.609146388e-05 -3.945503314e-05 3.87699881e-05 -1.101467376e-05 2.595062954e-05 -8.900490094e-06 2.586720708e-05 -9.231247215e-06 2.246485917e-06 -7.3951303e-06 9.243550583e-06 -9.214463101e-06 -1.354492072e-05 6.502626316e-06 -1.032072909e-05 -7.478255795e-06 -5.153992848e-07 +-4.410413377e-06 1.696521915e-05 -3.098566482e-05 1.164782599e-05 1.891708616e-05 -2.044099734e-05 -5.759171238e-06 -5.168374424e-06 4.216639699e-05 -4.618957977e-05 4.469533141e-06 2.342441739e-06 2.491040093e-07 -1.255719679e-05 1.300491488e-05 1.083351451e-05 6.566009976e-06 -1.069058889e-05 7.031049546e-06 1.953086157e-05 1.748986251e-05 9.628603992e-06 -1.777022336e-05 1.908547043e-05 2.707564478e-05 +-1.327855818e-05 6.211814118e-06 -1.165511696e-05 -1.260333875e-06 -2.725089472e-06 -2.461076815e-05 -1.027536789e-05 7.704747867e-06 2.862125369e-05 -5.386458287e-05 1.424320743e-05 1.317614493e-05 -2.002920154e-05 4.364725213e-07 3.644138658e-05 -1.85586794e-06 -3.688516736e-06 7.273634363e-06 -6.690669964e-06 -5.422906552e-06 -3.272741139e-06 -6.469170802e-06 1.134262658e-05 -5.179398558e-06 -1.218065913e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_3_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_3_ref.dat new file mode 100644 index 0000000000..73978dac9b --- /dev/null +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_3_ref.dat @@ -0,0 +1,195 @@ +0.148980112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.324801652 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1008057893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003329436972 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.00229489815 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003747182934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001174624292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004255725742 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004635205861 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001958397965 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.441294594e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.022199679e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.160461119e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.043382699 -0.05345874198 -0.004337714857 0 0 -0.05154841229 0.07738322406 0.006518432478 0 0 0.0005639644463 -0.002881942874 -0.5609874739 0 0 0 0 0 0 0 0 0 0 0 0 +0.1135407428 -0.1229932309 -0.005034278418 0 0 -0.1289067125 0.1823929723 0.008460036361 0 0 -0.01021285303 0.01150054807 0.04783213836 0 0 0 0 0 0 0 0 0 0 0 0 +0.07808093897 -0.07888069592 0.0009993596236 0 0 -0.0869999894 0.1176866836 -0.0002189714394 0 0 -0.002911632116 0.003062900068 0.2420025811 0 0 0 0 0 0 0 0 0 0 0 0 +0.02239665721 -0.02169936972 0.002235239619 0 0 -0.02484342007 0.03221284983 -0.002687477943 0 0 0.001482699521 -0.001792320937 0.1050647981 0 0 0 0 0 0 0 0 0 0 0 0 +0.001528214311 -0.001886670189 0.001240208591 0 0 -0.001950749058 0.002590616165 -0.001638918417 0 0 0.001325653415 -0.00153481258 0.01605411344 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00233298889 0.002450491491 0.0003719312712 0 0 0.002714044108 -0.00359576896 -0.0005317574781 0 0 0.0004977017691 -0.0005912691877 -0.007187070903 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0018881848 0.002210905583 -7.329045534e-05 0 0 0.002294574269 -0.003163548153 6.952669572e-05 0 0 3.620063206e-05 -4.918155345e-05 -0.01037544783 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002751452053 0.0003395579207 -0.0001930923956 0 0 0.0003614046041 -0.0004602773832 0.0002547659588 0 0 -0.0001942528681 0.0002402262652 -0.00171813201 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002620332823 -0.0003182747037 -9.5047829e-05 0 0 -0.0003441062137 0.0004331687057 0.0001315374509 0 0 -0.0001099132464 0.0001360548707 0.0007908442207 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001756846708 -0.0001889325104 1.271709371e-05 0 0 -0.0002226219139 0.0002612471544 -1.456698448e-05 0 0 6.392808783e-06 -8.245424254e-06 0.0009650699439 0 0 0 0 0 0 0 0 0 0 0 0 +3.446554324e-05 -4.589001744e-05 3.070559441e-05 0 0 -4.923812704e-05 5.923842927e-05 -4.065643438e-05 0 0 3.261536094e-05 -4.044068522e-05 0.0001431252634 0 0 0 0 0 0 0 0 0 0 0 0 +-9.923868363e-06 1.203961157e-05 6.564654476e-06 0 0 1.44882384e-05 -1.548824944e-05 -8.9527898e-06 0 0 7.770935628e-06 -8.705826386e-06 -6.331540995e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.032695554e-05 2.520685116e-05 5.851879743e-07 0 0 2.496544102e-05 -3.581233595e-05 -1.104833184e-06 0 0 2.625104881e-06 -3.594201392e-06 -0.0001504931657 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03036658816 -0.02763124735 -0.001577926418 -0.04114207761 0.002336647678 0.00538402933 0.004786488253 0.0005126093983 0.007115667959 -0.0007287617464 -0.0007841267427 -0.000370961675 -0.0271328795 -0.000601261867 0.03705855944 -0.05407196163 -0.05152952076 -0.003120840972 -0.07683547812 0.004598143678 0.000850442065 0.0006013639559 0.03644713362 0.0009776887013 -0.04978184082 +-0.02364189524 -0.016763813 0.0009217967967 -0.02486636805 -0.001117539738 0.01760271145 0.01377119861 0.000858392466 0.02048411068 -0.001291448332 0.0007676592784 0.0008026307105 0.0003976031831 0.001209743132 -0.0005562797591 -0.04478202474 -0.03979777219 0.0008460038412 -0.05955968675 -0.0008265339131 -0.001317307287 -0.001147448323 -0.0005458774395 -0.001714743795 0.0007621786793 +-0.003236797311 0.0001084667977 0.00101657526 0.0003518872645 -0.001427270625 0.01548581855 0.01051379646 -3.527537108e-05 0.01572814928 -7.25126942e-05 0.0003922519554 0.0003143644998 0.01714140065 0.0004616696068 -0.02424584778 -0.008335276686 -0.007902964839 0.001593249262 -0.01201555728 -0.002166422897 -0.0007703657278 -0.000519547282 -0.02304459784 -0.0007585181818 0.03259576119 +0.001934851491 0.001558953843 -9.237071975e-05 0.002497236414 7.805505061e-05 0.004448751031 0.002227161163 -0.0004013920155 0.003431530193 0.0005179963794 -0.0004179162111 -0.0002920612268 0.005861418794 -0.000479159958 -0.008969903505 0.002655713807 0.001218618643 3.4933643e-05 0.001852074786 -0.0001141563682 0.0004360448976 0.0003705111602 -0.007872925542 0.0006164317216 0.01204917687 +0.0002058451668 -3.743108591e-05 -0.0001031714878 1.473674339e-05 0.0001437856137 0.0002905771498 -1.332730786e-05 -8.284412313e-05 2.663308186e-05 0.00012268468 -0.0001719070477 -8.961294598e-05 -6.385071658e-05 -0.0001549809644 -0.0002226163134 0.0003651973398 -1.184123827e-05 -0.0001298985725 5.135229886e-05 0.0001766467558 0.0002038397654 0.0001158032153 8.695122152e-05 0.0002037128794 0.0002975522669 +-0.000149308764 -0.000132802527 4.717180405e-05 -0.000187639837 -5.804530553e-05 1.244550513e-05 2.409959226e-05 4.597294569e-05 3.499982774e-05 -5.834773061e-05 4.249977281e-05 4.042689839e-05 -0.000137644079 5.618488545e-05 0.0001738768762 -0.0002583285994 -0.0002519704903 5.36729022e-05 -0.0003569760578 -6.484641062e-05 -5.250945766e-05 -5.747966303e-05 0.0001841632864 -8.016155555e-05 -0.0002325932878 +6.347709842e-05 2.669879711e-05 -2.797159072e-06 3.561986681e-05 4.015435847e-06 8.52521139e-05 3.40737841e-05 -1.042725312e-05 4.552478241e-05 1.389729644e-05 -9.888580857e-06 -1.157184967e-05 0.0001206528055 -1.687581621e-05 -0.0001536503294 7.338754717e-05 2.745907596e-05 5.660004065e-07 3.643246611e-05 -1.76940586e-07 1.233230286e-05 1.52084362e-05 -0.0001619083199 2.22370269e-05 0.0002061819526 +2.501509374e-05 1.389831398e-06 -7.626127329e-06 9.521335065e-07 1.030110295e-05 2.79271521e-05 1.731468468e-06 -7.238345816e-06 1.3218405e-06 9.805271957e-06 -1.330676594e-05 -8.252434882e-06 1.15819084e-05 -1.20074522e-05 -1.542183902e-05 3.191861916e-05 2.568383631e-06 -8.953238123e-06 2.380451192e-06 1.211495628e-05 1.674564324e-05 1.095220712e-05 -1.546149985e-05 1.598474027e-05 2.05799879e-05 +-1.85499812e-05 -2.094289e-05 6.572866636e-06 -3.128341123e-05 -8.814126617e-06 -5.096567495e-06 -4.822968627e-06 7.082356066e-06 -7.178125858e-06 -9.631866573e-06 5.19909179e-06 6.156208734e-06 -3.505039495e-05 9.145957072e-06 4.782820296e-05 -2.924370041e-05 -3.332029005e-05 7.241018865e-06 -4.9778272e-05 -9.631014984e-06 -6.616129804e-06 -8.360931471e-06 4.695353479e-05 -1.24413424e-05 -6.407279581e-05 +3.284961613e-06 5.154801321e-07 -7.312297914e-07 7.730545529e-07 8.711251072e-07 2.994067866e-06 6.961336426e-07 -9.115309914e-07 1.047782178e-06 1.148340856e-06 -1.031604028e-06 -1.249998473e-06 4.755192148e-06 -1.894849215e-06 -7.10404736e-06 4.017665575e-06 5.902518507e-07 -7.54248221e-07 8.698481105e-07 8.693809628e-07 1.349164982e-06 1.679530001e-06 -6.371918244e-06 2.545376057e-06 9.521662828e-06 +5.377028441e-06 3.402168798e-06 -6.929307169e-07 5.101206389e-06 9.225112242e-07 6.467245705e-06 3.775213909e-06 -9.801649403e-07 5.629989609e-06 1.330495742e-06 -1.287564939e-06 -9.149535167e-07 1.09898125e-05 -1.383418286e-06 -1.565854621e-05 5.910239456e-06 3.590201317e-06 -6.901896641e-07 5.367910132e-06 9.108773909e-07 1.590739114e-06 1.183803702e-06 -1.4741217e-05 1.794667525e-06 2.100425859e-05 +-2.501733704e-06 -3.219428182e-06 5.557258624e-07 -4.728313466e-06 -7.006319063e-07 -9.806268576e-07 -1.022855907e-06 7.832152383e-07 -1.49186032e-06 -1.021448172e-06 3.75132464e-07 6.117000046e-07 -5.797193889e-06 8.663015825e-07 7.634292878e-06 -3.763496627e-06 -4.952605928e-06 5.139472115e-07 -7.27918171e-06 -6.287713258e-07 -4.666753931e-07 -8.277769424e-07 7.769818092e-06 -1.173847411e-06 -1.023211143e-05 +-1.218696447e-06 -1.333868746e-06 -5.495932834e-07 -2.014025296e-06 7.6573506e-07 -7.662750423e-07 -7.454085911e-07 -3.359366167e-07 -1.123711001e-06 4.681255105e-07 -5.074920854e-07 -4.544423951e-07 -2.546634832e-06 -6.818860241e-07 3.573410803e-06 -1.695556894e-06 -1.838731371e-06 -7.389029095e-07 -2.774386209e-06 1.029298859e-06 6.860513443e-07 6.221547389e-07 3.421490688e-06 9.339736293e-07 -4.800959636e-06 +0.08009565041 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02636182232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01690990146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01207630006 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0009459726588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004297425687 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.149617517e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.000107170518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.954575226e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001346535104 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9.687268605e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.018785686e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.501189714e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1745534981 -0.1209474159 -0.006080582281 0 0 -0.06121241223 0.04653439617 0.003389359804 0 0 -3.287548256e-05 -0.002015306609 -0.3182371751 0 0 0 0 0 0 0 0 0 0 0 0 +0.1110228435 -0.09316655731 0.0002783377457 0 0 -0.03919959263 0.03648495319 0.0009267337473 0 0 -0.00220974961 0.001825282321 0.06840917895 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001970500593 -0.004707227626 0.0009502451633 0 0 0.0005545736388 0.001784412794 -0.0002391127148 0 0 -0.000951832301 -0.0002681573922 0.01269797245 0 0 0 0 0 0 0 0 0 0 0 0 +0.01704860523 3.367513478e-05 0.0001000266119 0 0 -0.005723527036 -1.998634213e-06 -3.374743473e-05 0 0 -0.0006333225102 -1.441643389e-05 0.000178943093 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004741735496 0.0006624222988 -2.635353589e-05 0 0 -0.0001168297689 -0.0002626581475 6.469471277e-06 0 0 0.0001080099443 -2.577115569e-05 -0.001361284065 0 0 0 0 0 0 0 0 0 0 0 0 +4.415994483e-06 0.000377722413 5.386307057e-05 0 0 -1.606068473e-05 -0.0001523770606 -2.232751483e-05 0 0 2.840119539e-05 -3.194167901e-05 -0.0004321817457 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003243217812 -2.597577683e-05 5.395079003e-06 0 0 -0.00012017392 9.290139874e-06 -1.869242505e-06 0 0 2.577529998e-05 -1.377689094e-06 2.800051247e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.539908222e-05 -0.0001004135554 -1.094721621e-05 0 0 3.166462407e-05 3.64499819e-05 5.124341168e-06 0 0 4.495797529e-07 4.452295803e-06 1.947925659e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001059312807 7.52597682e-05 -1.032430086e-05 0 0 3.518885526e-05 -2.963782731e-05 2.914491133e-06 0 0 7.332637014e-07 -1.16754589e-06 -0.000183468192 0 0 0 0 0 0 0 0 0 0 0 0 +-7.479456693e-05 3.20974446e-05 5.913920751e-06 0 0 2.572139075e-05 -1.26340785e-05 -2.440591291e-06 0 0 9.596735681e-06 -4.570220753e-06 -5.897246593e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.889851542e-06 -8.953587407e-06 4.568109205e-06 0 0 -1.211694669e-06 2.672643074e-06 -1.547926956e-06 0 0 1.187850211e-06 -2.548100486e-06 -1.771035858e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.516349987e-05 -8.182399783e-06 -2.098280082e-06 0 0 -6.411077689e-06 2.498513157e-06 7.820634666e-07 0 0 -2.569758987e-07 -8.001157816e-09 -2.096919793e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.23623146e-05 1.057493918e-05 -9.090807349e-07 0 0 3.938302376e-06 -4.398442111e-06 2.451787786e-07 0 0 1.506188625e-06 -8.296653309e-07 -3.754823847e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.1618038546 -0.1643962272 -0.005483414749 -0.04125841188 0.001399996707 -0.05072596012 0.0569626022 0.003993658342 0.01425921446 -0.0008675124547 -0.002226997354 -0.001240288122 -0.3113524778 -7.282574557e-05 0.05921894453 0.151417949 -0.1612969547 -0.00422661808 -0.04043525353 0.001133554424 -0.0007365828765 -0.001006552631 0.1112227739 -0.0003183553508 -0.02116008182 +0.1013954002 -0.09872247299 0.003006482703 -0.01677370035 -0.0006363435729 -0.06002058493 0.06717366652 0.001633032604 0.0113056164 -1.088470208e-05 -0.003384861875 0.003186070063 0.08133402804 0.0003091163989 -0.009809533854 0.02354765828 -0.02611157467 0.003598450421 -0.004413726432 -0.0005074497571 0.001146688326 -0.002300509318 -0.0289204725 -0.0002942492543 0.003484827512 +0.003551432086 -0.01068566213 0.001773238885 -0.0001309815867 -7.633848673e-05 -0.003332431184 0.01110201743 -0.0005952525654 0.0001087826789 9.735288934e-05 -6.548848754e-06 -0.0004442304572 0.04088139245 -0.0002651090566 0.0007850268281 -0.001679601644 0.005499603277 0.0004202344552 6.500213528e-05 6.68765627e-05 5.4725234e-06 -8.543143476e-05 -0.01430298301 9.176474369e-05 -0.0002766034196 +0.007411573743 0.00144412287 0.0001545519282 -0.0007841357351 7.852445926e-05 -0.003959696916 -0.0008560355426 -0.0001130320793 0.0004689507692 -6.356313162e-05 -0.0007296639454 -0.0001170323002 -0.0001108060569 6.210917571e-05 -7.28023378e-05 0.002293909538 0.0006547888541 -1.714936365e-05 -0.0003716766253 -1.866382949e-05 0.000154193245 3.625034693e-05 2.193213338e-05 -2.031860053e-05 1.444581183e-05 +0.001948470513 0.0008285800202 -2.750690974e-06 0.0001453666215 -8.620058779e-06 -0.00186252523 -0.0009068929938 -3.944999026e-05 -0.000163762046 1.393726101e-05 5.851159917e-05 -8.332044165e-05 -0.003066810678 -3.069023057e-05 0.0003915959643 -0.001498979619 -0.0005647310734 -7.495144673e-05 -9.929888953e-05 1.508950367e-05 -4.339398061e-05 3.181330316e-05 0.001097817198 1.15073839e-05 -0.0001402259929 +-0.000557207182 6.693654096e-05 1.632607801e-05 -1.203418043e-05 6.198915998e-07 0.0004247749592 -5.466431729e-05 -1.858711524e-05 8.75230883e-06 -1.840107954e-06 5.489286236e-05 -2.231861458e-05 -0.0001337755646 1.462123154e-06 -2.614256742e-05 0.000103755767 2.240163875e-06 -9.537565577e-06 -1.74075966e-07 -2.019323967e-06 -3.365876474e-05 7.894971764e-06 4.946537184e-05 -6.025291525e-07 9.658276844e-06 +0.0001674195113 4.074797671e-05 2.234532686e-06 -2.572578494e-05 -3.53404575e-06 -0.0001358228186 -3.335408581e-05 -2.7736721e-06 2.078536186e-05 1.985480673e-06 6.426589004e-06 -1.868346057e-06 -6.880668768e-05 -1.813008391e-06 -5.740868408e-05 -3.661759573e-05 -4.384366596e-06 -1.012749272e-06 3.03847353e-06 6.247105659e-08 -1.932835251e-06 7.567216544e-07 2.43334401e-05 5.733684287e-07 2.028719562e-05 +-6.182219552e-05 -0.0001000521615 -1.981623322e-05 -2.407370178e-05 3.884193227e-06 2.721993605e-05 4.168575726e-05 1.912434021e-05 1.001261815e-05 -3.721795004e-06 9.722152345e-06 1.74023012e-05 -0.0001073229346 4.265240877e-06 2.073862637e-05 -4.011127496e-05 -7.864411727e-05 5.466239172e-06 -1.89978011e-05 -1.027203974e-06 -3.915593271e-06 -7.263746042e-06 4.101641662e-05 -1.778735718e-06 -7.926595674e-06 +-9.025087365e-05 2.90684131e-05 -2.822501746e-06 1.061423643e-05 4.298318547e-07 0.000106848381 -3.837157598e-05 -1.595566058e-06 -1.393173359e-05 8.238868836e-07 -2.5525836e-08 -6.973840125e-06 -0.0001814697448 -2.612362342e-06 4.915767118e-05 0.0001042319765 -3.715730857e-05 -5.022611784e-06 -1.352910453e-05 1.725211338e-06 -2.778146752e-06 2.6848862e-06 6.654617587e-05 1.027175107e-06 -1.803405613e-05 +1.394353878e-06 3.091146245e-06 2.626332866e-06 1.045799594e-06 -7.597482411e-07 -2.666223231e-06 -6.646469444e-06 -3.060636605e-06 -2.269251323e-06 8.834277094e-07 6.657366535e-07 -4.52022741e-06 -3.412913734e-05 -1.560752552e-06 9.809417901e-06 -4.207916803e-06 -9.593477354e-06 -2.540517083e-06 -3.280250961e-06 7.313386532e-07 -3.070330796e-07 1.701941069e-06 1.27033552e-05 5.882075606e-07 -3.651391022e-06 +1.001631839e-05 -2.370487892e-05 1.272425238e-06 -6.116979784e-06 -2.502031828e-07 -5.894412958e-06 1.349489309e-05 -7.973306796e-07 3.484033121e-06 1.55341008e-07 5.185601569e-07 -1.225942304e-06 7.347360524e-06 -3.251805655e-07 -1.483823236e-06 3.4493055e-06 -8.917713825e-06 -7.195522256e-07 -2.29706698e-06 1.440285165e-07 -1.857877248e-07 2.670953095e-07 -2.264379445e-06 7.227734829e-08 4.570959548e-07 +1.04040645e-05 -8.416804389e-06 -2.605911292e-06 -2.88956102e-06 7.374553229e-07 -1.472005459e-06 4.831992115e-07 1.71214552e-06 1.749137721e-07 -4.704982406e-07 -1.752125314e-06 7.615789487e-07 -3.231863236e-05 2.809651598e-07 8.807916531e-06 1.497599633e-05 -1.311890239e-05 -2.905921379e-07 -4.491357647e-06 1.185063792e-07 4.056236521e-07 -3.280862318e-07 1.206953064e-05 -1.166763755e-07 -3.290035163e-06 +-1.053862571e-06 1.031921026e-06 -7.941010523e-07 3.194754066e-07 1.875173997e-07 2.774824323e-06 -6.416821293e-06 -1.367707065e-07 -1.998190531e-06 6.105482065e-08 1.063536033e-06 -1.31739006e-06 -4.513472906e-05 -4.396656908e-07 1.124652352e-05 4.884590395e-06 -1.296521433e-05 -1.336581861e-06 -4.040138533e-06 3.800715933e-07 -4.500610704e-07 4.885050086e-07 1.670925206e-05 1.629636886e-07 -4.164055729e-06 +0.05977018381 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04307832341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02596374692 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0009654788725 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001140246242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001168092024 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.000158621476 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-9.302264825e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.160973019e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.464698831e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-3.970793907e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.06340435e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.251741623e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002404025878 -0.0004797892646 -0.0005187310646 0 0 -0.05895629557 0.2169555239 0.007735580689 0 0 -0.0004651836857 -0.0005361696859 -0.2495843923 0 0 0 0 0 0 0 0 0 0 0 0 +0.001494085034 -0.0006876039053 -0.0002084090259 0 0 -0.04216895156 0.05364933091 -0.0004800088683 0 0 -0.001126640881 -0.0001571013262 0.04550149447 0 0 0 0 0 0 0 0 0 0 0 0 +5.361166105e-05 0.0002557542903 7.22154888e-07 0 0 0.004033611152 0.01012628552 -0.0002227071725 0 0 0.0003413914152 0.0008043178712 0.0009310714925 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001130566572 0.0001512107572 -6.30093e-06 0 0 0.0006467119189 0.008330700016 -0.0001133472675 0 0 -1.408009882e-05 -4.226306443e-05 0.001410732463 0 0 0 0 0 0 0 0 0 0 0 0 +3.027675824e-06 -8.88595082e-07 -5.368101584e-07 0 0 7.54212796e-05 0.0007870014418 8.64919028e-05 0 0 7.923826432e-06 7.907469951e-05 -0.0003666596498 0 0 0 0 0 0 0 0 0 0 0 0 +-3.907077457e-08 2.127931727e-05 1.86815398e-06 0 0 0.0005009264057 0.0003286618232 -1.716990471e-05 0 0 6.791059424e-06 -6.325825862e-05 -0.0006094138207 0 0 0 0 0 0 0 0 0 0 0 0 +-4.679852516e-06 -3.609629017e-06 7.582627946e-07 0 0 1.735916005e-05 -0.0004126309221 -3.852230924e-05 0 0 5.050003838e-06 -4.288675065e-05 -0.0001837931266 0 0 0 0 0 0 0 0 0 0 0 0 +-4.407973799e-07 -1.659448388e-06 -9.387489905e-08 0 0 8.497501354e-06 0.0001298989244 -6.020462402e-06 0 0 -9.447775021e-07 -9.286676391e-06 6.302367268e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.929173903e-08 -1.30439303e-07 -2.820173182e-07 0 0 -4.479266628e-05 3.92758209e-05 1.079997315e-05 0 0 -2.165898327e-06 1.62664174e-06 -3.612655058e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-9.939817455e-07 -5.045642222e-07 9.729938458e-08 0 0 1.086303059e-05 -7.744862885e-05 6.531916592e-06 0 0 2.400121768e-07 -2.804724239e-06 -0.0001005173463 0 0 0 0 0 0 0 0 0 0 0 0 +-6.849385157e-07 -1.436619262e-08 1.542418013e-07 0 0 1.042719844e-05 -7.161079862e-05 -4.917398361e-06 0 0 1.105274357e-06 -8.939268328e-06 -6.892118098e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.732897667e-07 -1.36191098e-07 4.615817219e-08 0 0 3.083422018e-06 -8.303211955e-06 -4.797927588e-06 0 0 1.335846772e-06 -4.347988437e-06 -3.436343712e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.719572277e-07 -4.712475776e-07 -4.551526715e-09 0 0 -9.374115737e-07 4.019840635e-06 -4.318164003e-07 0 0 3.692585715e-07 -2.07550287e-06 -2.742251557e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01898546141 -0.005422800831 -0.0002318881245 0.01812043722 -0.001335125856 0.002711924343 0.004640493016 -0.0001217369362 9.92526643e-05 -0.0008667308835 -0.000619869349 -0.0005812434249 5.40374046e-05 0.0003097468159 0.0003772022343 -0.2469317278 -0.0593404961 0.001171191508 0.2433643919 0.01126126024 -0.0008958281438 -0.0003764702906 -0.04992560389 0.001608564185 -0.3405271929 +0.04052421939 0.01880975102 -0.0004954044093 -0.03945067299 -0.001359484777 0.002364194408 0.003978682075 -0.000139137396 -0.0003883346082 -0.0005801449337 8.279961127e-05 4.482728863e-06 8.311927983e-06 -0.0001030407955 3.763398123e-05 -0.06794747738 -0.02984342675 -0.0003835748687 0.06725605538 -0.002950145165 -0.002219039045 -0.001748121756 0.01942063315 0.001931667733 0.08354518512 +0.0009340681774 0.003178080609 0.0001689712732 -0.0001542004047 0.0004188811321 9.293777686e-05 3.425832264e-05 -1.15218869e-05 -0.0001263947294 -2.322640502e-05 -1.195230854e-06 2.796083984e-05 3.385073356e-05 1.469646196e-05 7.175363364e-05 -0.0005704995957 0.001940713046 -0.0002697469162 0.001714177967 -0.0005535835233 0.0001006074466 0.0005290711972 0.004776811843 0.0001781811677 0.01008940678 +0.002628971229 -0.002109142968 6.727276978e-06 -0.004174223797 8.303368303e-06 -4.650957754e-05 0.0002780111418 8.256979118e-07 0.0002952258987 -9.661607122e-06 2.507246744e-06 -8.158617858e-07 -1.488775254e-06 -2.864598652e-06 2.050541652e-05 -0.004255597731 0.003257179629 -3.173718964e-06 0.006611574001 -0.0001219380276 -0.0001130761802 9.440350191e-05 -0.0001268684903 0.000175124241 0.001727782359 +-0.0002045372923 1.272568282e-05 9.9441349e-06 0.0001075159637 -2.049898797e-05 -4.190982565e-06 3.085428875e-06 -2.62493409e-07 5.301472022e-06 1.085537628e-06 -7.573584549e-07 -3.625142942e-07 -1.203273271e-06 1.216660238e-08 4.445274355e-06 1.357451291e-05 -0.0001781367113 -1.555348187e-05 -0.0002213283957 6.585740698e-05 1.851481372e-05 -7.092018736e-06 0.0002361246728 -3.23733179e-05 -0.0008570268846 +-0.0001452027431 -0.0005145220534 5.763617101e-06 -0.0001273410234 5.719726791e-05 -1.25048914e-05 -1.132345478e-05 9.544052937e-07 1.157743003e-05 4.778088158e-06 -7.526936633e-07 -1.723948983e-06 1.302749676e-06 -1.369661381e-07 5.764979325e-06 0.0001037510266 0.0004034048678 4.772366452e-06 0.0001141465644 -4.463150493e-06 5.724134432e-05 3.489163642e-05 -0.0002998848371 -3.5755735e-05 -0.001304626231 +-5.069087039e-05 5.824223731e-05 1.006907217e-06 0.000100162164 8.635708607e-06 2.946995336e-07 -1.289171128e-06 1.970912105e-08 -1.317069548e-06 1.581894478e-07 -2.914557497e-07 1.188943707e-07 7.066342967e-08 4.077959336e-07 5.638161516e-07 3.153715156e-05 -3.760558935e-05 -7.375191764e-07 -6.33692842e-05 -6.31406047e-06 2.580446641e-05 -2.322638121e-05 -2.879045658e-06 -4.597715979e-05 -2.324732758e-05 +3.920284667e-05 1.667763801e-05 -1.851631856e-08 -2.318983944e-05 2.17594539e-06 1.497063089e-06 8.463656968e-07 -1.129896927e-08 -7.191113542e-07 -5.296195344e-07 -3.409118514e-08 -7.345759739e-08 7.823947339e-09 -2.733713913e-08 4.204313643e-07 -6.401032625e-05 -4.0997309e-05 1.998757423e-08 2.610696931e-05 -4.187389007e-06 4.670460159e-07 3.789786846e-07 1.296507027e-06 -9.041711509e-08 6.814704843e-05 +-8.102202589e-06 -6.923258441e-06 -1.406943838e-06 3.987592608e-06 -1.202187418e-05 1.924127507e-07 -2.70486139e-09 -4.695108672e-08 -1.947484775e-07 -4.18146934e-07 -9.92208177e-08 -9.155164381e-08 1.918362587e-07 4.107401593e-08 1.671083244e-06 -5.322622986e-05 -3.950265364e-05 1.658154131e-06 2.962765946e-05 1.60089837e-05 -6.387679961e-06 -5.480510154e-06 -1.384459776e-05 3.361284024e-06 -0.0001202550664 +-5.741226764e-05 8.406814006e-06 -8.976811098e-08 6.793539691e-05 1.9437884e-06 -7.605998298e-07 -5.506003043e-07 2.425964903e-08 4.064931114e-07 3.383907924e-07 -2.969858112e-07 1.60444414e-08 1.32992724e-07 3.225045297e-07 1.625229148e-06 7.188869202e-06 8.568550133e-08 5.137368893e-07 -7.515736184e-06 5.713517905e-06 5.144330571e-06 9.250931751e-07 -1.352924423e-05 -3.926112174e-06 -0.0001640346627 +-1.894162509e-05 -7.310665172e-06 4.003224626e-07 1.454398912e-05 5.584752998e-06 -3.569316525e-07 -2.54869496e-07 1.728821371e-08 1.905647102e-07 2.095582535e-07 -1.51641129e-07 -6.869474436e-08 8.273629049e-08 1.059765098e-07 9.323479187e-07 3.823439476e-07 -6.469801761e-07 -1.167805613e-07 -8.533166115e-07 -1.353920452e-06 6.016717033e-06 1.654684443e-06 -6.839585206e-06 -4.819821937e-06 -7.674826664e-05 +-3.403164681e-06 -1.489815925e-06 3.070016422e-07 2.639496423e-06 2.83590372e-06 6.631948862e-08 2.333006797e-09 -1.025961896e-09 -6.987747606e-08 -1.132160739e-08 -8.329033241e-08 -6.453916618e-08 7.464761192e-08 4.260673445e-08 6.711105217e-07 -1.613333766e-05 -7.247526027e-06 -1.353787369e-07 1.231133378e-05 -7.88500863e-07 2.665557743e-06 9.252000911e-07 -3.740226926e-06 -2.143869641e-06 -3.360498937e-05 +-5.297827799e-06 -7.683149679e-07 -3.306075276e-08 5.139731549e-06 -2.21991531e-07 5.891291737e-08 -2.727904475e-08 -4.621985682e-09 -8.282589143e-08 -5.166946118e-08 -6.617781274e-08 -4.018571608e-08 5.782908958e-08 3.973910512e-08 6.251776287e-07 -1.668886703e-05 -2.858546948e-06 1.473086585e-07 1.578007349e-05 2.035311546e-06 3.960800287e-07 -2.191947279e-08 -3.380360663e-06 -3.436036464e-07 -3.646028956e-05 +0.3340002585 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.07813357394 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.4346096676 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1608118656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01333105115 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001828138005 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005296823352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005140526056 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001972973881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001304775195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +7.181550139e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-9.37892383e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.789185567e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.277106312 -0.02945905442 -0.1244134999 0 0 -0.02872382941 0.3517181347 0.1835013805 0 0 0.2644973606 -0.392210598 0.1284230984 0 0 0 0 0 0 0 0 0 0 0 0 +0.2321307627 -0.003785298304 -0.06045796329 0 0 0.001704037916 0.1624498823 0.04136743722 0 0 0.2033674901 -0.2583922068 0.2392476957 0 0 0 0 0 0 0 0 0 0 0 0 +0.02142586614 -0.004726172572 -0.01410180965 0 0 -0.0107408088 0.02630923094 0.03167894659 0 0 0.04549405385 -0.06287325702 -0.08328364728 0 0 0 0 0 0 0 0 0 0 0 0 +0.01853614966 -0.02593761473 -0.04609801696 0 0 -0.02841820761 0.03390634714 0.06293701337 0 0 -0.03572873903 0.04541045926 0.08723049761 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001791340615 0.0001626012849 0.000277598337 0 0 -0.0002630272019 0.0001034007535 6.05291713e-05 0 0 -5.475398296e-05 -0.0007480645927 -0.001941059188 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000213312367 0.0006254739817 0.0008206993533 0 0 0.0004558167747 -0.0003762202061 -0.0008833392601 0 0 0.0002276236269 -0.0002533257212 -0.002577991654 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004976103336 -0.001114883371 -0.001745361113 0 0 -0.0009538396168 0.0007815754464 0.002072458402 0 0 -0.000928725188 0.001269991111 0.001040482526 0 0 0 0 0 0 0 0 0 0 0 0 +-3.981656972e-05 0.0001516447894 0.0002450162179 0 0 0.0001431006563 -0.000175136074 -0.0003551165842 0 0 0.0003013078054 -0.0004567475329 -0.0004037799306 0 0 0 0 0 0 0 0 0 0 0 0 +8.058931304e-06 3.208110619e-05 1.844105585e-05 0 0 7.886378434e-05 0.0001285296305 -2.553236682e-05 0 0 0.0001451263922 -0.0001103838429 0.0001311438721 0 0 0 0 0 0 0 0 0 0 0 0 +-2.73379037e-05 -0.0001402875562 -0.0001912014403 0 0 -8.511165609e-05 4.024615451e-05 0.00022789923 0 0 -7.542626029e-05 0.0001661018877 -0.0003013758993 0 0 0 0 0 0 0 0 0 0 0 0 +-3.003411905e-05 7.066595137e-05 0.0001146046276 0 0 3.774292539e-05 -0.0001458962685 -0.0001691852891 0 0 4.58551286e-05 -0.0001719148172 -0.000463934683 0 0 0 0 0 0 0 0 0 0 0 0 +2.80413556e-05 -2.006546872e-05 -3.639453879e-05 0 0 -2.394926474e-05 2.18264094e-05 4.724658754e-05 0 0 -4.080435299e-05 3.182169758e-05 7.793033713e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.654557117e-05 -1.4173452e-05 -1.426834861e-05 0 0 -7.195418311e-06 -1.824675872e-06 1.80969414e-05 0 0 1.654614489e-07 -5.882041932e-07 -4.995842603e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.01318244306 -0.09929118317 -0.2368684938 -0.2288028656 0.06259036542 -0.04035794031 0.0699049007 0.1132291955 -0.008216901205 -0.06409263975 0.2490296841 -0.1812253789 -0.3087400524 0.06215640622 0.02122379362 -0.2742607788 -0.1115802555 -0.1779049719 -0.1761435051 0.4131269103 0.07536743157 0.1039076851 0.0212178713 -0.3483892664 -0.3515021368 +0.2472721325 -0.1405300278 -0.2031470417 0.1579326685 -0.05342651638 -0.06877327061 0.09119148856 0.1402055096 -0.02298371966 -0.05287539501 0.008741452497 0.01325052387 0.06824512155 0.1020663335 -0.004393974446 0.1451267709 -0.1534324393 -0.02188661568 0.47196649 0.157231801 -0.08727675432 0.01019469503 -0.001031402507 -0.08988471362 0.06562303064 +0.01616619936 -0.04572725933 -0.06774059805 0.003067547164 0.02503283259 -0.0212062009 0.01657823423 0.01789855523 -0.01894805697 0.007399976927 -0.03617209299 -0.005083001979 0.01046577203 -0.007697985577 0.05027899903 -0.01612287732 -0.06471037578 -0.04473938873 0.03070643328 0.09017395352 0.009149823156 0.02292732472 0.0445801519 0.02206563015 -0.03071547485 +-0.00434394393 -0.00123495078 -0.002610438244 -0.002299791647 0.004681964223 0.008347021594 0.005667900377 0.009108961871 0.009416581921 -0.01255910742 0.004335153371 -0.0004221591798 0.0004270273008 -9.908258875e-05 -0.00228103673 -0.009465293918 -0.008912092168 -0.01480316992 -0.01362989383 0.01936682094 -0.001343873998 -0.004083571175 -0.006937902306 -0.005465089052 0.007767137743 +0.002191781837 0.002384356746 0.004523773655 0.002761187556 -0.005674997782 0.003131893231 0.00325490911 0.005989696388 0.004321475025 -0.007493942908 0.004272033563 0.004877771621 0.008650688364 0.007280008642 -0.01011865318 0.001562747824 0.00257331119 0.004694778758 0.003419334006 -0.005088383836 -0.006560278007 -0.00640617719 -0.01159338648 -0.008908225385 0.01438423289 +0.000135498853 0.0008869909173 0.0009479797924 -0.0005802033824 -0.001217521407 0.000493783765 0.0002883260766 0.0004389840436 0.0002488944452 -0.0008223218344 0.001034355817 0.0002269865687 0.0005329400568 0.0008076288805 -0.001249489857 0.0001351636195 0.001366050067 0.001075742728 -0.001620438575 -0.001983030052 -0.00105236062 -0.000331764842 -0.001144361557 -0.001617446765 0.001134380932 +-0.0008172029759 -0.0006219482192 -0.001106684956 -0.0009093112165 0.001538961184 -0.0001366185347 -0.0001079081852 -0.0002082320624 -0.0001665998015 0.0002918741495 -0.0005843519376 -0.0005106642525 -0.0008984673127 -0.0007724405642 0.001208206973 -0.001074585613 -0.0008935300371 -0.001547261058 -0.001329725461 0.002096114371 0.0009939359113 0.0007268589309 0.001310787733 0.001066213797 -0.001845666246 +0.0004070942152 -6.977281066e-05 -0.0001105627007 0.0002984250709 -0.000150260499 6.560853031e-05 0.000179869052 0.0003151543959 0.000123550818 -0.0003481372488 0.0001157907487 0.0002224346686 0.0004202476557 0.0003506792013 -0.0003817727929 0.0002671883505 -8.709438696e-05 -5.420375392e-05 0.0007016372104 0.0001934613128 -0.0004468129607 -0.0001970132485 -0.0003324551348 -0.0003022461977 0.0006863848742 +7.20693698e-05 0.0001706106249 0.0002615671458 8.935084045e-06 -0.0003357145037 0.0001909786597 7.930555834e-05 0.000141185225 0.0001606907727 -0.0002728024343 0.0004150884132 9.472587716e-05 0.0001667601988 0.0002920893597 -0.0004943615843 7.523600318e-05 0.0001796431872 0.000261578265 -3.415758116e-05 -0.0003713123446 -0.000359774498 -0.0002047487339 -0.0004095310925 -0.0004888521868 0.0005305310238 +-0.0002901906459 -7.466015432e-05 -0.0001515860944 -0.0003151181697 0.0002998797661 -3.308053221e-05 -5.279211923e-05 -9.099507344e-05 -3.844650505e-05 0.0001107123958 -7.905703957e-05 -0.0001183712257 -0.0002206945662 -0.0001810777468 0.0002134890192 -0.0003551031716 -0.0001167623984 -0.0002699887375 -0.0006208023612 0.0003128473137 0.0002723337919 0.0001402544108 0.0002272399145 0.0001227760157 -0.0004767209527 +-4.403903436e-06 -1.114955135e-06 -7.765728576e-06 -2.003948949e-05 -2.426730449e-06 -2.269931943e-05 1.07028702e-05 1.737881927e-05 -9.182858251e-06 2.277719716e-06 -2.307825819e-05 5.830685391e-06 1.57706839e-05 1.655642587e-05 1.957594271e-05 -3.554872508e-05 1.277811816e-05 1.467572225e-05 -3.646040852e-05 1.588958181e-06 2.504347407e-05 1.486988054e-06 -1.08151865e-05 -4.508881137e-05 -4.320062343e-05 +2.016828511e-05 1.716290114e-05 2.999959553e-05 2.104204956e-05 -4.16762035e-05 2.449223202e-05 1.764859165e-05 3.205463981e-05 2.800263103e-05 -4.452261021e-05 6.596439911e-05 1.540768869e-05 2.618097004e-05 4.360712841e-05 -7.939660553e-05 1.894329709e-05 1.972878359e-05 3.445482284e-05 2.171895842e-05 -4.43209871e-05 -3.782165162e-05 -3.44457718e-05 -7.517975353e-05 -9.409272941e-05 6.230178181e-05 +-4.678522133e-05 -3.6144449e-06 -1.178916455e-05 -5.211676513e-05 3.453267234e-05 -1.80248219e-06 -1.107047061e-05 -1.915109517e-05 -5.74280702e-06 1.812715728e-05 8.177541666e-06 -3.037474973e-05 -5.705964061e-05 -2.769906597e-05 3.133574691e-05 -6.00597882e-05 -1.210245789e-05 -3.35218237e-05 -9.342795705e-05 4.62587851e-05 4.522921935e-05 2.401001628e-05 3.339787986e-05 7.937504663e-07 -8.695912354e-05 +0.3400839276 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.06000702538 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.4190450469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.175992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.017093018 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002319661358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004148429865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005603819472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004257278358 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001179708775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001356058129 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.017094979e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.89050065e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2693121704 -0.02805861561 0.1138537095 0 0 -0.02798441668 0.3412956108 -0.1638530593 0 0 -0.2708879011 0.3998611667 0.1246876619 0 0 0 0 0 0 0 0 0 0 0 0 +0.2413520864 -0.003958415171 0.06106092412 0 0 0.0004133820829 0.1744189469 -0.04137482246 0 0 -0.2088285139 0.2618600542 0.2607499211 0 0 0 0 0 0 0 0 0 0 0 0 +0.02332851126 -7.167965545e-05 0.007198670793 0 0 -0.005800526585 0.02314688661 -0.02130084351 0 0 -0.05405469417 0.07404355879 -0.09616046034 0 0 0 0 0 0 0 0 0 0 0 0 +0.01824859017 -0.02588846607 0.04564712325 0 0 -0.02842302145 0.03367160761 -0.06220549974 0 0 0.03319702858 -0.04192238664 0.07904380874 0 0 0 0 0 0 0 0 0 0 0 0 +0.00128743195 -0.001435080517 0.002689809916 0 0 -0.001952227427 0.002319068771 -0.003821243538 0 0 0.003035470659 -0.002838600153 0.005002155635 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003159896917 0.0006199643539 -0.0008477820597 0 0 0.0005494486289 -0.0004827195647 0.0009035568454 0 0 -0.0002266503912 2.401247251e-05 -0.00265172244 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003257491946 -0.0008107585742 0.001255385302 0 0 -0.0006722931302 0.0004359992484 -0.001399252731 0 0 0.0002975737916 -0.0003709118476 -0.0005158780444 0 0 0 0 0 0 0 0 0 0 0 0 +8.657529462e-05 1.596196344e-05 2.449936429e-06 0 0 7.509200411e-06 6.086738119e-05 5.299598419e-06 0 0 -9.019062197e-05 0.0001511716704 0.0002120452217 0 0 0 0 0 0 0 0 0 0 0 0 +1.316564679e-05 -3.976985845e-05 9.444075943e-05 0 0 2.195589459e-05 0.0001844759705 -0.0001205453183 0 0 -4.001415003e-05 -5.765826114e-05 0.000383185577 0 0 0 0 0 0 0 0 0 0 0 0 +-6.96134625e-05 -5.793871138e-05 5.592993027e-05 0 0 -1.48299431e-05 -8.278339967e-05 -3.80177462e-05 0 0 -6.099457562e-05 5.328824441e-05 -0.0006885383127 0 0 0 0 0 0 0 0 0 0 0 0 +-4.100421264e-06 5.199563375e-05 -7.914024133e-05 0 0 1.616201449e-05 -9.802206237e-05 0.0001094665749 0 0 4.514541537e-06 9.534369112e-05 -0.0003433163862 0 0 0 0 0 0 0 0 0 0 0 0 +3.204988529e-05 -3.643856865e-05 6.256593773e-05 0 0 -3.511133655e-05 4.322200181e-05 -8.117011732e-05 0 0 6.070536437e-05 -7.080789939e-05 0.0001234249183 0 0 0 0 0 0 0 0 0 0 0 0 +-2.661534793e-05 -2.1294684e-07 -9.772940223e-06 0 0 5.308625216e-06 -1.990725664e-05 1.395173691e-05 0 0 -2.135233657e-05 3.195349775e-05 -0.0001123573703 0 0 0 0 0 0 0 0 0 0 0 0 +0.005358132882 -0.09373028597 0.225966491 -0.2293493668 -0.06202842166 -0.03872405405 0.06423013782 -0.1045300673 -0.00808276381 0.05865547013 -0.2520939367 0.1811696554 -0.3126458892 -0.05537932393 0.02202234872 -0.271676092 -0.1043392764 0.1721996628 -0.1895516048 -0.3903925901 -0.08377401482 -0.1017405833 0.02178791521 0.3417355927 -0.3574265401 +0.2493545469 -0.1394118313 0.2015713577 0.1557808059 0.05355676523 -0.06708668793 0.08921587777 -0.1379178021 -0.02082047435 0.05342258762 -0.0159835632 -0.008538934133 0.05582704047 -0.09564971128 -0.007875639268 0.1436166376 -0.1519800106 0.02189307496 0.4684145765 -0.1584279409 0.07854269869 -0.007761804173 -0.005760908992 0.08468241224 0.05923241177 +0.02264609701 -0.04635526849 0.0692768103 0.005940668162 -0.01891246823 -0.02333966131 0.01802863311 -0.01978839941 -0.02002310866 -0.007541106022 0.03619744545 0.003877852973 0.01366591584 0.00467899554 0.04821187926 -0.01172478534 -0.06321839175 0.03814135161 0.0400808714 -0.08426917001 -0.006387362471 -0.02185298344 0.0428360981 -0.02018289961 -0.02637456676 +-0.005929310167 -0.002966008135 0.006025259156 -0.004548666933 -0.007936891453 0.006519278715 0.004921609386 -0.007221554356 0.006885519884 0.009507394423 -0.0009805793358 0.0027175312 -0.002863355332 0.003586863784 0.004082279883 -0.01169120161 -0.01130302798 0.01835967221 -0.01624317654 -0.02444271626 -0.002081949418 0.000500911688 -0.0003986485658 0.0005941455623 0.0005471000112 +0.002098892989 0.002315485079 -0.004289149175 0.002489850053 0.005457404271 0.003377215072 0.003704470177 -0.006763037275 0.004629152018 0.008444599238 -0.004344005743 -0.005189995741 0.009233692514 -0.007790916481 -0.0105397936 0.001175820443 0.002320183336 -0.004163022572 0.003167021443 0.004197379266 0.006899672722 0.006746183399 -0.0121508631 0.009309303875 0.01517387827 +0.000338086421 0.001220334531 -0.001487018426 -0.0002910122888 0.001779814659 0.0009608094819 0.0005749290996 -0.0009944910289 0.0008474413388 0.001599347363 -0.001842669848 -0.0007720281494 0.001445282949 -0.00164220753 -0.002702563984 0.0003745383772 0.001784542384 -0.00156745381 -0.001552524389 0.002755300639 0.001939682838 0.001048866164 -0.002494277292 0.002806009596 0.002771612695 +-0.0008444516878 -0.0006919193559 0.001234015676 -0.0009901095039 -0.001644640508 -0.0002735894269 -0.000208632399 0.0004010260018 -0.0003423347792 -0.000552195658 0.000774941964 0.0006665701895 -0.001154238995 0.0009666094694 0.001597006458 -0.001110696509 -0.0009698061511 0.001639312795 -0.00133654874 -0.002234691419 -0.001165548184 -0.0009249276476 0.001679244647 -0.001353204364 -0.002238175622 +0.0003828475465 -0.000155118189 0.0002553098067 0.0002382074016 1.208519043e-05 2.129004023e-05 0.0001719716618 -0.0002944092008 7.302012175e-05 0.0003032705261 -3.008058574e-05 -0.0001773213789 0.0003492730591 -0.0003016423167 -0.0002312910573 0.0001872579495 -0.0002049080577 0.0002143886323 0.0007063987725 -0.0004633920809 0.0003846025253 0.0001184647056 -0.0001806338396 0.0001781080497 0.0005337772532 +6.667229111e-05 0.0002143323632 -0.000342804739 4.222471212e-05 0.0003882869591 0.0002660004738 0.0001105640212 -0.0002014852728 0.0002455953245 0.0003701057114 -0.0005246325487 -0.0001499168299 0.0002551922023 -0.0003653782429 -0.0006676690994 9.434551091e-05 0.0002167569195 -0.0003012732546 -9.93408953e-05 0.0004772804332 0.0004402505399 0.0002910537685 -0.0005731266096 0.0006431473959 0.0006912214218 +-0.0002837150921 -8.230645991e-05 0.0001593547518 -0.0003106948245 -0.0002951865113 -5.949352191e-05 -5.773257681e-05 0.0001008936329 -5.938484973e-05 -0.0001385491813 0.0001202805712 0.000119792704 -0.000219024301 0.0001873681475 0.0002555378639 -0.0003518327209 -0.0001166214316 0.0002511446257 -0.0005836410463 -0.0003039918911 -0.000288876599 -0.0001505886144 0.0002509837901 -0.0001517833839 -0.0004962904765 +5.539575151e-06 -2.718121008e-06 1.283643582e-05 -2.564678925e-05 1.209275251e-05 -2.456171372e-05 1.187773183e-05 -1.875175108e-05 -1.398057974e-05 -6.596765736e-07 2.361090673e-05 -5.35294052e-06 1.611006569e-05 -1.622725529e-05 2.116738403e-05 -3.473169859e-05 1.249538617e-05 -1.524914505e-05 -3.481179527e-05 -1.888381002e-06 -1.239419176e-05 -4.032063748e-06 -4.564839538e-06 3.733236745e-05 -3.170112484e-05 +1.262028568e-05 2.096816614e-05 -3.572824205e-05 1.548499298e-05 4.194988763e-05 3.12514568e-05 1.725420941e-05 -3.188817148e-05 3.431549685e-05 4.838348935e-05 -7.438933599e-05 -1.461435319e-05 2.31390327e-05 -4.284318605e-05 -8.611138282e-05 1.222385508e-05 2.032106048e-05 -3.212157532e-05 5.751577203e-06 4.415749406e-05 3.909054629e-05 3.786683086e-05 -8.005617327e-05 9.584258049e-05 6.785978563e-05 +-4.67741731e-05 -4.58947519e-06 1.294587353e-05 -5.243233964e-05 -3.443509833e-05 -5.77452475e-06 -1.168665576e-05 2.049112289e-05 -9.274701785e-06 -2.189387692e-05 -1.214096187e-06 2.979992994e-05 -5.532295147e-05 2.847182635e-05 3.747171153e-05 -6.029466648e-05 -1.18366426e-05 3.14427765e-05 -9.057206063e-05 -4.485445364e-05 -4.758212357e-05 -2.573166481e-05 3.744496249e-05 -5.201275343e-06 -9.005451907e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_4_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_4_ref.dat new file mode 100644 index 0000000000..04442d3c27 --- /dev/null +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_4_ref.dat @@ -0,0 +1,195 @@ +0.002419051442 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001547817692 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002542469474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002825595591 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.766243555e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-8.926264558e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.969373453e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-4.735884524e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.785753741e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.089425543e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.466537059e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.311584146e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.783103986e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005052510717 0.008663047548 0.7588023562 0 0 -0.00101896707 0.001423332401 0.05242985365 0 0 -0.04338269894 0.05345874198 0.004337714893 0 0 0 0 0 0 0 0 0 0 0 0 +0.00401408807 -0.004738371842 0.4269541829 0 0 -0.001056727825 0.00142848699 0.1232123394 0 0 -0.1135407432 0.1229932309 0.005034278188 0 0 0 0 0 0 0 0 0 0 0 0 +0.00224800956 -0.003719278925 0.06772168603 0 0 0.0005124652347 -0.0005559973654 0.07980396481 0 0 -0.07808094059 0.07888069593 -0.0009993605411 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001144705515 -0.000545090187 -0.01958488306 0 0 0.0007449397064 -0.0008067250658 0.02206794431 0 0 -0.02239665884 0.02169936974 -0.002235240482 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004220109116 0.000232035854 -0.0091786434 0 0 0.0003760497846 -0.0004141491896 0.001897899843 0 0 -0.001528214495 0.001886670189 -0.0012402087 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001707966373 0.0001716100059 -0.002211730979 0 0 9.620784517e-05 -0.0001143398803 -0.002464900415 0 0 0.002332989581 -0.002450491483 -0.0003719308726 0 0 0 0 0 0 0 0 0 0 0 0 +-5.307966742e-05 0.0001026549836 0.002118494796 0 0 -2.410844541e-05 2.782289e-05 -0.002209546551 0 0 0.001888185573 -0.002210905568 7.329095076e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.597805893e-05 -3.406715756e-05 0.0004832723747 0 0 -5.127959508e-05 6.197905556e-05 -0.0003441822769 0 0 0.0002751454903 -0.0003395579208 0.0001930925738 0 0 0 0 0 0 0 0 0 0 0 0 +3.209863863e-05 -3.059465604e-05 0.0003694813837 0 0 -2.324148167e-05 2.913526547e-05 0.0003218886986 0 0 -0.0002620332992 0.0003182747037 9.504781866e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.933151311e-06 -6.195552406e-06 -0.0002541664663 0 0 4.041965826e-06 -4.718605664e-06 0.0001946145237 0 0 -0.0001756847333 0.0001889325117 -1.271712741e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-7.331166315e-06 6.896141371e-06 1.58579626e-05 0 0 8.059275584e-06 -9.802232503e-06 4.599223097e-05 0 0 -3.446559078e-05 4.58900171e-05 -3.07056223e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.999039803e-06 1.610879779e-06 -3.645368623e-05 0 0 1.715470827e-06 -1.959823508e-06 -1.239119992e-05 0 0 9.923868946e-06 -1.203961157e-05 -6.564654195e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.973220667e-06 2.549389139e-06 5.85533856e-05 0 0 1.63207658e-07 -2.126757319e-07 -2.474443702e-05 0 0 2.03269607e-05 -2.520685101e-05 -5.851845997e-07 0 0 0 0 0 0 0 0 0 0 0 0 +0.001874696279 0.001227869074 0.05192015001 0.001931563259 -0.07091728581 -0.00166494802 -0.001296534908 -0.0526019936 -0.002050124788 0.07184975123 -0.05639289677 -0.05415836904 -0.003580080791 -0.08078363381 0.005245952418 0.0002459657282 0.0001889476952 0.005069635045 0.000292070495 -0.00692505605 -0.005384029328 -0.004786488253 -0.0005126093996 -0.007115667959 0.0007287617481 +0.0007710269128 0.0003423494069 0.05961850516 0.0005742315307 -0.08228708118 -0.0002330091968 -3.276461084e-05 -0.04670146377 -0.0001047017134 0.06445762615 -0.05112349387 -0.04685600519 -5.149933552e-05 -0.07023516262 0.0004892879629 0.0004417516284 0.0002986591453 0.0148636638 0.0004619605179 -0.02051708504 -0.01760271151 -0.01377119861 -0.0008583924445 -0.02048411068 0.001291448302 +-0.0006157173329 -0.0004529128985 0.02651443001 -0.0007015033266 -0.03749172885 0.0005253894489 0.0004670562325 -0.01341780523 0.000718445685 0.01897066931 -0.01295466397 -0.01306544694 0.001384984186 -0.01994276688 -0.001787434165 1.50291865e-06 -2.069530214e-05 0.01148921085 -4.201449404e-05 -0.01624784634 -0.01548581881 -0.01051379648 3.527545278e-05 -0.01572814929 7.251257887e-05 +-0.0004887412809 -0.0002714010018 0.003284557631 -0.0004315509604 -0.005021894281 0.0001121727342 7.811444484e-05 -2.538681915e-05 0.0001240774064 3.578852602e-05 0.001590574227 7.700276047e-05 0.0002487901521 1.037649163e-05 -0.0003811706557 -0.0002158002398 -0.0001462520878 0.002487184871 -0.0002379528119 -0.00380502198 -0.004448751253 -0.002227161183 0.0004013920631 -0.003431530211 -0.0005179964511 +-7.615377801e-05 -1.906825683e-05 -9.014401074e-06 -3.409144783e-05 -5.4235162e-05 -3.881180886e-05 -2.579501033e-05 -2.055167998e-05 -4.197230979e-05 -5.57906828e-05 0.0003739666896 -5.29248774e-06 -7.942444076e-05 2.324321706e-05 0.0001003826995 -6.08078949e-05 -3.071648587e-05 -2.053559562e-05 -5.32305357e-05 -7.616800381e-05 -0.0002905771784 1.332730447e-05 8.284412348e-05 -2.6633085e-05 -0.0001226846823 +2.104889508e-05 1.671441085e-05 0.0002668299391 2.590878581e-05 -0.0003381382223 3.652891502e-06 5.395322066e-06 -0.0002702327443 5.419659271e-06 0.0003422286931 -0.0002604822225 -0.0002621497559 1.516388432e-05 -0.0003719867701 -1.601082817e-05 1.664126919e-05 1.423526888e-05 2.705621067e-05 2.038313121e-05 -3.443531753e-05 -1.244552037e-05 -2.409959277e-05 -4.597293265e-05 -3.499982808e-05 5.834771401e-05 +-1.001108466e-05 -7.928493272e-06 5.839357101e-05 -1.130661821e-05 -7.440075794e-05 3.711488539e-06 1.020714804e-06 7.848740043e-06 1.269690133e-06 -9.963757454e-06 2.990001663e-05 5.690774031e-06 6.14026698e-06 6.801637265e-06 -7.571302718e-06 -5.287313428e-06 -5.220221033e-06 4.816578872e-05 -7.547437544e-06 -6.134820644e-05 -8.525214436e-05 -3.40737891e-05 1.042726089e-05 -4.552478852e-05 -1.389730659e-05 +-6.187298589e-06 -2.808468516e-06 4.103630931e-06 -4.006012256e-06 -5.475657393e-06 -1.786032574e-06 -1.527541881e-06 1.973444784e-06 -2.253800475e-06 -2.623536563e-06 1.79301201e-05 1.397406527e-06 -4.022038193e-06 1.253043549e-06 5.469112938e-06 -4.958283673e-06 -2.995403755e-06 4.231566788e-06 -4.351641769e-06 -5.635535785e-06 -2.792716913e-05 -1.731470588e-06 7.238346881e-06 -1.321842853e-06 -9.80527349e-06 +3.076740974e-06 2.964334476e-06 1.821548468e-05 4.434595172e-06 -2.49070073e-05 8.35591677e-08 4.502964805e-07 -2.978226239e-05 6.339782819e-07 4.0677724e-05 -2.563022065e-05 -2.993693359e-05 1.823216281e-06 -4.474275907e-05 -2.260332274e-06 2.14291394e-06 2.355014367e-06 -5.369805256e-06 3.506505269e-06 7.315697153e-06 5.0965703e-06 4.822968683e-06 -7.082358814e-06 7.1781258e-06 9.631870306e-06 +-4.649717692e-07 -4.579627915e-07 1.643069611e-06 -6.992371774e-07 -2.440247282e-06 -3.721338525e-08 -2.00357401e-07 8.458086049e-07 -3.039689035e-07 -1.274731947e-06 2.061171549e-06 9.675687527e-08 -1.486720592e-07 1.171457475e-07 1.169671863e-07 -4.180166788e-07 -4.616383497e-07 1.722286843e-06 -6.998667477e-07 -2.569281003e-06 -2.994068674e-06 -6.961339412e-07 9.115312607e-07 -1.047782578e-06 -1.148341242e-06 +-7.389783065e-07 -5.154030083e-07 5.165435002e-06 -7.783024106e-07 -7.358332585e-06 -7.497119017e-10 -1.483163906e-08 8.994503317e-07 -2.377286824e-08 -1.282566634e-06 1.644770089e-06 9.390913973e-07 -5.321811491e-08 1.397290735e-06 5.159422095e-08 -5.279912847e-07 -3.787609897e-07 4.307652554e-06 -5.729637811e-07 -6.137231866e-06 -6.467247837e-06 -3.775214096e-06 9.801654392e-07 -5.629989775e-06 -1.330496453e-06 +3.78164229e-07 4.123243536e-07 1.985868156e-06 6.169219817e-07 -2.621407913e-06 -1.242046275e-07 -4.855899419e-08 -4.130286701e-06 -9.43037042e-08 5.443984572e-06 -3.052798456e-06 -4.221075025e-06 -7.679848914e-08 -6.212834338e-06 1.420525864e-07 1.956521816e-07 2.613326233e-07 -1.134062126e-06 3.773446553e-07 1.491998292e-06 9.806274391e-07 1.022855859e-06 -7.832161299e-07 1.491860231e-06 1.021449345e-06 +-5.36794e-08 -2.994552146e-08 -7.08350793e-08 -4.394685027e-08 9.927153515e-08 -1.997281029e-07 -1.833336918e-07 -1.081837407e-06 -2.751567948e-07 1.51808496e-06 -1.162536342e-06 -1.307536814e-06 -4.808703035e-07 -1.972591102e-06 6.695211412e-07 -1.471146578e-07 -1.336245849e-07 -7.255134376e-07 -2.006382195e-07 1.018015654e-06 7.662756812e-07 7.454085483e-07 3.359363872e-07 1.123710903e-06 -4.681251873e-07 +0.003536966149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002273580888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0008131458837 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001686640845 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001835652373 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000133167567 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.873456108e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.561057385e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.523360235e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.758900487e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.898093057e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.271730455e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.216413811e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000481204981 0.000603125747 0.1444112608 0 0 -0.003483287054 0.001355185701 0.1157912954 0 0 -0.1745534981 0.1209474159 0.00608058228 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002328108663 -0.000238433732 -0.2071830094 0 0 0.0006779455777 -0.00083573506 0.09133639166 0 0 -0.1110228433 0.09316655712 -0.0002783377368 0 0 0 0 0 0 0 0 0 0 0 0 +0.00177724811 0.0007740191399 -0.019437459 0 0 -0.0003519547831 -0.0004428740853 0.004493585407 0 0 0.001970500226 0.00470722754 -0.0009502451551 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001966338633 2.879180167e-05 -0.0006429560519 0 0 -1.349786105e-05 -1.386829601e-05 0.0003016091223 0 0 -0.01704860363 -3.367511952e-05 -0.0001000266039 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005200372883 -5.444268353e-06 0.002257961842 0 0 9.658534885e-05 4.976292937e-06 -0.0005890864809 0 0 -0.0004741729293 -0.0006624221972 2.63535478e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001179242129 5.07406206e-05 0.0009411098355 0 0 2.329668993e-05 -1.702824228e-05 -0.0003337953039 0 0 -4.416022678e-06 -0.0003777224007 -5.386307022e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.421172848e-05 3.882562511e-06 -6.904098884e-05 0 0 2.710264705e-05 -5.97182435e-07 2.807600531e-05 0 0 -0.0003243215812 2.597577302e-05 -5.395079379e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.211327281e-06 -8.480416829e-06 -0.0001544343276 0 0 4.242265279e-07 2.460314047e-06 9.257586125e-05 0 0 8.539909137e-05 0.0001004135592 1.094721968e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.038967203e-06 -4.694842456e-06 0.0002908729673 0 0 -4.217290594e-06 3.419998572e-06 -7.069042779e-05 0 0 0.0001059312106 -7.525975083e-05 1.0324297e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.074726962e-05 7.425940539e-06 0.0001027460351 0 0 4.886981838e-06 -1.876087304e-06 -2.913617371e-05 0 0 7.479456427e-05 -3.209744408e-05 -5.913919687e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.455492956e-06 4.806057505e-06 6.378855076e-06 0 0 1.689004473e-07 -1.499058737e-06 8.340545663e-06 0 0 -2.889850287e-06 8.953584171e-06 -4.568109161e-06 0 0 0 0 0 0 0 0 0 0 0 0 +3.161802278e-07 -8.254227689e-07 1.027197357e-05 0 0 -1.001670526e-06 7.263264071e-07 7.890044041e-06 0 0 -1.5163498e-05 8.182399328e-06 2.098279039e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-4.164247106e-07 3.328158046e-07 5.268062645e-05 0 0 -9.556198689e-08 2.594219878e-07 -9.722154278e-06 0 0 1.236231457e-05 -1.057493917e-05 9.09081572e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001045899573 0.004466121496 0.4103204435 0.0008142948225 -0.07805211727 -6.782487268e-05 0.0008642498168 -0.03519365007 0.0002361088768 0.006695116755 0.02660744167 -0.03637616506 0.001044717014 -0.009074598566 -0.0001448339221 -0.001063648705 0.00104401058 0.06727703312 0.0002156224961 -0.01280001245 0.05072596011 -0.0569626022 -0.003993658342 -0.01425921445 0.0008675124547 +0.0003479130614 -0.0009693984341 -0.03303845813 -6.406915924e-05 0.003985414375 -0.0004782517278 0.0003082934488 0.1202242643 -0.0002913305599 -0.01451231089 -0.1239510467 0.1211698513 0.002239903461 0.02055542356 6.376170338e-05 2.271432624e-05 -3.631951904e-05 0.08128166121 -0.0002395004782 -0.009812204297 0.06002058475 -0.06717366641 -0.001633032611 -0.01130561638 1.088470315e-05 +-6.949422001e-05 0.0007805533491 -0.03734915761 0.0002502883671 -0.0007121310954 0.0001346171285 -0.0009507095728 0.02915170235 -0.0001905312493 0.0005549725283 -0.009293610217 0.02992292815 -0.002089387244 0.0003450489597 0.0002681325293 6.479377224e-05 -0.0003254170345 0.0132388883 -8.717496523e-05 0.0002525594163 0.003332431179 -0.01110201737 0.0005952525619 -0.0001087826779 -9.73528887e-05 +0.0006784763914 8.957649956e-05 -0.0004733624664 -4.058067509e-05 -0.0003256429451 -0.000246474041 -0.0001054175401 -0.0009155723359 6.892147413e-05 -0.000624181112 -0.007932065465 -0.001241176648 -0.0002936556105 0.0006480791646 -0.000169769794 -7.790383352e-05 -2.381641689e-05 -0.0008136077768 2.083252403e-05 -0.0005548175309 0.003959696521 0.0008560354972 0.0001130320774 -0.0004689507472 6.356313194e-05 +-0.0002659661238 4.997973352e-05 0.002830688522 2.519486746e-05 -0.0003610227069 0.0001763747765 -5.199556657e-05 -0.002161161668 -2.170140654e-05 0.000275787183 -0.006223064182 -0.002575784031 -0.0001505720109 -0.0004551222166 4.539675155e-05 9.127928666e-05 -8.565307452e-06 -0.0009345786737 -6.648421011e-06 0.0001191713665 0.001862524815 0.0009068929226 3.944998473e-05 0.0001637620356 -1.393725954e-05 +-0.0001541974479 1.328726073e-05 9.798650436e-05 -2.003576332e-06 1.895398809e-05 6.022935385e-05 -1.183421939e-05 -0.0001327516163 6.318859244e-07 -2.61180713e-05 0.001137192001 -0.0001136353611 -4.592922176e-05 2.012068888e-05 -4.927959858e-06 2.481731401e-05 -6.131690939e-06 -7.308554589e-05 1.739169935e-07 -1.442096032e-05 -0.0004247749894 5.466431841e-05 1.858711524e-05 -8.752309237e-06 1.840107869e-06 +-1.604869467e-05 -7.162586728e-09 5.544559316e-05 2.041071937e-06 4.633630254e-05 8.855808165e-06 -7.896160195e-07 -6.032173516e-05 -2.117633305e-06 -5.04347734e-05 -0.0003518564493 -7.866800151e-05 -5.949308603e-06 4.997896135e-05 5.922151548e-06 4.659922023e-06 -5.302619366e-07 -3.115614826e-05 -1.016587619e-06 -2.603948668e-05 0.0001358228083 3.335408246e-05 2.773671668e-06 -2.078535931e-05 -1.985480423e-06 +-2.689054367e-06 -1.31194369e-05 0.0001614671722 -3.30292252e-06 -3.120492111e-05 8.239912821e-06 1.160280246e-05 1.40749722e-05 2.777139775e-06 -2.731185207e-06 2.452404398e-05 1.466770369e-05 4.376604845e-05 3.390618486e-06 -8.490869124e-06 3.463924055e-06 6.448363857e-06 4.762376473e-05 1.526578872e-06 -9.211692968e-06 -2.721994045e-05 -4.168576074e-05 -1.912434016e-05 -1.001261897e-05 3.721794996e-06 +-1.482092307e-06 5.518925673e-06 0.0001737404591 2.121693585e-06 -4.706661548e-05 -1.82942642e-07 -1.818066523e-06 -0.000120456213 -7.815413103e-07 3.262371763e-05 0.000355769728 -0.0001230158191 -5.313386453e-06 -4.480827957e-05 2.717031284e-06 -1.321169791e-06 -7.551401084e-07 -4.602476368e-05 -3.085758666e-07 1.246118156e-05 -0.0001068483648 3.837157403e-05 1.595565888e-06 1.393173277e-05 -8.23886792e-07 +-2.419455232e-06 4.178222295e-06 3.383153659e-05 1.466153694e-06 -9.72447233e-06 4.13761088e-07 -3.172746777e-06 -2.082460809e-05 -1.095601036e-06 5.986134603e-06 -1.063322437e-05 -2.437134585e-05 -9.394285329e-06 -8.31695614e-06 2.710283905e-06 1.574966798e-07 -1.135682819e-06 -7.012074989e-06 -3.920322708e-07 2.015967205e-06 2.666224166e-06 6.646470153e-06 3.060636688e-06 2.269251555e-06 -8.834277335e-07 +-1.702527434e-06 1.676340685e-06 4.078358839e-06 4.361018343e-07 -8.263755183e-07 3.951328801e-07 -1.038222091e-06 2.13278418e-05 -2.933224959e-07 -4.308360375e-06 -9.948384181e-06 2.198605184e-05 -3.472246369e-06 5.681744806e-06 6.873035603e-07 1.266240786e-07 -3.640876892e-07 1.593696498e-05 -1.130144861e-07 -3.219517143e-06 5.894412462e-06 -1.349489258e-05 7.973306458e-07 -3.484032987e-06 -1.553410019e-07 +1.882919988e-06 -3.904595366e-07 3.796198806e-05 -1.620701354e-07 -1.03469351e-05 -1.390706725e-06 1.220855576e-06 -1.120826715e-05 4.216007006e-07 3.052472518e-06 1.205751324e-05 -1.188335918e-05 3.777265248e-06 -4.053105685e-06 -9.977672128e-07 -8.1534687e-07 5.973103189e-07 6.407015633e-07 2.056361073e-07 -1.769986438e-07 1.472010936e-06 -4.832011049e-07 -1.712145523e-06 -1.749144565e-07 4.704982551e-07 +-9.418199454e-07 1.241520587e-06 4.642157664e-05 4.168200877e-07 -1.156588076e-05 5.358762091e-07 -4.74601263e-07 -2.528843757e-05 -1.64212741e-07 6.300671416e-06 1.135962103e-05 -2.741313966e-05 -1.336990408e-06 -8.538896622e-06 4.429254348e-07 1.029102185e-07 -3.888335022e-08 -7.318805745e-06 -1.685892682e-08 1.823005124e-06 -2.774822897e-06 6.416819429e-06 1.367706517e-07 1.99818995e-06 -6.105479438e-08 +0.000198065551 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001370002338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +8.606230395e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.468335244e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +4.055733866e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.631573872e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.164016052e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-6.933974741e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.943969015e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.114051548e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.202683674e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.335378513e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.052351789e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001468345295 0.00562349307 0.3728102419 0 0 -0.0005674573353 0.0007579292837 0.0004832404648 0 0 -0.002404025904 0.0004797892477 0.0005187310687 0 0 0 0 0 0 0 0 0 0 0 0 +0.0005272167596 -0.001216932505 0.007431690429 0 0 -0.0003246620221 0.0001442253701 -0.0004447918803 0 0 -0.001494085161 0.0006876039332 0.000208409047 0 0 0 0 0 0 0 0 0 0 0 0 +-8.307587455e-05 -0.0002744130674 -0.00150377652 0 0 1.393408467e-05 1.365647941e-05 2.378039455e-05 0 0 -5.361167207e-05 -0.0002557543337 -7.221547039e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.118161519e-05 -0.0001439005305 0.0004146109407 0 0 -1.828960053e-06 4.066577149e-05 -1.200817078e-05 0 0 -0.0001130569671 -0.0001512113234 6.300946938e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.809936028e-06 1.130911031e-05 0.0005477423876 0 0 -1.262122905e-06 1.13969214e-06 3.371423829e-07 0 0 -3.027641644e-06 8.88648186e-07 5.368034272e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.175202601e-05 8.303564537e-06 0.0001861693456 0 0 1.870452092e-06 -8.167151369e-08 3.444254391e-06 0 0 3.904903542e-08 -2.127945199e-05 -1.868162783e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.090189398e-06 1.28289057e-05 3.706765108e-05 0 0 5.721606941e-07 -4.604494853e-07 1.437373406e-06 0 0 4.679843878e-06 3.609615982e-06 -7.582604184e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-4.742918111e-07 6.052107315e-07 2.594674357e-05 0 0 -2.67649172e-07 -2.104837977e-07 1.161257241e-06 0 0 4.407843833e-07 1.659427232e-06 9.387606352e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-4.726656918e-07 1.619582595e-06 8.966183906e-05 0 0 -1.483861471e-07 1.83659016e-07 2.422833683e-06 0 0 2.929231708e-08 1.304389936e-07 2.820162367e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-5.323580773e-07 6.502597374e-06 6.339360167e-05 0 0 1.974377138e-07 7.712710338e-08 4.835790466e-07 0 0 9.939857957e-07 5.045690275e-07 -9.730009537e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-5.332489408e-07 4.72059874e-06 3.47148937e-05 0 0 6.245556562e-08 -3.256180506e-07 1.599586354e-07 0 0 6.849366401e-07 1.436439327e-08 -1.542411788e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-4.948709369e-07 2.125891312e-06 2.81718847e-05 0 0 2.821249764e-08 -4.664105634e-08 6.685243673e-07 0 0 4.732862727e-07 1.361895971e-07 -4.615726131e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-2.955725119e-07 1.854696515e-06 2.898083165e-05 0 0 1.830264775e-08 5.417019376e-08 7.991044005e-07 0 0 4.719567842e-07 4.712471936e-07 4.551671665e-09 0 0 0 0 0 0 0 0 0 0 0 0 +0.001283781581 0.0007364598888 3.627472531e-05 -0.0009686315327 0.0002299720768 -0.004470666337 -0.001680365982 0.08098608813 0.002626683846 0.5524607689 -0.1706354975 -0.04189575578 0.000792594112 0.1675538728 0.007662645522 -0.0003762596836 -0.0002442393285 -4.782405329e-05 0.0002647800242 -0.0003210148805 -0.002711924354 -0.004640493062 0.0001217369372 -9.925268366e-05 0.0008667308904 +0.0001993173841 -2.673723682e-05 0.0001845566276 -0.0002708672268 0.0007990875164 0.002475837006 0.0005595914883 0.0149590617 -0.002609786131 0.06443168443 -0.0187130231 -0.007550824484 -0.0003668275817 0.01896201361 -0.001936221704 -0.0002362059782 -0.0002189954773 -9.242820976e-05 0.0001560919069 -0.0004014614033 -0.002364194525 -0.003978682395 0.0001391374076 0.0003883345456 0.0005801449837 +-2.817016889e-05 -4.945195618e-05 -3.535701839e-05 1.890440418e-05 -7.51449367e-05 -3.038474609e-05 3.551891103e-05 -0.003016666985 -9.880680222e-06 -0.006366056657 0.0001676069932 0.003261289112 -6.573207185e-05 0.001096020531 -9.03251277e-05 5.627625115e-06 -2.637478665e-06 -1.863842829e-06 -9.632981943e-06 -3.935732161e-06 -9.293775246e-05 -3.425831939e-05 1.152188705e-05 0.0001263946943 2.322640547e-05 +2.410158447e-05 -2.577723501e-05 -5.613242128e-07 -4.432675058e-05 8.430094621e-06 0.0001665274642 -0.0001170109399 -9.97478337e-05 -0.000255176453 0.001368454076 -0.001029480737 0.0006838254009 1.014206786e-06 0.00150146645 -5.673458035e-05 -1.653362498e-05 6.935139288e-06 1.069681497e-06 2.067748271e-05 -1.521210353e-05 4.65097915e-05 -0.0002780117602 -8.256995858e-07 -0.0002952266492 9.661631907e-06 +2.826880618e-06 -1.590320829e-06 5.713423651e-07 -2.407243991e-06 -2.161959882e-06 -3.299205072e-05 -5.239336567e-06 -0.0001694615777 2.033350054e-05 0.0006172860891 -0.0001129512054 -0.0001104926259 -4.000480278e-06 -8.26117588e-05 3.005428538e-05 -8.61376821e-07 1.88565875e-06 3.760524041e-07 2.659883526e-06 -1.406048701e-06 4.191025789e-06 -3.085478227e-06 2.624961109e-07 -5.301538646e-06 -1.085547319e-06 +2.482720588e-07 -1.262435971e-06 -1.115098238e-06 -1.136707962e-06 -4.761618326e-06 -1.167177403e-05 -2.475761967e-05 3.88461353e-05 -2.612348066e-06 0.0001702735211 -2.131724884e-05 -5.40098086e-05 5.27542148e-06 -4.738283827e-06 2.631948877e-05 1.177493439e-06 1.734119626e-06 -1.668351518e-07 -6.262974454e-07 -8.27361787e-07 1.250493133e-05 1.132345896e-05 -9.544077001e-07 -1.157748894e-05 -4.778098561e-06 +1.926080653e-07 -5.574260171e-07 -1.025056679e-07 -6.38351277e-07 -8.085876198e-07 -3.717046798e-06 2.95409103e-06 8.077336711e-07 6.313186455e-06 6.443050169e-06 -1.100277051e-05 1.172715507e-05 1.016983771e-07 2.103815346e-05 9.132415668e-07 1.189277619e-07 -1.653807106e-07 1.049979498e-08 -2.573971184e-07 8.029566732e-08 -2.946785546e-07 1.28913166e-06 -1.970886364e-08 1.317016215e-06 -1.581876111e-07 +2.107526784e-07 6.609702969e-08 -4.989355241e-08 -1.456141621e-07 -2.602357658e-06 1.311350088e-06 6.797241959e-08 1.439412309e-06 -1.168601633e-06 7.567047134e-05 -1.844000841e-05 -1.665388847e-05 1.562436285e-08 3.386728832e-06 -7.113436182e-07 -2.21641094e-07 -1.06234926e-07 1.864509752e-08 1.247993023e-07 9.778519433e-07 -1.497071761e-06 -8.463714345e-07 1.129899103e-08 7.191149809e-07 5.296211319e-07 +5.439865856e-07 4.848796352e-07 -3.973623289e-07 -2.478934635e-07 -3.470067762e-06 -2.376316979e-06 -8.191156304e-07 1.943852844e-05 1.495384632e-06 0.0001691907485 -3.999568472e-05 -3.020412929e-05 2.807489923e-07 2.196578301e-05 3.618949256e-06 -5.570280956e-08 2.557780316e-08 8.138267481e-08 7.065583218e-08 7.113015111e-07 -1.924061963e-07 2.714916686e-09 4.695067116e-08 1.947479921e-07 4.18143266e-07 +1.104954021e-07 1.087368579e-07 -7.550110056e-08 -3.478378157e-08 -9.192564703e-07 -5.408424543e-06 2.646355148e-07 6.357652467e-06 5.574387159e-06 7.724149502e-05 -3.004998355e-05 5.291434366e-06 2.460799876e-07 3.632200851e-05 4.478601174e-06 1.111199515e-07 4.08537228e-08 -3.600264643e-08 -8.77061373e-08 -4.413013813e-07 7.605980579e-07 5.506125908e-07 -2.425979566e-08 -4.064820989e-07 -3.383925387e-07 +8.50976524e-09 4.925951978e-09 -5.743709273e-08 -3.035445649e-09 -6.417556465e-07 -2.38350068e-06 -5.882139457e-07 3.641752632e-06 1.919076251e-06 4.081571492e-05 -1.11542168e-05 -4.81893712e-06 1.459449527e-07 8.203334473e-06 2.268401505e-06 6.696963238e-08 6.553923801e-09 -1.748570528e-08 -6.445653178e-08 -1.999247514e-07 3.569319631e-07 2.548701172e-07 -1.728822561e-08 -1.905645928e-07 -2.095583855e-07 +7.80326587e-08 3.477404585e-08 -1.144604239e-07 -5.71882908e-08 -1.028211588e-06 -1.117494683e-06 -3.320235432e-07 5.007774638e-06 8.612619374e-07 4.492695983e-05 -1.262930551e-05 -5.646056048e-06 1.005350673e-07 9.665646218e-06 1.230539598e-06 -7.619691483e-09 -1.376253344e-09 1.311045031e-08 7.143984436e-09 1.177119131e-07 -6.632074428e-08 -2.336370969e-09 1.025994535e-09 6.987643256e-08 1.132190422e-08 +1.180887323e-07 5.664222223e-08 -8.501016897e-08 -8.234397871e-08 -9.196622879e-07 -1.177266443e-06 -1.639256539e-07 4.050048157e-06 1.018127118e-06 4.370410053e-05 -1.414081157e-05 -2.332457808e-06 8.005776049e-08 1.345347563e-05 1.237523698e-06 -9.25015734e-09 1.448251383e-08 8.426880555e-09 2.01736519e-08 9.123511818e-08 -5.891327805e-08 2.727672037e-08 4.621980326e-09 8.28245605e-08 5.166940486e-08 +0.08763646859 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.07626949339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1556689795 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.06750767143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.00453131945 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0008164868635 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002107786133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002005934367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.852594221e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0005622374251 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +8.072044732e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.440837878e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.551541406e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08767912548 0.3181588051 0.9217088788 0 0 -0.1503275599 0.08340800972 0.03349455881 0 0 -0.2771063112 0.02945905442 0.1244135003 0 0 0 0 0 0 0 0 0 0 0 0 +0.1416937373 0.1127941451 0.2284583213 0 0 -0.1266594302 0.05224610476 0.001018900908 0 0 -0.2321307697 0.003785298524 0.06045796178 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04934021094 0.08928786242 0.1578452096 0 0 -0.01216441009 0.008632628493 0.005388032368 0 0 -0.02142587084 0.004726172006 0.01410180685 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00868237712 0.01003317135 0.01862858559 0 0 -0.01020381119 0.01328053516 0.02645851674 0 0 -0.01853614432 0.02593761407 0.04609801807 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000876546098 0.0008912221388 0.002045579846 0 0 8.794495184e-05 -0.0001456183135 -0.000111790309 0 0 0.0001791337769 -0.0001626013276 -0.00027759882 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004690393653 0.0006516722391 0.001256020332 0 0 0.0001121900433 -1.340605352e-05 -0.0005793351928 0 0 0.00021331071 -0.0006254750698 -0.0008207027218 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005213651025 0.0005599760537 0.0009928110403 0 0 -0.0002797862247 0.0004553974137 0.001040387511 0 0 -0.0004976070153 0.001114883681 0.00174536297 0 0 0 0 0 0 0 0 0 0 0 0 +3.087466989e-05 8.308745577e-05 0.0001633005833 0 0 2.361732921e-05 -8.063040011e-05 -0.000139999688 0 0 3.981496035e-05 -0.00015164474 -0.0002450166626 0 0 0 0 0 0 0 0 0 0 0 0 +1.817885093e-05 -1.930161397e-05 5.667957332e-05 0 0 -6.265911454e-06 2.715501691e-05 -3.337630612e-05 0 0 -8.05914288e-06 -3.208110617e-05 -1.844119822e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001666527438 0.0001159488436 0.0002441251009 0 0 1.360330502e-05 3.831589476e-05 0.0001249508457 0 0 2.733928848e-05 0.0001402878572 0.0001912026922 0 0 0 0 0 0 0 0 0 0 0 0 +-2.280304547e-06 4.764732515e-05 9.030453344e-05 0 0 1.656083403e-05 -4.128840612e-05 -6.334785256e-05 0 0 3.003305719e-05 -7.066617072e-05 -0.0001146054831 0 0 0 0 0 0 0 0 0 0 0 0 +2.919884371e-05 -3.188011901e-06 1.239309539e-05 0 0 -1.576076097e-05 1.332009998e-05 1.930176343e-05 0 0 -2.804118709e-05 2.006548159e-05 3.639466045e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.404918649e-05 2.600683577e-05 6.705493265e-05 0 0 8.763602286e-06 -8.431400245e-07 1.225422017e-05 0 0 1.654607049e-05 1.41735016e-05 1.426867079e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.3142426879 0.3017943545 0.5529976733 0.06440517536 -0.09149705227 -0.3107235943 -0.08950295826 0.05472428023 0.3632242345 0.5923138869 -0.6979454251 0.1114989375 -0.01313003562 -0.9284636885 0.2990734705 -0.02889410095 0.03178664308 0.08188347723 0.07591396595 0.007926156696 0.04035794009 -0.06990490059 -0.1132291953 0.008216901125 0.0640926398 +-0.08941502204 0.09201147648 0.1674378708 0.01291292296 -0.02183346657 -0.1314743816 0.03784275288 0.1453234019 0.08774716433 0.1207131023 -0.2782513918 0.1636906148 0.2251882478 -0.1986172263 0.04828843465 -0.04248955312 0.03412933336 0.1050566118 0.08124257717 0.02079471281 0.06877327374 -0.09119149066 -0.1402055132 0.02298372061 0.05287539453 +0.005332849544 0.0135477414 0.02387358494 0.01099728544 -0.01908317126 -0.03800832655 0.001658754884 0.009427702353 -0.02012378041 0.04453996278 -0.06832058851 0.006908944744 0.01233903709 -0.04648078443 0.07436971896 -0.01272590211 -0.001124153712 0.01711741617 0.01090057174 0.01907698999 0.02120620499 -0.01657823761 -0.01789856052 0.01894805898 -0.007399978524 +0.01436538584 0.01230902549 0.02206093465 0.01830813562 -0.02895224683 -0.008718168809 -0.009509619999 -0.01776710427 -0.01318090653 0.02244864741 -0.01725140782 -0.01860184154 -0.0328162111 -0.02688126963 0.04139657395 0.004880099154 0.002628213506 0.006104329657 0.003598769637 -0.008628420775 -0.0083470233 -0.005667899749 -0.009108960412 -0.009416581754 0.0125591064 +0.002633676204 0.002727208715 0.004926464468 0.00394286282 -0.006185127941 -0.0003569039332 3.960518703e-05 8.19732541e-05 -1.947017297e-05 0.0002124594054 -0.0005947389552 0.0001534087696 0.0004090370852 -0.0002081313215 -5.755200028e-05 0.001853510921 0.002114601323 0.003645761833 0.003429572284 -0.004140529438 -0.003131892787 -0.003254909062 -0.005989696378 -0.004321474812 0.007493942807 +-7.905538265e-05 0.0003492666478 0.0006180070944 0.0001177833689 -0.000190532395 3.051155937e-05 -4.55746009e-05 0.0002197434612 0.0004776146226 0.0001893960649 0.0001714329637 0.0001791044116 0.0001994034415 -0.0001191648069 -0.0003445865888 0.0002889395068 9.836928504e-05 0.0002988071896 0.0004048434411 -0.0003368823647 -0.000493782473 -0.0002883267811 -0.0004389851118 -0.0002488937122 0.0008223209748 +0.0002542185773 0.0001921593805 0.0003396427931 0.0002739293836 -0.0004720053182 -0.0004902059834 -0.0004050450443 -0.0007332297713 -0.0005940480695 0.001003167475 -0.0008629672598 -0.0007270969094 -0.001298115926 -0.001072317314 0.00176357853 -7.283062636e-05 -7.964721681e-05 -0.0001246911733 -0.0001302299765 0.0001552867451 0.0001366182832 0.0001079083543 0.000208232469 0.000166600092 -0.0002918745221 +0.0001307874403 0.0001461095393 0.0002630611052 0.0001920173884 -0.0003204682571 -0.0001500876837 3.265144368e-05 6.926445622e-05 -1.342873177e-05 8.253480734e-05 -0.0002912008455 8.654106369e-05 0.0001518569249 -0.0001496560037 6.418323084e-05 3.821296853e-05 9.954003716e-05 0.0001984146421 0.0002085134706 -0.000134822404 -6.56063204e-05 -0.0001798700143 -0.0003151561271 -0.0001235500899 0.0003481371407 +-5.879546026e-05 0.0001381638923 0.0002517368118 7.40251996e-05 -0.0001190081302 5.269778027e-05 -1.571101414e-05 2.31702687e-05 0.0001941027625 3.429253422e-05 7.360465843e-05 3.971441678e-05 1.841551375e-05 -0.0001044816063 -0.000182031991 0.0001189539766 4.760845602e-05 8.523984238e-05 0.000100621519 -0.0001670482706 -0.0001909796603 -7.930508636e-05 -0.0001411844494 -0.000160691254 0.0002728026342 +-1.388419949e-06 2.226940672e-05 4.0541783e-05 1.736543353e-05 -2.935141161e-05 -8.281548333e-05 -7.266985186e-05 -0.0001177851781 -2.925752112e-05 0.0001998928463 -0.0001437444522 -0.0001188002467 -0.0002225969933 -0.0002202460114 0.0002637426801 -1.580044379e-05 -2.892424845e-05 -5.937961254e-05 -7.311000563e-05 3.665517149e-05 3.308015664e-05 5.279225328e-05 9.099530499e-05 3.844634317e-05 -0.000110712305 +-1.366541267e-05 5.424029611e-06 1.019351263e-05 4.616402836e-07 5.038533446e-06 -3.781234427e-05 8.122230689e-06 2.517986061e-05 2.702057753e-05 3.630249943e-05 -6.642400459e-05 2.800241459e-05 4.399595742e-05 -3.858599971e-05 9.576972105e-06 -1.57354756e-05 3.974811595e-06 1.205835799e-05 1.487240787e-05 1.509172695e-05 2.27000707e-05 -1.070319703e-05 -1.737937627e-05 9.183148555e-06 -2.277870848e-06 +-1.185277327e-05 2.682926809e-05 4.903148091e-05 1.551491888e-05 -2.521332973e-05 -9.453271429e-06 -1.616766824e-06 1.107771384e-05 4.341919965e-05 2.808164397e-05 -2.327291967e-05 1.489083561e-05 1.40910646e-05 -4.700289544e-05 -1.652062908e-05 1.525784728e-05 1.131419939e-05 1.96584003e-05 1.452491599e-05 -2.929815577e-05 -2.449269194e-05 -1.764836873e-05 -3.205426159e-05 -2.800281141e-05 4.452267313e-05 +-2.25558084e-05 1.477438478e-05 2.739227547e-05 1.091279716e-06 -5.476374786e-07 -1.640314315e-05 -1.744197306e-05 -2.188361809e-05 1.938028927e-05 5.360624497e-05 -3.449874841e-05 -1.956964839e-05 -4.437233369e-05 -7.284698167e-05 3.992534936e-05 -6.243237816e-07 -6.00965396e-06 -1.250729109e-05 -1.204363118e-05 5.993246336e-06 1.802433337e-06 1.107049203e-05 1.915113282e-05 5.742790811e-06 -1.812714832e-05 +-0.08502103398 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.07526041193 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.148887169 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.07435281324 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.006225909746 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-9.52492815e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001572937016 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002223261846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001879720526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005286275149 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001057845725 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-1.141948338e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.496022502e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.08969068343 -0.3061187727 0.9347644301 0 0 0.1453657488 -0.0797863295 0.02991697017 0 0 -0.2693121707 0.0280586156 -0.1138537095 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1543691497 -0.1101415689 0.2183099722 0 0 0.1308109249 -0.05423433444 0.002564841263 0 0 -0.2413520859 0.003958414802 -0.06106092458 0 0 0 0 0 0 0 0 0 0 0 0 +0.04645186651 -0.09221600497 0.1623147845 0 0 0.01311027744 -0.007391107294 0.0004186258529 0 0 -0.02332851011 7.167944973e-05 -0.007198670889 0 0 0 0 0 0 0 0 0 0 0 0 +0.0124644463 -0.01421082182 0.02598959085 0 0 0.01004167553 -0.01322788068 0.02612373212 0 0 -0.01824859283 0.02588846789 -0.04564712657 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001608326922 -0.0001137078733 0.0007319903398 0 0 0.000726755168 -0.0008519241631 0.001480245264 0 0 -0.001287431856 0.001435080702 -0.002689810011 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003875226002 -0.0004747058859 0.00100651209 0 0 -0.0001663803538 3.653531157e-05 -0.000620225674 0 0 0.0003159898896 -0.0006199638676 0.0008477811419 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006637530294 -0.0007746909185 0.001383203564 0 0 0.0001822489367 -0.0002951395212 0.0007704513052 0 0 -0.0003257498544 0.0008107586854 -0.001255385366 0 0 0 0 0 0 0 0 0 0 0 0 +-8.817418248e-05 -3.388932064e-05 8.607476769e-05 0 0 4.673452641e-05 -7.837285584e-06 -6.897211778e-06 0 0 -8.657502616e-05 -1.596197451e-05 -2.450045938e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.186674555e-06 5.710873204e-05 4.283469797e-06 0 0 9.30333152e-06 -5.515497207e-05 3.518629728e-05 0 0 -1.316559302e-05 3.976988615e-05 -9.44407585e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001813189482 -0.0001553304562 0.0003210047513 0 0 -3.738237283e-05 7.644252746e-06 5.010944273e-05 0 0 6.961326706e-05 5.793865824e-05 -5.592968743e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.073084676e-05 -2.926425151e-05 6.971318013e-05 0 0 -2.096318334e-06 2.520552955e-05 -4.617905613e-05 0 0 4.100597868e-06 -5.19956052e-05 7.914007389e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.534759452e-05 8.642699991e-06 9.584257545e-06 0 0 1.797142284e-05 -2.029083147e-05 3.501136751e-05 0 0 -3.204993493e-05 3.643856169e-05 -6.256592705e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.912213071e-05 -3.045412858e-05 7.982799736e-05 0 0 -1.434862875e-05 8.710173338e-06 -7.424724101e-07 0 0 2.661526248e-05 2.129380287e-07 9.772996832e-06 0 0 0 0 0 0 0 0 0 0 0 0 +0.3199513639 -0.2939192588 0.5385232708 -0.05248331706 -0.08515369619 0.2958874839 0.0896348522 0.05069380557 -0.3720942868 0.5778921667 -0.6910315954 0.110640797 0.01198793882 -0.9321672696 -0.272579726 0.0290649669 -0.03013533713 0.07593911392 -0.06722892299 0.007497212586 0.0387240541 -0.06423013785 0.1045300674 0.008082763829 -0.05865547014 +0.09800040545 -0.09556601688 0.173541502 -0.01035300843 -0.01988322593 0.1339546808 -0.03494722736 0.14599164 -0.09867385146 0.1278910416 -0.2781565638 0.163079478 -0.2243418042 -0.1953424677 -0.0450794138 0.04432810777 -0.03480008214 0.1038165062 -0.07684699353 0.01975662584 0.06708668754 -0.08921587763 0.1379178019 0.02082047421 -0.05342258784 +-0.002107371115 -0.01304776504 0.02297872683 -0.008561791211 -0.01492864728 0.03918742688 -0.004517393002 0.01647319549 0.01620525505 0.04244238657 -0.07012680259 0.01366323585 -0.02395906069 -0.04293828071 -0.06802969186 0.01438672132 0.000701351453 0.01909605644 -0.01212348989 0.02032788472 0.0233396606 -0.01802863249 0.01978839847 0.02002310831 0.007541105804 +-0.0138359123 -0.0120797457 0.02165712812 -0.01761056625 -0.02811554998 0.009719820726 0.00998959547 -0.01885121929 0.01471932471 0.02440505551 -0.01873642194 -0.0197637259 0.03465444635 -0.02862653227 -0.04510655643 -0.003917464694 -0.001671271505 0.005222003163 -0.002832801372 -0.006429835503 -0.006519278776 -0.004921609719 0.00722155507 -0.006885520386 -0.009507395334 +-0.003111527334 -0.003353114423 0.006045005454 -0.004684552165 -0.007443971804 0.0007864379117 0.0002671867375 -0.0004660607828 0.0005177883249 0.0009617756596 -0.001354146926 -0.000311584722 0.0004570865638 -0.001132372711 -0.001121156796 -0.002027453078 -0.002365122704 0.004131484818 -0.003985502467 -0.00453553722 -0.003377215292 -0.003704470294 0.006763037476 -0.004629152235 -0.008444599526 +-0.0002683669767 -0.0005466090082 0.0009740502719 -0.0004665247642 -0.0007745825266 -0.0001853941699 -6.904356067e-06 0.0003222396862 -0.000622484426 -3.664077465e-05 0.000391601661 0.0003057829051 -0.0003878812263 8.480184693e-05 0.000731987128 -0.0005976297393 -0.0003138446766 0.000617134423 -0.0006349392277 -0.000920004343 -0.0009608096796 -0.0005749289737 0.0009944908572 -0.0008474414927 -0.001599347467 +-0.0001030229228 -8.274677809e-05 0.0001447537116 -0.0001005770781 -0.0001745817678 0.0004542498494 0.0003782513737 -0.0006908329396 0.0005689990623 0.0009337013447 -0.0008065808538 -0.0006868835473 0.001222971621 -0.001007773389 -0.001661855607 0.0001617381919 0.0001535298523 -0.0002343520814 0.0002021038122 0.0003403694669 0.0002735894037 0.0002086323583 -0.0004010259047 0.0003423346648 0.0005521954921 +-0.000111196387 -0.0001694512763 0.0003051308546 -0.0002007921792 -0.000336926479 0.0002069984471 -1.050994409e-05 3.376207969e-05 5.028910814e-05 0.0001686632248 -0.0003932231721 5.817187932e-05 -9.61116377e-05 -0.0002435809511 -0.0001917340715 -8.576004014e-06 -8.922654294e-05 0.0001904321848 -0.0002180940859 -8.236330177e-05 -2.129042733e-05 -0.0001719714933 0.0002944088998 -7.302024765e-05 -0.0003032705627 +-4.368364743e-06 -0.0001730225127 0.0003137616877 -0.0001349576538 -0.0002214607526 -6.84481754e-05 2.799403276e-05 -9.311807396e-08 -0.0001991219467 4.076794855e-05 8.975401974e-05 1.477990989e-05 2.783007753e-05 -0.0001253430422 0.0001706846815 -0.0001667400326 -7.190833729e-05 0.0001191551138 -0.0001140643789 -0.0002507703463 -0.0002660003202 -0.000110564084 0.0002014853766 -0.0002455952473 -0.0003701056707 +1.815016248e-05 -2.961544413e-06 5.896287341e-06 6.083936649e-06 1.061977888e-05 7.687380673e-05 5.845626837e-05 -9.621795525e-05 2.79712516e-05 0.0001705707798 -0.0001442460162 -9.746113131e-05 0.0001814587542 -0.0002011514006 -0.0002317094556 3.345949504e-05 3.324660657e-05 -6.389612164e-05 7.366710863e-05 6.146547077e-05 5.949357986e-05 5.773256015e-05 -0.0001008936029 5.938487288e-05 0.0001385491989 +1.212648123e-05 -6.036502177e-06 1.110046222e-05 1.018809837e-07 2.061011969e-06 3.985904596e-05 -9.106553485e-06 2.713801602e-05 -2.412771077e-05 3.570314068e-05 -7.562727735e-05 3.178704225e-05 -4.95079596e-05 -4.801273488e-05 -9.478337866e-06 1.660302225e-05 -4.023943085e-06 1.333242827e-05 -1.684736059e-05 1.667873869e-05 2.456158202e-05 -1.187767411e-05 1.875165306e-05 1.398052538e-05 6.596529863e-07 +8.886561314e-06 -3.090336459e-05 5.626758817e-05 -2.006514764e-05 -3.399518703e-05 5.714082258e-06 6.128899675e-06 2.221080451e-06 -4.190346343e-05 3.13665464e-05 -2.062499302e-05 6.205921612e-06 1.832326262e-06 -5.563113286e-05 9.571557112e-06 -1.938380134e-05 -1.179310811e-05 1.9132048e-05 -1.232674966e-05 -3.511351647e-05 -3.125137935e-05 -1.725424513e-05 3.188823137e-05 -3.431546142e-05 -4.838348012e-05 +2.467427041e-05 -1.158335272e-05 2.160978197e-05 2.86745412e-06 4.778270214e-06 1.529767431e-05 1.524115515e-05 -1.900864246e-05 -1.946632475e-05 4.904533918e-05 -3.576173333e-05 -1.629816512e-05 3.796409443e-05 -7.214631232e-05 -3.450893653e-05 3.203696631e-06 6.695271437e-06 -1.320625888e-05 1.206179142e-05 9.70643219e-06 5.774534039e-06 1.16866528e-05 -2.049111829e-05 9.27470851e-06 2.189387872e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_5_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_5_ref.dat new file mode 100644 index 0000000000..00db6ab803 --- /dev/null +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmepsl_5_ref.dat @@ -0,0 +1,195 @@ +0.09498708342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.2992279518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1323957173 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01268705136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000495997179 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.003788249367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002571467723 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003352835639 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001833626012 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001535669143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-5.735977286e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.166038808e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9.825924407e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.5047985483 -0.009688807462 0.00431511616 0 0 0.002530805341 0.04459709524 0.0009358725137 0 0 -0.0002682387442 0.0009575446972 0.04387743989 0 0 0 0 0 0 0 0 0 0 0 0 +-0.06412815863 0.01120640948 -0.003779619964 0 0 0.005122862898 0.1017837343 0.0008133000431 0 0 0.0007487706307 0.0007946624794 0.1083909149 0 0 0 0 0 0 0 0 0 0 0 0 +0.2276962955 0.007291004514 -0.001586295537 0 0 0.002969987142 0.06300813704 -0.0005291616595 0 0 0.001716468603 -0.0005759415855 0.07283510966 0 0 0 0 0 0 0 0 0 0 0 0 +0.1514202083 0.001202678308 0.0004430903786 0 0 0.0009361928603 0.01625339243 -0.0006055138676 0 0 0.001107964963 -0.0006315072568 0.02110615798 0 0 0 0 0 0 0 0 0 0 0 0 +0.04982574182 -5.655940098e-05 0.0003939020291 0 0 0.000236137593 0.0008436370603 -0.0002769684214 0 0 0.000414322743 -0.0002834350618 0.002286691723 0 0 0 0 0 0 0 0 0 0 0 0 +0.005931620341 -0.0002092090531 0.000161456051 0 0 3.210063073e-05 -0.001984390715 -7.4681017e-05 0 0 7.28037e-05 -7.489883312e-05 -0.001910436057 0 0 0 0 0 0 0 0 0 0 0 0 +-0.007065344004 -0.0001721606612 6.352811728e-05 0 0 9.482202563e-06 -0.001463181886 2.074646975e-05 0 0 -4.262729033e-05 2.143721103e-05 -0.001832167274 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004672372522 4.205898915e-05 -4.849040348e-05 0 0 -1.853090241e-06 -5.653604558e-05 4.405256855e-05 0 0 -5.270736957e-05 4.468123307e-05 -0.0003014616846 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002202064487 2.574908346e-05 -3.389724242e-05 0 0 -2.438856353e-05 0.0002610149414 2.028512792e-05 0 0 -2.194426786e-05 2.037461374e-05 0.0002250134769 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002992967284 7.127250695e-07 -3.892978089e-06 0 0 -1.345352497e-05 0.0001031231151 -3.788286252e-06 0 0 4.241545863e-06 -4.004482756e-06 0.0001505440734 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004576347859 -8.568883739e-06 6.87954933e-06 0 0 -3.903419819e-06 -5.481108106e-06 -7.06844844e-06 0 0 7.664629173e-06 -7.213684807e-06 3.393635898e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002002569459 -5.902871879e-07 2.433685651e-06 0 0 2.230106825e-06 -1.102931125e-05 -1.41921773e-06 0 0 1.751006375e-06 -1.422173624e-06 -7.950004666e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-5.020416137e-07 -1.53417827e-06 1.795894985e-06 0 0 2.238785676e-06 -1.480399081e-05 -8.869718959e-08 0 0 1.577806457e-07 -8.984929998e-08 -1.949219408e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.06952091842 -0.001991625979 0.0001780222924 0.0008570312122 -0.0005784446564 0.002606149904 -0.03963612783 -0.000843687637 -0.06075912666 0.001262623828 -0.00131388009 -0.0008477769232 -0.03968027784 -0.001342466072 0.05419849624 -0.0002740369693 0.003383891048 0.0001291880338 0.005190767276 -0.0001863297262 -0.0001484131187 -0.0001227368901 -0.003160013497 -0.0001898444999 0.004316541903 +-0.04935649232 -0.0004344033724 -6.797780569e-05 0.002500648482 -0.000279284113 0.00106701882 -0.03253047854 4.417603511e-05 -0.05020986936 1.234690013e-05 -7.057066946e-05 4.43737318e-05 -0.03662089938 2.123697384e-05 0.05054368653 -0.0001245682108 0.008792300394 0.0001970355037 0.01356343279 -0.0002921680655 -0.0002525963886 -0.0001886810601 -0.009141321856 -0.0002926409913 0.01261817172 +0.01490335647 0.002091221593 -0.000345222286 0.002509719023 0.0003825114342 0.0009902440222 -0.009051161481 0.000363283246 -0.01429760158 -0.0004999620904 0.0006664464718 0.0003741729714 -0.01182415221 0.0005613424815 0.01671826243 0.0006012228803 0.005873030814 -3.103670233e-05 0.009201228443 3.640743945e-05 2.543269894e-05 2.616338663e-05 -0.007029076866 4.55531256e-05 0.009940209559 +0.02429860101 0.001724448469 -0.0002777305761 0.001083692896 0.0003884926463 0.001005412794 -0.0001586887463 7.653292334e-05 -0.0003497261206 -0.0001131328373 0.0002753799862 8.782669418e-05 -0.0005033699185 0.0001295538271 0.0007681561998 0.000503120519 0.0009094498577 -0.0001057556859 0.001533985795 0.0001528777471 0.0001478740453 9.898384881e-05 -0.001544599943 0.0001606449026 0.002362765418 +0.008102070027 0.0004451749862 -5.277208473e-05 0.0001165110757 7.111388049e-05 0.0003559204487 -2.422797005e-05 -1.199680175e-05 -3.785031585e-05 1.667269151e-05 2.699292514e-05 -8.546442035e-06 -8.688405266e-06 -1.6924753e-05 -2.237977323e-05 8.156276382e-05 -4.960791965e-05 -1.944972095e-05 -4.58648473e-05 3.157865602e-05 4.145664819e-05 1.882266469e-05 1.269896318e-05 3.332082893e-05 4.947213171e-05 +-0.0005954975863 -4.22386302e-05 1.022437438e-05 -5.532397279e-05 -2.378500949e-05 -3.697557966e-05 -0.0001124901837 4.478783094e-06 -0.0001618486638 -4.907122411e-06 1.060622449e-06 4.411737986e-06 -0.0001629304833 4.927705158e-06 0.0002062727606 -2.67570868e-05 5.839602887e-05 1.189740484e-05 8.512692013e-05 -1.559111117e-05 -1.106967311e-05 -1.067661511e-05 -1.356323746e-05 -1.526602307e-05 1.73004907e-05 +-0.0001641728064 1.344638747e-06 -3.634532088e-06 9.808834964e-06 3.123801477e-06 -4.354934139e-07 3.009494046e-07 8.374297648e-07 -2.008940162e-07 -1.080412765e-06 2.259380367e-06 6.997930191e-07 5.974457634e-06 8.842778315e-07 -7.589174646e-06 1.657791675e-05 6.509352387e-06 -3.447548287e-06 7.515241613e-06 4.494885474e-06 3.494349741e-06 3.404688949e-06 -3.110980812e-05 4.920076486e-06 3.962478846e-05 +0.0002789487692 1.594573614e-05 -3.138669758e-06 1.034578669e-05 6.117110758e-06 1.489135196e-05 -1.499465107e-06 -9.567801322e-07 -2.920463938e-06 1.366779517e-06 5.399865776e-07 -8.801727586e-07 1.245545398e-06 -1.377950812e-06 -1.644174925e-06 7.0412174e-06 -2.550300912e-06 -1.987058704e-06 -4.086565654e-06 2.676931475e-06 3.390191339e-06 1.964952243e-06 -2.813192788e-06 2.848843685e-06 3.747263854e-06 +-7.085445534e-05 -7.093736725e-06 1.492367757e-06 -5.743128543e-06 -1.395687173e-06 -4.287436951e-06 -1.385776846e-05 4.37887884e-07 -2.089228235e-05 -5.317615963e-07 -1.913546753e-07 4.061513747e-07 -2.014153533e-05 6.053132798e-07 2.751228739e-05 -4.291221748e-06 4.517606017e-06 1.890223713e-06 7.045737233e-06 -2.56623716e-06 -1.451109653e-06 -1.675391219e-06 3.73135391e-06 -2.497122715e-06 -5.083633873e-06 +-2.600142382e-05 -2.130920395e-06 2.899857099e-07 -1.396782325e-06 -4.39595176e-07 4.159898294e-07 -1.41741276e-06 -1.181559835e-07 -2.022973765e-06 1.586968631e-07 -1.780967571e-07 -1.774774848e-07 6.911844641e-07 -2.605644881e-07 -1.039757846e-06 1.567044364e-06 -1.221785224e-06 -3.007774828e-07 -1.785482615e-06 4.065505304e-07 2.782924937e-07 3.082982545e-07 -1.145719177e-06 4.675018562e-07 1.708933381e-06 +1.877503786e-07 6.046547173e-07 -2.867158625e-07 9.538633078e-07 3.913113793e-07 5.769733017e-07 2.430459366e-07 -7.027491515e-09 3.526030922e-07 7.191088109e-09 3.662667466e-08 -1.218880177e-08 6.64619604e-07 -2.183485289e-08 -9.475450774e-07 1.130290342e-06 1.463932836e-06 -2.733194597e-07 2.270574443e-06 3.755013604e-07 3.675323899e-07 2.61589685e-07 -2.869663788e-06 3.95522809e-07 4.088338028e-06 +-1.30723308e-06 -4.516352006e-07 1.377762411e-07 -7.411371142e-07 -1.703859134e-07 -6.617935359e-08 -2.354520002e-06 -2.593395013e-08 -3.51861926e-06 5.112431097e-08 -8.814622761e-08 -2.463288752e-08 -2.949721078e-06 -5.289890798e-08 3.887866411e-06 -5.280262056e-07 3.350102943e-07 2.122254605e-07 5.177159243e-07 -2.801300112e-07 -1.322049523e-07 -1.878139803e-07 7.754283188e-07 -2.716979134e-07 -1.020112568e-06 +7.045539441e-06 1.315097607e-07 3.96752419e-08 -2.062287205e-07 -4.362035916e-08 7.550544272e-07 -1.457008833e-06 -1.275758861e-07 -2.284532592e-06 1.77239635e-07 -1.11148869e-07 -1.344180056e-07 -8.403345961e-07 -2.038078856e-07 1.179293504e-06 2.205042857e-07 -7.866467337e-07 -9.082907053e-08 -1.223570216e-06 1.261686568e-07 9.826883411e-08 8.809277014e-08 4.844196339e-07 1.322047948e-07 -6.797241472e-07 +0.449053964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05306475625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.4385635745 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.338691151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.06901034397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0147573474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0008024573476 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005092955457 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002824858296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001483463571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004139445793 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0005634485673 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-4.208557178e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.2189064507 -0.01683165124 -0.003083891102 0 0 0.02107933538 0.5302593088 0.005667240618 0 0 -0.00598345769 0.005761811795 0.5112502021 0 0 0 0 0 0 0 0 0 0 0 0 +0.2920316697 -0.02493752733 0.001163494429 0 0 -0.02503461561 0.4532405216 -0.002399223172 0 0 0.00833182092 -0.002376216485 0.4840125524 0 0 0 0 0 0 0 0 0 0 0 0 +-0.2451368496 -0.01433324489 0.00116348527 0 0 0.0008201184081 0.06374820581 -0.001187111548 0 0 -0.001068020906 -0.001294887127 0.07119122542 0 0 0 0 0 0 0 0 0 0 0 0 +0.0664333232 0.0009543803388 0.0002881646014 0 0 0.004800778394 -0.0002426593152 7.743475088e-05 0 0 -1.465235097e-05 5.255508108e-05 -0.000768499645 0 0 0 0 0 0 0 0 0 0 0 0 +0.0653773739 0.001031600528 0.0003464159618 0 0 0.001402232106 0.001757646673 9.629257776e-05 0 0 0.0003049442167 9.294182782e-05 0.001038695011 0 0 0 0 0 0 0 0 0 0 0 0 +0.01775712824 0.0005628997092 -1.838084203e-05 0 0 0.0001739354041 -0.001116659608 -4.53782755e-05 0 0 0.0001173615695 -4.229773827e-05 -0.0008901339564 0 0 0 0 0 0 0 0 0 0 0 0 +-0.009214599716 -0.0002756439234 5.111551131e-06 0 0 -0.0003582515909 -0.0001520890495 -7.192051433e-06 0 0 4.780165368e-05 -6.183791067e-06 -8.230137067e-05 0 0 0 0 0 0 0 0 0 0 0 0 +8.878018777e-05 1.575152716e-05 -2.094209641e-05 0 0 8.022532078e-06 0.0006476058877 8.433305208e-06 0 0 -3.825001581e-06 8.783105925e-06 0.0006346151362 0 0 0 0 0 0 0 0 0 0 0 0 +0.003543009994 0.0002147465379 -2.871519902e-05 0 0 0.0001309539593 -0.0003050644589 5.174927615e-06 0 0 5.583143163e-06 6.481203712e-06 -0.000376263258 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001830626191 -0.0001130206312 2.72364511e-05 0 0 -6.355407605e-05 -0.0001470912845 -6.13840608e-06 0 0 9.612642421e-06 -6.627255038e-06 -0.000111724516 0 0 0 0 0 0 0 0 0 0 0 0 +-3.123247517e-05 -4.410777218e-05 1.097574966e-05 0 0 -2.903701807e-06 4.123909092e-05 -3.250478061e-06 0 0 -9.476131758e-07 -3.673257437e-06 6.958570314e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002626174449 9.153080283e-06 -2.495521531e-06 0 0 8.619518409e-06 -1.836294834e-05 1.152431995e-06 0 0 -4.055659053e-07 1.291737815e-06 -1.991936235e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003143662901 -5.998311248e-06 1.870812388e-06 0 0 -9.484450883e-07 -2.31190843e-05 6.58520036e-07 0 0 -1.039652765e-06 6.556629382e-07 -3.10398275e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.7098619192 -0.03569224131 0.003641916124 -0.003953782006 -0.002874844194 0.007455168479 -0.3597806574 -0.0008872731579 -0.08802149072 -7.623096766e-05 0.0004343631692 -0.0007800591674 -0.3502957748 4.992048102e-05 0.06663471396 -0.004915421312 0.1748906925 0.002051573869 0.04279654894 -0.0002757953415 0.002203466931 -0.001658524895 -0.1393714147 -0.0003233146559 0.0265169037 +0.150706375 -0.01430721917 -0.001957251387 -0.003409180946 0.0002710004323 -0.01311296957 0.3550692374 0.0003926122529 0.05647429284 0.0009420228034 0.002986133952 0.0003258450084 0.3839384335 -0.001081997057 -0.04634680959 -0.01445556552 0.1897175172 -0.001592052848 0.03025581374 0.0007199573106 -0.0001939452675 0.001186117678 -0.1662196917 0.0006679632835 0.02006892389 +-0.02765955289 -0.01911750469 0.002669156426 -0.001678442301 -0.000586158982 -0.009046573624 0.1418527607 -0.00289704928 -0.0001748373104 0.000854642119 0.0005664790294 -0.003095648598 0.1652142451 -0.00108671439 0.003158809899 -0.002185103381 0.02897519279 -0.001538687426 -6.628896415e-07 0.000165304339 -0.000198845911 0.001262574975 -0.02691782343 0.0001773040044 -0.0005093803887 +-0.1099136569 -0.004401969037 -0.0005947695259 0.0008913052036 9.419058822e-05 0.001046911244 0.01032364855 -0.00022046981 -0.006196508542 -6.702291057e-05 -0.00165469069 -0.0003035016989 0.01057352519 6.846013225e-05 0.007219333775 0.0003600341653 -0.001645223609 -0.0001046888932 0.0009914976516 -8.782021813e-05 0.0001827091049 0.0001069819075 0.001639296079 -7.723389994e-05 0.001118238299 +0.01206597103 -0.0002519629221 0.0001719972636 -0.0002781705894 -7.252409355e-05 0.0006166834421 0.005229442306 0.0001373708231 0.001103608448 -3.812902811e-05 0.0002474519917 0.0001248701587 0.003924787124 3.873046066e-05 -0.0005019146361 -0.0006200694309 -0.001692899496 -3.595082098e-05 -0.0003505796275 1.25413883e-05 -0.0001952132875 3.826212794e-05 0.002006801724 1.84720546e-05 -0.0002559761621 +0.02677134934 0.001220060824 7.337050458e-05 0.0001856850064 5.38932393e-05 0.0007735115985 -0.002090992007 -7.056073532e-05 0.0001138775075 3.789732338e-06 0.0003472129734 -5.950666484e-05 -0.001545896623 -5.500279624e-06 -0.0003071101127 -0.0001064559604 -0.0003501171071 -1.73739469e-05 1.613485825e-05 -1.120774537e-06 -5.039526985e-05 1.149387719e-05 0.0001412931676 -3.907205308e-07 2.78623701e-05 +0.001963919389 0.0001560070167 -2.014948243e-05 4.657741407e-05 1.568816606e-05 -1.336390372e-05 -0.0001303283585 -3.161982848e-06 7.43632854e-05 5.637002658e-06 3.924736577e-05 -3.143158512e-07 -0.0001484880816 -5.602870021e-06 -0.0001241829588 -4.39042148e-05 -7.345579223e-05 -1.557478309e-06 3.931651321e-05 2.547531831e-06 -1.031020672e-05 8.849760299e-07 6.70420253e-05 2.345312084e-06 5.605604859e-05 +-0.002423802381 -7.668559816e-05 -4.55505338e-05 6.906305037e-08 7.67412861e-06 -0.0001550523195 0.001065903519 3.374899182e-05 0.0002624967798 -5.863935119e-06 1.57349141e-06 3.631886255e-05 0.0009129601249 8.329873451e-06 -0.0001765340006 -3.075861078e-05 0.0002239677466 1.40483337e-05 5.512909545e-05 -2.54439653e-06 -8.050822013e-06 -1.182089554e-05 -8.395065109e-05 -2.788258884e-06 1.624132924e-05 +-0.0002802896713 4.90604382e-05 -2.00758063e-06 2.070418716e-05 6.333946067e-07 8.825553676e-05 -0.0007560071538 -1.878559924e-05 -0.0002576869194 6.198033659e-06 4.990387469e-06 -1.782834518e-05 -0.0007088545509 -7.077927821e-06 0.0001920066759 3.682601584e-05 -0.0001119753757 -5.169120894e-07 -3.836640111e-05 3.793231106e-07 3.482793874e-06 2.300707763e-07 9.38950558e-05 1.77542321e-07 -2.541807536e-05 +0.0005345046722 -5.418228495e-05 2.507273374e-05 -2.633726766e-05 -7.008571369e-06 1.802402562e-05 -5.050968532e-05 -5.928526358e-06 -1.798798647e-05 1.649372804e-06 2.096397112e-06 -7.364873479e-06 -7.256395184e-06 -2.576298092e-06 2.094320569e-06 -1.536976841e-06 -3.432388529e-05 -3.148797154e-06 -1.20172651e-05 8.705415637e-07 -2.920135423e-07 2.795084664e-06 1.585795902e-05 9.653266635e-07 -4.558858536e-06 +0.0003223764452 -1.015019873e-05 6.493839904e-06 -5.373483318e-06 -7.514950961e-07 3.74199726e-06 1.662064648e-05 -3.114448006e-06 4.198617693e-06 6.423211451e-07 3.143565696e-06 -3.366498759e-06 5.507524866e-05 -9.501228584e-07 -1.112191885e-05 -3.55336369e-06 2.755512939e-05 -1.24271007e-06 7.040717551e-06 2.714380481e-07 -2.695741427e-07 9.917909699e-07 -3.504552311e-05 2.97063779e-07 7.079952084e-06 +-0.0003308646133 -4.948524364e-06 -1.745977997e-06 2.038512054e-06 -2.089438313e-07 3.681953509e-06 -9.147809726e-05 1.881438385e-06 -3.024800771e-05 -5.293938142e-07 -4.34419049e-06 1.949826868e-06 -0.0001046935479 7.25390786e-07 2.85365513e-05 4.419282191e-06 9.580911541e-06 1.880149627e-06 3.117663319e-06 -4.94568841e-07 1.80383279e-06 -1.552501944e-06 -2.602899232e-06 -5.308365397e-07 7.147659896e-07 +-4.91397066e-05 -5.800837942e-06 3.085952055e-06 -1.802100343e-06 -1.171030202e-06 -1.149901379e-07 -5.815433328e-05 -1.137245773e-06 -1.813214841e-05 3.044323611e-07 9.607726468e-07 -1.17773288e-06 -6.078601847e-05 -4.063025685e-07 1.514223121e-05 9.693721492e-07 -1.425835205e-05 -5.791695849e-08 -4.445050808e-06 2.819876494e-08 -2.267428213e-07 1.007761158e-07 1.634249463e-05 4.200549198e-08 -4.070644844e-06 +0.05956230226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0005095535334 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.07472306571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02247372436 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001238511777 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007415402519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000751915669 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003273877606 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001578449558 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001397509976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.486287617e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-2.88724499e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-9.253008335e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1047170838 -0.1658151432 0.0003015753564 0 0 0.2756444093 0.1017465599 -2.738615473e-05 0 0 0.0002901213427 0.0003830978247 0.02417342326 0 0 0 0 0 0 0 0 0 0 0 0 +0.126607244 -0.08397097599 0.0009904946056 0 0 0.1849046305 0.03611144713 0.0009976411675 0 0 0.0002601676889 -0.0004277851928 0.0177530475 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01610217935 -0.06513512447 2.963580246e-05 0 0 0.008294351493 0.01214081143 -2.672628834e-05 0 0 2.140108434e-05 9.491141302e-05 0.001037054512 0 0 0 0 0 0 0 0 0 0 0 0 +0.004392795064 0.003043669679 2.079375063e-05 0 0 0.01261650177 0.0274148044 -4.490048475e-05 0 0 1.557702131e-05 4.623057483e-05 -0.0003627246242 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001535436936 -0.002156137856 4.666814261e-06 0 0 -0.001303378097 -0.002509133247 -1.47951348e-07 0 0 1.569325892e-07 -3.434025938e-07 -9.268888965e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002223946582 0.0006241699786 1.137158567e-05 0 0 9.751665216e-05 0.001005916025 -3.236395598e-06 0 0 5.991244927e-07 1.346652373e-05 9.364520131e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.784074406e-05 -0.0002009847048 1.904727186e-06 0 0 0.0002344967162 0.0009942545535 7.994216821e-06 0 0 2.436955313e-07 -3.128454986e-06 -4.669337988e-05 0 0 0 0 0 0 0 0 0 0 0 0 +7.162412136e-05 -1.032396779e-05 -7.971605912e-07 0 0 2.535357882e-05 -0.0001741658821 -1.140577944e-06 0 0 4.145101802e-07 4.457578458e-07 -5.033975524e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-7.454045342e-05 1.663238741e-06 2.286328445e-07 0 0 -6.17916987e-06 -4.044510097e-05 -2.948087554e-07 0 0 -4.560798445e-08 2.31387653e-07 1.629646396e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001507078108 -3.746780307e-05 1.641445361e-06 0 0 -6.758907263e-05 0.0001444180909 2.023131215e-06 0 0 -1.541379905e-07 -5.865217278e-07 -1.10250921e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.882582064e-05 -4.061281688e-05 1.637715487e-07 0 0 -3.689279878e-05 -7.702058222e-05 -4.156588327e-07 0 0 1.187601768e-08 -2.303069208e-07 -3.79401717e-06 0 0 0 0 0 0 0 0 0 0 0 0 +7.642583166e-06 4.892521732e-06 8.593787896e-08 0 0 2.004200408e-05 -1.915457094e-06 -2.019125283e-07 0 0 4.301349261e-08 2.655445769e-08 9.685338965e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.854933559e-05 -4.007709942e-06 2.590761349e-07 0 0 -5.351535773e-06 2.159459202e-05 2.033498473e-07 0 0 5.530375173e-10 -9.43933223e-08 -2.691963465e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.2201099571 -0.4935301109 -0.0004511519725 -0.08915725982 0.0002453745094 0.08162410658 -0.06818220225 0.0002213093278 -0.1414911587 0.0006676482382 -0.0001427502587 0.0001384317545 -0.02067969905 0.0006075915333 -0.1410529407 0.05608899461 0.1547959891 0.0001332852301 0.04287639411 8.159204043e-05 2.78862532e-05 0.0003340685559 0.004619686767 0.0001224701544 0.03150977492 +-0.02655685411 -0.0672379584 -6.715052878e-05 -0.01062022556 -0.0003965357548 0.1423909394 0.2471273401 0.0002830098434 -0.01829295287 0.002264872928 -0.0004658861403 0.0003048957809 -0.00978456613 0.0006742871773 -0.04212339709 0.06579126184 0.1657763333 0.0001432104346 0.02580998827 0.0007357731131 0.0005658811339 0.0004579821394 0.008122338447 -0.0003169969318 0.03496582274 +0.009105727307 -0.00464450107 -3.171942699e-07 -0.01573426813 6.455944092e-08 0.03797086285 0.01351124351 -1.67954844e-05 -0.05103590006 0.0002917385712 -8.501651824e-06 2.304603736e-05 -0.001401063657 -6.531662313e-06 -0.002957134513 0.010812495 0.01444272561 6.595849244e-06 -0.009511148579 0.0001598762212 7.893103959e-05 9.582621078e-05 0.003207398093 -4.494911536e-06 0.006770780462 +0.005463946804 -0.00800863544 3.415897365e-06 -0.0120976232 5.562819637e-05 0.004814251333 -0.006244852971 2.623111357e-06 -0.009987944464 1.901037864e-05 -1.569618823e-05 2.743062891e-05 1.215437708e-05 3.91835292e-05 -0.0001664072115 -0.005417069665 0.009076552005 -3.40419897e-06 0.01299074928 -6.896183937e-05 -5.687820263e-05 3.659468452e-05 7.886199252e-05 8.670173717e-05 -0.00107904199 +0.0003013436114 -0.0009939707687 6.714078157e-07 -0.001524155101 2.377486628e-05 -0.0006159714504 0.000358066997 -1.924748626e-06 0.0002312539206 1.17482609e-05 -6.153477975e-06 1.893600762e-07 -2.978283029e-05 4.072246609e-06 0.0001084020542 -0.001170105421 0.001831082745 -2.763280465e-06 0.002488273846 -1.789417797e-05 -4.482703018e-06 -1.155202202e-06 -2.76349727e-05 1.865923368e-06 0.0001005778477 +-0.0003419319803 -0.0002181295512 -1.839515077e-07 0.0003828686497 1.031699641e-05 -0.0003813778281 -0.0003209725267 -1.267356473e-06 0.0003654374081 1.373105878e-05 3.740301229e-06 -8.918946745e-07 -3.51630268e-05 -2.993994581e-06 -0.000152674349 -0.0001685797133 -0.0001483059012 -8.361313988e-07 0.0001529018548 6.19004705e-06 -7.384961218e-06 8.095103129e-07 4.09674347e-05 8.020808386e-06 0.0001778693433 +0.0001818376139 -0.0001796672246 -8.473410945e-08 -0.0003367758956 -3.107433567e-06 0.0002983473496 -0.0003192683345 -5.311819062e-08 -0.0005715316235 -2.620130027e-06 2.658376112e-07 1.208662948e-06 -1.687833043e-06 6.761558075e-07 -1.332219832e-05 -0.0001383303214 0.0002173096015 -3.948012491e-08 0.0003184268897 2.518736696e-06 9.354974521e-07 1.591370646e-06 -4.190105752e-06 2.901085837e-07 -3.307071206e-05 +2.336420788e-05 -4.88299422e-05 8.029215587e-08 -6.53257102e-05 -5.395883337e-07 0.0001092326529 0.0001364543957 1.622694785e-08 1.033848054e-05 1.255406793e-06 2.713830289e-07 3.365220801e-07 8.258235267e-08 2.358760249e-08 4.329747521e-06 1.980668547e-05 0.0001517799661 -8.81108479e-08 0.0001114613561 1.499368843e-06 4.326875297e-07 2.949484093e-07 3.988227858e-07 -1.626566813e-07 2.09334599e-05 +-0.0001266155233 -0.0001661572822 -1.316077842e-07 2.66766093e-05 6.3995598e-07 -0.0001514222062 -0.0001518811911 -2.480395354e-07 6.381218142e-05 4.970603688e-07 -1.176848271e-07 -3.882066062e-07 -3.504858568e-06 -4.245729323e-08 -3.049370943e-05 -5.71904655e-05 -2.86592099e-05 -1.467827788e-07 4.350634907e-05 7.900650059e-08 -3.252375793e-07 -2.701955933e-07 2.456050636e-06 1.147022438e-07 2.137343072e-05 +9.806413176e-07 -9.40902719e-05 2.676668718e-08 -7.0370235e-05 5.432755148e-07 1.75253221e-06 -0.0001898362077 3.850918811e-08 -0.000142313447 1.29927199e-06 4.135867375e-07 -7.342171172e-08 -1.544844295e-06 -3.915816081e-07 -1.872174719e-05 -3.043218214e-05 -4.880454806e-05 -1.360965776e-08 -3.091244406e-06 1.505729373e-06 4.985599582e-07 -6.104028876e-08 -1.752110948e-06 -4.594000636e-07 -2.123524442e-05 +-1.430331133e-05 -6.984433064e-06 2.68751297e-09 9.954470995e-06 8.27878889e-07 1.639586958e-05 1.026208272e-05 7.89573283e-09 -9.809712169e-06 -7.464896432e-07 1.962106509e-07 6.512464314e-08 -5.352263756e-07 -1.365204362e-07 -5.988184224e-06 1.65641562e-05 4.417362611e-06 1.19996181e-08 -1.413181055e-05 -9.451011165e-07 -5.195690508e-08 4.064136735e-08 2.781811925e-07 7.166671201e-08 3.111458805e-06 +-1.516088933e-05 -2.690390993e-05 2.437826765e-09 -2.831017713e-06 2.259903628e-07 2.757580686e-06 1.335353234e-05 -3.279531551e-10 6.600708255e-06 3.519891349e-08 1.215528022e-07 5.497488403e-08 -1.018729224e-06 -6.974101762e-08 -9.136261139e-06 1.589675694e-06 1.912570048e-05 -4.246147719e-09 1.206780145e-05 7.328731982e-08 1.120597075e-08 3.75878964e-08 2.436813098e-07 8.944282257e-09 2.184777067e-06 +-1.754891827e-05 -3.801068609e-05 -5.518481775e-09 -9.169041542e-06 2.507453982e-07 -1.328742352e-05 -4.624856509e-05 -6.599586459e-09 -1.984359703e-05 9.743607376e-08 6.739196214e-08 -1.928664855e-08 -7.958947638e-07 -6.21153542e-08 -8.584262181e-06 -6.859334755e-06 -1.050454733e-05 -4.445210539e-09 -3.318283491e-07 7.82074474e-08 2.122072912e-08 -2.21193118e-08 -3.348943901e-07 -2.867352546e-08 -3.611967372e-06 +0.06629871983 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.004431629232 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.07794449356 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03407793184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001693269109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001456137645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007460071084 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0006543875677 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.048267529e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001850541178 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +3.751047616e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-8.178971982e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.642660388e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1056495384 0.09067919322 0.1552252394 0 0 -0.1323275398 0.04343140712 0.03006626572 0 0 -0.2436918009 0.02709064673 0.08180139803 0 0 0 0 0 0 0 0 0 0 0 0 +0.1645374754 0.03926206155 0.07081618605 0 0 -0.1035234428 0.02671520297 0.00740416584 0 0 -0.1900979804 0.00912301381 0.03926114902 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0158770028 0.03890097375 0.06993387586 0 0 -0.005589167392 0.002773119124 0.0007135318558 0 0 -0.00989754562 0.0003718606911 0.003068413224 0 0 0 0 0 0 0 0 0 0 0 0 +0.002692233437 -0.0001202964445 -0.0003022939907 0 0 -0.007181515622 0.007436329451 0.01438312912 0 0 -0.01306890337 0.01420344859 0.02532890968 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001224006338 0.0004725185721 0.0008931350015 0 0 0.0002807977032 -0.0001589997231 -0.0002019920918 0 0 0.0005255747669 -0.0002117089354 -0.0004162448624 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002002139305 -0.0003514063983 -0.0005527150085 0 0 1.556740393e-05 0.0002389231962 0.0002015367261 0 0 3.409429367e-05 0.0002058395338 0.0004603028513 0 0 0 0 0 0 0 0 0 0 0 0 +-6.761004798e-05 0.0001781679145 0.0003103455736 0 0 -0.0001697224061 0.0002020285151 0.0004565006051 0 0 -0.0003073373831 0.0004845912923 0.0007730430772 0 0 0 0 0 0 0 0 0 0 0 0 +9.821353449e-05 -5.023256937e-06 -1.850757733e-05 0 0 -3.408321015e-05 -1.901897596e-05 -2.976671469e-05 0 0 -6.481280705e-05 -3.551883602e-05 -4.959160015e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001428734097 -3.213788095e-05 -5.130568066e-05 0 0 2.966226141e-05 1.604546535e-05 -2.047794706e-06 0 0 5.626708529e-05 9.466215381e-09 1.209035963e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001563235379 4.590416971e-05 9.036600956e-05 0 0 3.325048721e-05 9.003597964e-06 3.92183015e-05 0 0 6.202097637e-05 4.719760319e-05 5.630350675e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-6.008968836e-06 1.211080143e-05 1.817130323e-05 0 0 4.008584619e-06 -1.725606501e-05 -2.591056376e-05 0 0 6.947105868e-06 -2.923992492e-05 -4.689093506e-05 0 0 0 0 0 0 0 0 0 0 0 0 +8.32201393e-06 -5.515316554e-06 -1.044067246e-05 0 0 -1.174705398e-05 5.266012672e-06 8.453541014e-06 0 0 -2.148148418e-05 8.438545441e-06 1.574354286e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.3577462e-05 7.064960233e-06 1.373390506e-05 0 0 9.10289784e-06 -1.355905572e-06 3.896423929e-06 0 0 1.678391353e-05 4.942228081e-06 3.600636586e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.2522189038 0.2348602365 0.4301509951 0.04507607745 -0.06439058412 -0.05127300704 -0.03481148508 -0.01323158734 0.08431908432 0.1358875746 -0.0821000122 -0.01532529252 -0.05290729733 -0.1304393761 0.07145657042 -0.03117831817 0.03126178696 0.06704009238 0.03499033261 -0.001895885872 0.0464129045 -0.0572942646 -0.09868307411 -0.002117656197 0.03509366987 +-0.02910207556 0.03102484145 0.05603697245 0.004251118622 -0.008619840826 -0.08169004051 0.05196223846 0.1182420753 0.031622782 0.02981810925 -0.1517169682 0.1191294705 0.2042194093 -0.0319462881 0.002455103374 -0.03921474121 0.03559740352 0.08295133699 0.03690717611 0.004498761098 0.06202372233 -0.07160138042 -0.1193230511 0.005782098794 0.02933507564 +0.01133461959 1.170860358e-05 -0.0002502829675 0.007874141105 -0.01330907137 -0.02371380506 0.005478613255 0.01356887081 -0.01028444942 0.02348034856 -0.04342268083 0.01399295248 0.02316979932 -0.02613373398 0.03784847401 -0.008430921897 0.0013630524 0.01061466515 0.003531680895 0.009912955621 0.01371610134 -0.009875344406 -0.01267268692 0.009859430665 -0.00597531951 +0.005691358861 0.005047512529 0.009062903689 0.007451257069 -0.01181563124 -0.002789079443 -0.002769993326 -0.005070726291 -0.003948659603 0.006557695038 -0.004976642907 -0.004958010864 -0.008927911721 -0.007143262181 0.01154318136 0.00229089881 0.001771531288 0.003783609454 0.002366068081 -0.004996712823 -0.003923346899 -0.00345657106 -0.005814891587 -0.005326479355 0.007529445479 +0.000482279196 0.0008364647845 0.001532344844 0.001249500304 -0.001878133895 0.0003689353262 0.0001884788244 0.0003599737037 0.0001255795821 -0.0004539829613 0.0006670677179 0.0003795484835 0.0006401138524 0.0004827752266 -0.0006763066782 0.0009649815831 0.0009690736264 0.001675433021 0.001530333307 -0.001940422422 -0.001600980206 -0.001501024999 -0.002742417815 -0.001997663983 0.003441427359 +-0.0001042952134 0.0001805834389 0.0003223633713 1.863291967e-05 -1.512925456e-05 0.0001484415398 -5.640562301e-05 5.955319529e-07 0.0002345695731 -7.586499678e-05 0.0003108829334 -8.987386926e-07 -5.653455411e-05 8.096272238e-05 -0.0003933113816 0.0001843163015 1.877254807e-05 8.839815061e-05 0.0002123829286 -0.0002037757388 -0.0003057878439 -8.786676685e-05 -0.0001243483392 -0.0001618351526 0.0004472495565 +5.263072304e-05 1.225221153e-05 1.754314838e-05 1.548208635e-05 -4.030131811e-05 -0.0001388943067 -9.044398106e-05 -0.0001615501583 -0.0001334589937 0.0002343207508 -0.0002411527472 -0.0001581713208 -0.0002771792643 -0.0002350778322 0.0004003331323 -1.402388305e-06 3.284313406e-06 1.439101159e-05 -7.956624144e-07 -1.901843811e-05 1.113692384e-05 -1.138473995e-05 -1.64534384e-05 -1.292748907e-05 9.386336377e-06 +2.337825705e-05 6.878488878e-05 0.0001249283666 7.200300731e-05 -0.000120540116 -7.331016412e-05 1.49815609e-05 2.836958126e-05 -2.849686372e-05 3.304525049e-05 -0.0001320200007 2.527453179e-05 5.039993231e-05 -3.877260962e-05 6.805228721e-05 -2.046915302e-06 4.660701521e-05 9.236595474e-05 8.177442852e-05 -4.983939914e-05 5.406644527e-07 -8.254416919e-05 -0.0001460686954 -4.542991602e-05 0.0001337543132 +-0.0001132945892 0.0001138031138 0.0002089254958 2.772193866e-05 -3.765138113e-05 0.0001028378625 -4.545739848e-05 -7.268711131e-05 5.893185602e-05 -2.362049349e-05 0.0001942009882 -7.373208568e-05 -0.0001431086609 2.660254332e-05 -9.32949676e-05 7.345986602e-05 4.278249312e-06 6.526542304e-06 4.183632439e-05 -7.261930752e-05 -0.0001156141647 -8.933905641e-06 -1.46138658e-05 -6.864729356e-05 0.000116603325 +-8.298550433e-06 2.271639182e-05 4.169279882e-05 1.635628459e-05 -2.359169128e-05 -1.861679547e-05 -3.679975125e-05 -6.404632232e-05 -2.625305019e-05 7.218440447e-05 -2.888981218e-05 -6.415543037e-05 -0.0001173521161 -7.558825103e-05 0.0001097344452 -5.167527005e-06 -1.563164635e-05 -3.122243317e-05 -3.247421765e-05 1.911133496e-05 1.162848243e-05 2.750938914e-05 4.807386526e-05 2.013262681e-05 -5.164502483e-05 +-5.733339288e-06 1.241538831e-06 2.413502847e-06 -3.590963441e-07 3.553581612e-06 -1.846852802e-05 7.251804114e-06 1.515237803e-05 3.065091227e-06 8.825751723e-06 -3.221434236e-05 1.456239511e-05 2.675522316e-05 -5.377277884e-06 8.342822953e-06 -1.155544168e-05 4.12186455e-06 9.688280604e-06 5.911421601e-06 7.488083852e-06 1.692485221e-05 -8.218302221e-06 -1.42516836e-05 4.563804933e-06 -2.505268201e-06 +-1.681122691e-05 1.91762439e-05 3.528882504e-05 7.149292133e-06 -1.055612494e-05 4.221170767e-06 -1.569705571e-06 4.927043119e-08 1.151583067e-05 2.167091635e-06 9.344869691e-06 -1.451791862e-07 -1.869363891e-06 -4.405768258e-07 -9.870926211e-06 5.660758045e-06 5.323491523e-06 9.270054021e-06 6.026577948e-06 -1.245554809e-05 -9.162287754e-06 -8.24192207e-06 -1.501893777e-05 -1.19320921e-05 1.87752704e-05 +-2.357217841e-05 1.675057601e-05 3.110491496e-05 2.584979942e-06 -2.181584182e-06 6.359210421e-06 -1.24989374e-05 -2.10491068e-05 9.837311746e-07 1.449775163e-05 1.349657141e-05 -2.113712611e-05 -3.971547835e-05 -1.456437552e-05 1.532208427e-05 2.070544085e-06 -4.338324063e-06 -8.637197238e-06 -5.510372547e-06 2.905370402e-06 -2.755032333e-06 7.427821896e-06 1.318049574e-05 2.942877246e-06 -8.333256184e-06 +0.06702117383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.005287036955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0741817856 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.03863219737 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.002209481017 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006327405526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005765665946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007414308246 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-6.788608916e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001643274562 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.011155489e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +6.740580083e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2.591393811e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1127826805 0.08874584459 -0.1514635454 0 0 -0.1297579055 0.04242095256 -0.02828655852 0 0 0.2400353898 -0.02575096229 0.07936239395 0 0 0 0 0 0 0 0 0 0 0 0 +0.1771125802 0.03731958159 -0.06468509883 0 0 -0.1087361707 0.02827979909 -0.009165016232 0 0 0.2007323652 -0.00930941554 0.04286712034 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0131130408 0.04131699928 -0.07419162771 0 0 -0.006388970372 0.001980315176 0.001915066939 0 0 0.01145613345 0.002181535242 -0.000823237588 0 0 0 0 0 0 0 0 0 0 0 0 +0.0009790198591 0.001300114077 -0.002226313532 0 0 -0.007090024886 0.007610301425 -0.01462687956 0 0 0.01295208674 -0.01459164407 0.02593801067 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0008926549432 5.424056999e-05 -0.0001374548054 0 0 -7.62558873e-05 0.0002990512816 -0.0005431967113 0 0 0.000113218117 -0.0005352606271 0.0009616312369 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001915657315 -0.0003568295543 0.0005843856727 0 0 4.77849351e-05 0.0002053621255 -0.000148020068 0 0 -8.984907675e-05 -0.0001724797996 0.0003863480545 0 0 0 0 0 0 0 0 0 0 0 0 +-7.495389255e-05 0.0002234271821 -0.0003872110137 0 0 -0.0001492046789 0.0001545229776 -0.0003793559481 0 0 0.0002738916993 -0.0003955415543 0.0006335344413 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001007509045 -4.287317771e-06 1.484229687e-05 0 0 -5.625852042e-05 9.589948661e-06 -1.060733201e-05 0 0 0.0001046663868 -5.706122712e-06 2.662155868e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001716747696 -5.201505995e-05 8.603046284e-05 0 0 3.610163235e-05 2.90474173e-05 -2.847394747e-05 0 0 -6.900505942e-05 -3.230335571e-05 6.32015909e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001494269455 6.453449501e-05 -0.0001192980654 0 0 3.885412241e-05 -1.035764166e-05 -8.583391811e-06 0 0 -7.195624334e-05 -1.281158502e-05 -4.581531368e-07 0 0 0 0 0 0 0 0 0 0 0 0 +8.536780945e-06 7.717484653e-06 -1.065844252e-05 0 0 -4.135187861e-06 -1.114277414e-05 1.948363573e-05 0 0 7.925032149e-06 2.226319668e-05 -3.387747628e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.71163188e-06 -7.604455149e-06 1.408585411e-05 0 0 -1.173322258e-05 8.327912298e-06 -1.529647916e-05 0 0 2.148341545e-05 -1.564150351e-05 2.724528636e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.813810933e-05 9.69806607e-06 -1.797869621e-05 0 0 1.237277157e-05 -4.757804254e-06 1.66119111e-06 0 0 -2.280221139e-05 1.045088843e-06 -6.731891909e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.2554636569 0.2313844032 -0.4254476076 0.04355183766 0.06241672637 -0.04781516992 -0.03479295361 0.01507881353 0.08367937312 -0.1320511949 0.07575530244 0.01721796935 -0.05487534798 0.1255073996 0.06699779698 -0.03008556483 0.02952361192 -0.0634125835 0.03330185112 0.001583072648 -0.04456971283 0.05358510638 -0.09264778482 0.001726722707 0.03292957212 +-0.03288485295 0.03320279577 -0.0602717177 0.004325905116 0.008096365138 -0.0828077468 0.05142012074 -0.118916374 0.0351378553 -0.03096202832 0.1527971763 -0.1197536942 0.2059003168 0.02937100079 0.0002132028663 -0.04007191284 0.03587215176 -0.08348853639 0.03730600042 -0.004155342985 -0.06187277082 0.07118603428 -0.1191671143 -0.004468828117 0.03024722283 +0.01135791923 -0.001249765792 0.002569037374 0.006860640263 0.01177945 -0.02561001889 0.007545819634 -0.01819170388 -0.00872316232 -0.02308772636 0.04703256945 -0.01869166097 0.03128883747 0.02523770542 0.03608360703 -0.009727878538 0.001890007438 -0.01229006444 0.004170780114 -0.01069747953 -0.01548048681 0.01116415173 -0.01465147636 -0.01041821349 -0.00618092908 +0.005647276727 0.005143233599 -0.009236437409 0.007492677437 0.01197428828 -0.003178412474 -0.003219201278 0.00587759046 -0.004731704634 -0.007703563575 0.005631115692 0.005719988189 -0.01036496967 0.008395666289 0.0136028065 0.001993818406 0.00129847921 -0.003271432983 0.002046888549 0.004069821532 0.003284473557 0.002991629402 -0.004745306793 0.004228256664 0.006165662923 +0.0005145863881 0.001019723744 -0.001858517408 0.001358037044 0.002100247377 0.0003233827615 0.0001292702862 -0.0002420344711 7.38214062e-05 0.0004006100241 -0.0006175302404 -0.0002692130184 0.0004530840654 -0.0004485037085 -0.0006004377959 0.001113400455 0.001121440965 -0.001963243342 0.001852250601 0.002257053803 0.00181816206 0.001756706066 -0.003189841195 0.002269869022 0.004058974892 +9.770871451e-05 0.0002667842045 -0.0004754885894 0.0002040832351 0.0003364356434 0.0001500443591 -3.515215118e-05 -4.93559313e-05 0.0002655636691 8.703183527e-05 -0.0002970744993 -4.773716287e-05 2.260756235e-05 -0.0001027450469 -0.0004137734426 0.0002845877082 0.0001103036594 -0.0002206170685 0.0002828206958 0.0004146995453 0.0004583698691 0.0002056938517 -0.0003528930727 0.000379814403 0.0007166401601 +-2.289069477e-05 -3.585584331e-05 6.836366221e-05 -7.127711041e-05 -0.0001091173516 -0.0001145886997 -8.053828909e-05 0.0001449332813 -0.0001115922612 -0.0001877513603 0.0001968549498 0.0001395265327 -0.0002437459746 0.0001863404401 0.0003162486944 -3.20880169e-05 -2.641270276e-05 2.970126969e-05 -2.426646703e-05 -4.534499254e-05 -6.025996484e-05 -3.066733828e-05 6.385547231e-05 -5.164657258e-05 -8.397937364e-05 +-6.796944272e-06 8.411440728e-05 -0.0001535689402 7.064396822e-05 0.0001161868621 -8.31611964e-05 -5.44308744e-07 4.388343058e-08 -4.817161873e-05 -6.520750035e-05 0.0001487944634 3.403190777e-06 -1.39995764e-06 7.334708682e-05 0.0001262386033 -8.905604059e-06 3.94851711e-05 -8.407334376e-05 8.749679909e-05 2.715625801e-05 -1.098666703e-05 7.576016511e-05 -0.0001307759278 2.444779352e-05 0.000116007486 +-7.716549855e-05 0.0001320673116 -0.0002417122149 6.195949798e-05 9.490577383e-05 0.0001032269551 -5.177040308e-05 8.429033681e-05 5.636804123e-05 1.325800621e-05 -0.0001949368436 8.561621053e-05 -0.0001654858075 -1.560077323e-05 -7.726600087e-05 9.163620969e-05 1.329149194e-05 -1.857021222e-05 4.537757238e-05 0.0001043411525 0.000144112215 2.057734933e-05 -3.708833149e-05 0.0001009983129 0.0001525891452 +-1.333243953e-05 9.748127467e-06 -1.819008202e-05 2.895368975e-06 2.762420681e-06 -2.045728476e-05 -2.76699241e-05 4.834182032e-05 -2.275633692e-05 -6.05407635e-05 3.392162005e-05 4.84637588e-05 -8.8139552e-05 6.257137834e-05 9.402252677e-05 -1.371937908e-05 -1.589562616e-05 3.038754429e-05 -3.259675725e-05 -2.821594471e-05 -2.398695236e-05 -2.716968278e-05 4.776228681e-05 -2.726409102e-05 -6.140960968e-05 +-3.581842822e-06 9.49661672e-07 -1.764431813e-06 -2.950745885e-07 -1.686723886e-06 -2.207076319e-05 8.149126141e-06 -1.689983506e-05 1.232150085e-06 -1.049752726e-05 3.951012917e-05 -1.634917977e-05 3.015352421e-05 8.751673806e-06 1.192424159e-05 -1.302939306e-05 4.448860591e-06 -1.079665963e-05 6.316636185e-06 -8.655036513e-06 -1.926514663e-05 9.09536615e-06 -1.558227638e-05 -7.081101832e-06 -2.637931569e-06 +-1.683146604e-05 2.257854208e-05 -4.153792227e-05 1.012111985e-05 1.564732597e-05 7.207957737e-06 -4.705147127e-06 5.851396924e-06 1.059247011e-05 -4.058299804e-06 -1.461666482e-05 5.96607455e-06 -1.259151386e-05 2.68064199e-06 -6.557336966e-06 8.371172556e-06 4.888595935e-06 -7.901262566e-06 5.195884262e-06 1.487479614e-05 1.33550141e-05 7.136890117e-06 -1.321177546e-05 1.4527913e-05 2.03382859e-05 +-2.444149137e-05 1.472282618e-05 -2.748025101e-05 5.10462017e-07 -6.358877185e-07 6.316396785e-06 -1.135457652e-05 1.929969361e-05 1.010581149e-06 -1.294966131e-05 -1.321272106e-05 1.94185626e-05 -3.648960548e-05 1.301278899e-05 1.370228836e-05 1.060042491e-06 -4.599498529e-06 8.897320398e-06 -5.509864118e-06 -4.409960461e-06 1.164520172e-06 -7.620823682e-06 1.363416633e-05 -4.341801661e-06 -9.855226903e-06 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_0_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_0_ref.dat index 334d776083..585a260d6e 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_0_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_0_ref.dat @@ -11,31 +11,31 @@ 7.207880248e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.413993415e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.868740984e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001750662235 0.0507615921 0.001113874611 0.0507615921 0.09367077058 -2.336572247e-05 0.001113874611 -2.336572247e-05 -0.07776073675 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.009006268236 0.1579347291 0.0006323471088 0.1579347291 0.2285680831 -0.005000937267 0.0006323471088 -0.005000937267 -0.1831082875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01001834632 0.1003180687 -0.001133443468 0.1003180687 0.1251621236 -0.001606973598 -0.001133443468 -0.001606973598 -0.1190709218 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.004790285838 0.02571644485 -0.001022185376 0.02571644485 0.02449415701 0.0005244716855 -0.001022185376 0.0005244716855 -0.03315273963 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001453325349 0.0004982940364 -0.0004545431305 0.0004982940364 -0.003377225786 0.0005900722247 -0.0004545431305 0.0005900722247 -0.002966958065 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.383889993e-05 -0.00340937683 -0.000106987075 -0.00340937683 -0.005568390487 0.0002252671307 -0.000106987075 0.0002252671307 0.00364658238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000304827491 -0.002422648167 4.373334295e-05 -0.002422648167 -0.002842635931 1.663003031e-05 4.373334295e-05 1.663003031e-05 0.003298168151 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001938068266 -0.0001343265019 7.069012787e-05 -0.0001343265019 0.0004938372003 -8.764784402e-05 7.069012787e-05 -8.764784402e-05 0.0005218218948 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.942970052e-05 0.0004294337043 3.008044486e-05 0.0004294337043 0.0008517319648 -4.996911672e-05 3.008044486e-05 -4.996911672e-05 -0.0004754130865 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.99883681e-05 0.000204886852 -6.940702663e-06 0.000204886852 0.0001944788345 8.248387359e-07 -6.940702663e-06 8.248387359e-07 -0.0002890219697 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.853133884e-05 5.284470922e-06 -1.132580385e-05 5.284470922e-06 -0.0001012216982 1.448980202e-05 -1.132580385e-05 1.448980202e-05 -6.917009662e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.66105833e-06 -1.721163959e-05 -2.26175687e-06 -1.721163959e-05 -4.008168458e-05 3.14304305e-06 -2.26175687e-06 3.14304305e-06 1.833540328e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.175004598e-06 -2.594690439e-05 -2.506529432e-08 -2.594690439e-05 -3.128709882e-05 1.166877665e-06 -2.506529432e-08 1.166877665e-06 3.663607239e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001750662235 0.0507615921 0.001113874611 0 0 0.0507615921 0.09367077058 -2.336572247e-05 0 0 0.001113874611 -2.336572247e-05 -0.07776073675 0 0 0 0 0 0 0 0 0 0 0 0 +-0.009006268236 0.1579347291 0.0006323471088 0 0 0.1579347291 0.2285680831 -0.005000937267 0 0 0.0006323471088 -0.005000937267 -0.1831082875 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01001834632 0.1003180687 -0.001133443468 0 0 0.1003180687 0.1251621236 -0.001606973598 0 0 -0.001133443468 -0.001606973598 -0.1190709218 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004790285838 0.02571644485 -0.001022185376 0 0 0.02571644485 0.02449415701 0.0005244716855 0 0 -0.001022185376 0.0005244716855 -0.03315273963 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001453325349 0.0004982940364 -0.0004545431305 0 0 0.0004982940364 -0.003377225786 0.0005900722247 0 0 -0.0004545431305 0.0005900722247 -0.002966958065 0 0 0 0 0 0 0 0 0 0 0 0 +-6.383889993e-05 -0.00340937683 -0.000106987075 0 0 -0.00340937683 -0.005568390487 0.0002252671307 0 0 -0.000106987075 0.0002252671307 0.00364658238 0 0 0 0 0 0 0 0 0 0 0 0 +0.000304827491 -0.002422648167 4.373334295e-05 0 0 -0.002422648167 -0.002842635931 1.663003031e-05 0 0 4.373334295e-05 1.663003031e-05 0.003298168151 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001938068266 -0.0001343265019 7.069012787e-05 0 0 -0.0001343265019 0.0004938372003 -8.764784402e-05 0 0 7.069012787e-05 -8.764784402e-05 0.0005218218948 0 0 0 0 0 0 0 0 0 0 0 0 +3.942970052e-05 0.0004294337043 3.008044486e-05 0 0 0.0004294337043 0.0008517319648 -4.996911672e-05 0 0 3.008044486e-05 -4.996911672e-05 -0.0004754130865 0 0 0 0 0 0 0 0 0 0 0 0 +-2.99883681e-05 0.000204886852 -6.940702663e-06 0 0 0.000204886852 0.0001944788345 8.248387359e-07 0 0 -6.940702663e-06 8.248387359e-07 -0.0002890219697 0 0 0 0 0 0 0 0 0 0 0 0 +-2.853133884e-05 5.284470922e-06 -1.132580385e-05 0 0 5.284470922e-06 -0.0001012216982 1.448980202e-05 0 0 -1.132580385e-05 1.448980202e-05 -6.917009662e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.66105833e-06 -1.721163959e-05 -2.26175687e-06 0 0 -1.721163959e-05 -4.008168458e-05 3.14304305e-06 0 0 -2.26175687e-06 3.14304305e-06 1.833540328e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.175004598e-06 -2.594690439e-05 -2.506529432e-08 0 0 -2.594690439e-05 -3.128709882e-05 1.166877665e-06 0 0 -2.506529432e-08 1.166877665e-06 3.663607239e-05 0 0 0 0 0 0 0 0 0 0 0 0 -0.003691666925 0.05482993326 0.0001089277406 0.02324607674 -0.0008877175731 0.05482993326 0.008098504122 0.0002712818837 -0.02414033261 -0.0008544598465 0.0001089277406 0.0002712818837 -0.004648162731 -0.0007491645907 -0.02580043374 0.02324607674 -0.02414033261 -0.0007491645907 -0.08702745773 0.0002547302505 -0.0008877175731 -0.0008544598465 -0.02580043374 0.0002547302505 0.07915166097 -0.0005919890983 0.05287221808 -0.0003615463556 0.001146779057 0.0006105092121 0.05287221808 0.01910020623 -0.0002436549709 -0.006255360202 0.0005424941001 -0.0003615463556 -0.0002436549709 -0.01342276779 -0.000205771721 -0.01366806991 0.001146779057 -0.006255360202 -0.000205771721 -0.05626712682 0.0005388357561 0.0006105092121 0.0005424941001 -0.01366806991 0.0005388357561 0.0632970159 -0.0001439783848 0.0195019292 -0.0001115842565 -0.0110136374 0.0006821509526 0.0195019292 0.01151300227 -0.0001903580533 0.005132260242 0.0006887219972 -0.0001115842565 -0.0001903580533 -0.0103037832 0.0004493488931 0.002947791458 -0.0110136374 0.005132260242 0.0004493488931 -0.007325951638 7.5083809e-06 0.0006821509526 0.0006887219972 0.002947791458 7.5083809e-06 0.01226132774 +0.0001439783848 0.0195019292 -0.0001115842565 -0.0110136374 0.0006821509526 0.0195019292 0.01151300227 -0.0001903580533 0.005132260242 0.0006887219972 -0.0001115842565 -0.0001903580533 -0.0103037832 0.0004493488931 0.002947791458 -0.0110136374 0.005132260242 0.0004493488931 -0.007325951638 7.508380899e-06 0.0006821509526 0.0006887219972 0.002947791458 7.508380899e-06 0.01226132774 -0.0006188999214 0.003171139265 0.0001475927522 -0.003253397605 -1.347878737e-05 0.003171139265 0.001340070131 5.761565466e-05 0.001013893467 5.926651251e-05 0.0001475927522 5.761565466e-05 -0.002263941773 0.0003211566053 0.002464555646 -0.003253397605 0.001013893467 0.0003211566053 0.0008503247633 -0.0002449862989 -1.347878737e-05 5.926651251e-05 0.002464555646 -0.0002449862989 -0.002247317384 -0.0002361287985 0.000496106723 4.783559383e-05 9.404813649e-05 -6.197392088e-05 0.000496106723 -0.0001266090411 2.855035488e-05 -0.0002625166423 -3.826620962e-05 4.783559383e-05 2.855035488e-05 1.798963177e-05 4.021486904e-05 1.890766327e-05 9.404813649e-05 -0.0002625166423 4.021486904e-05 -0.0003837928853 -5.781362143e-05 -6.197392088e-05 -3.826620962e-05 1.890766327e-05 -5.781362143e-05 -0.0001110190686 5.4326197e-05 4.707910644e-05 -1.668271984e-05 -4.30918143e-05 1.779303483e-05 4.707910644e-05 0.0001669635757 -1.433907293e-05 9.877934254e-05 1.707325131e-05 -1.668271984e-05 -1.433907293e-05 -2.131800826e-05 -2.558958697e-05 -0.0001275471924 -4.30918143e-05 9.877934254e-05 -2.558958697e-05 -5.851606166e-05 3.060730032e-05 1.779303483e-05 1.707325131e-05 -0.0001275471924 3.060730032e-05 0.0003573226008 -1.863117144e-05 3.760651921e-05 4.525704054e-06 -3.586800031e-05 -1.735429161e-06 3.760651921e-05 -5.092695992e-06 9.874997112e-07 -2.279025658e-05 1.421856437e-06 4.525704054e-06 9.874997112e-07 -4.610353427e-05 6.866468132e-06 4.819269773e-05 -3.586800031e-05 -2.279025658e-05 6.866468132e-06 -4.76484085e-05 -5.785209684e-06 -1.735429161e-06 1.421856437e-06 4.819269773e-05 -5.785209684e-06 -4.79293424e-05 --1.489764427e-05 3.321188802e-05 4.087619177e-06 -7.793971876e-07 -4.390858665e-06 3.321188802e-05 -6.716151069e-06 2.043874326e-06 -1.496714931e-05 -2.305157736e-06 4.087619177e-06 2.043874326e-06 -4.196885274e-06 3.712217522e-06 5.198087383e-06 -7.793971876e-07 -1.496714931e-05 3.712217522e-06 -2.482697986e-05 -4.718461918e-06 -4.390858665e-06 -2.305157736e-06 5.198087383e-06 -4.718461918e-06 -6.391351917e-06 +-1.489764427e-05 3.321188802e-05 4.087619177e-06 -7.793971877e-07 -4.390858665e-06 3.321188802e-05 -6.716151069e-06 2.043874326e-06 -1.496714931e-05 -2.305157736e-06 4.087619177e-06 2.043874326e-06 -4.196885274e-06 3.712217522e-06 5.198087383e-06 -7.793971877e-07 -1.496714931e-05 3.712217522e-06 -2.482697986e-05 -4.718461918e-06 -4.390858665e-06 -2.305157736e-06 5.198087383e-06 -4.718461918e-06 -6.391351917e-06 7.705340111e-06 3.664542372e-06 -2.299400735e-06 -5.189365944e-07 2.360876821e-06 3.664542372e-06 1.964898537e-05 -2.105438587e-06 1.570533407e-05 2.289233377e-06 -2.299400735e-06 -2.105438587e-06 5.483087153e-06 -4.200565476e-06 -2.149131853e-05 -5.189365944e-07 1.570533407e-05 -4.200565476e-06 2.598879442e-06 4.917006799e-06 2.360876821e-06 2.289233377e-06 -2.149131853e-05 4.917006799e-06 4.849205804e-05 -2.87395412e-06 3.171058508e-06 4.415132879e-07 3.670117278e-06 -4.591198456e-07 3.171058508e-06 -4.561283021e-06 2.116063212e-07 -7.235862786e-06 -1.645274853e-07 4.415132879e-07 2.116063212e-07 -1.704791079e-06 4.894443769e-07 2.238777343e-06 3.670117278e-06 -7.235862786e-06 4.894443769e-07 -1.129576313e-05 -4.866941695e-07 -4.591198456e-07 -1.645274853e-07 2.238777343e-06 -4.866941695e-07 -2.901869418e-06 -1.439929398e-06 2.62633259e-06 4.340958798e-07 -4.621533099e-06 -3.441505542e-07 2.62633259e-06 1.154270421e-06 2.431790887e-07 4.54487319e-07 -1.606137875e-07 4.340958798e-07 2.431790887e-07 -4.256295152e-06 6.76695468e-07 4.874027502e-06 -4.621533099e-06 4.54487319e-07 6.76695468e-07 -3.960037847e-07 -6.916823255e-07 -3.441505542e-07 -1.606137875e-07 4.874027502e-06 -6.916823255e-07 -5.250662051e-06 -6.573553128e-07 1.084252472e-06 -2.078639223e-07 9.421904584e-07 1.351442995e-07 1.084252472e-06 2.100841718e-06 -1.988018334e-07 1.222826877e-06 1.471396573e-07 -2.078639223e-07 -1.988018334e-07 1.148370374e-06 -5.125423734e-07 -3.302674649e-06 9.421904584e-07 1.222826877e-06 -5.125423734e-07 -9.943469425e-07 5.126347252e-07 1.351442995e-07 1.471396573e-07 -3.302674649e-06 5.126347252e-07 6.712992938e-06 +6.573553128e-07 1.084252472e-06 -2.078639223e-07 9.421904584e-07 1.351442995e-07 1.084252472e-06 2.100841718e-06 -1.988018334e-07 1.222826877e-06 1.471396573e-07 -2.078639223e-07 -1.988018334e-07 1.148370374e-06 -5.125423734e-07 -3.302674649e-06 9.421904584e-07 1.222826877e-06 -5.125423734e-07 -9.943469426e-07 5.126347252e-07 1.351442995e-07 1.471396573e-07 -3.302674649e-06 5.126347252e-07 6.712992938e-06 -9.989912067e-07 2.492002964e-06 1.719966257e-07 3.282369714e-06 -2.896110707e-07 2.492002964e-06 -1.766474695e-06 1.407189283e-07 -3.297472713e-06 -2.403244012e-07 1.719966257e-07 1.407189283e-07 7.175382107e-07 1.151384799e-07 -1.292063269e-06 3.282369714e-06 -3.297472713e-06 1.151384799e-07 -5.910305988e-06 -2.279641488e-07 -2.896110707e-07 -2.403244012e-07 -1.292063269e-06 -2.279641488e-07 2.213297565e-06 -0.004820678692 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.004115200626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -50,19 +50,19 @@ -6.295431716e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.469512118e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.555458099e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.004527713895 0.06865637187 -0.0002476446231 0.06865637187 0.0003898146988 -0.0005396150974 -0.0002476446231 -0.0005396150974 0.001655740749 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005490698846 0.01558639268 0.0004766593136 0.01558639268 -0.005733676682 0.0001975724783 0.0004766593136 0.0001975724783 0.001207167203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001042853453 0.04228665693 0.0001657075678 0.04228665693 0.0005662403613 0.0001122249379 0.0001657075678 0.0001122249379 8.921801996e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.003108239649 0.03383792491 -3.933940408e-05 0.03383792491 0.001102544341 0.0001308993073 -3.933940408e-05 0.0001308993073 1.283328738e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001169224942 0.003658350153 -2.290231318e-05 0.003658350153 2.640510679e-05 2.136578964e-05 -2.290231318e-05 2.136578964e-05 -8.713499919e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000223204312 0.0001428562412 1.043437672e-08 0.0001428562412 -1.358587916e-06 1.20866342e-06 1.043437672e-08 1.20866342e-06 -1.569913815e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.50245252e-05 0.000682639638 8.98731307e-07 0.000682639638 3.718366758e-05 7.483861344e-07 8.98731307e-07 7.483861344e-07 8.332859616e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.024738346e-05 9.919543249e-05 -4.970205488e-09 9.919543249e-05 2.049339849e-06 1.051415227e-07 -4.970205488e-09 1.051415227e-07 -3.750569556e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.527302299e-05 0.0001649707099 6.517667996e-07 0.0001649707099 1.217722471e-05 -7.211433116e-08 6.517667996e-07 -7.211433116e-08 1.040138865e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.931031758e-05 3.678338509e-05 2.351033669e-07 3.678338509e-05 5.01841229e-06 -3.795805242e-07 2.351033669e-07 -3.795805242e-07 6.05697242e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.363817709e-06 -1.592966748e-05 -9.460108257e-08 -1.592966748e-05 -1.020108788e-06 -4.310898456e-08 -9.460108257e-08 -4.310898456e-08 -7.7891359e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.75273984e-06 3.632651243e-05 1.030894068e-07 3.632651243e-05 3.043335977e-06 -7.8934936e-08 1.030894068e-07 -7.8934936e-08 1.381571653e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.816398431e-06 2.834716384e-06 1.1512875e-08 2.834716384e-06 9.129645983e-07 -9.691654147e-08 1.1512875e-08 -9.691654147e-08 -1.785125835e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004527713895 0.06865637187 -0.0002476446231 0 0 0.06865637187 0.0003898146988 -0.0005396150974 0 0 -0.0002476446231 -0.0005396150974 0.001655740749 0 0 0 0 0 0 0 0 0 0 0 0 +0.005490698846 0.01558639268 0.0004766593136 0 0 0.01558639268 -0.005733676682 0.0001975724783 0 0 0.0004766593136 0.0001975724783 0.001207167203 0 0 0 0 0 0 0 0 0 0 0 0 +0.001042853453 0.04228665693 0.0001657075678 0 0 0.04228665693 0.0005662403613 0.0001122249379 0 0 0.0001657075678 0.0001122249379 8.921801996e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003108239649 0.03383792491 -3.933940408e-05 0 0 0.03383792491 0.001102544341 0.0001308993073 0 0 -3.933940408e-05 0.0001308993073 1.283328738e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001169224942 0.003658350153 -2.290231318e-05 0 0 0.003658350153 2.640510679e-05 2.136578964e-05 0 0 -2.290231318e-05 2.136578964e-05 -8.713499919e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000223204312 0.0001428562412 1.043437672e-08 0 0 0.0001428562412 -1.358587916e-06 1.20866342e-06 0 0 1.043437672e-08 1.20866342e-06 -1.569913815e-06 0 0 0 0 0 0 0 0 0 0 0 0 +7.50245252e-05 0.000682639638 8.98731307e-07 0 0 0.000682639638 3.718366758e-05 7.483861344e-07 0 0 8.98731307e-07 7.483861344e-07 8.332859616e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.024738346e-05 9.919543249e-05 -4.970205488e-09 0 0 9.919543249e-05 2.049339849e-06 1.051415227e-07 0 0 -4.970205488e-09 1.051415227e-07 -3.750569556e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-4.527302299e-05 0.0001649707099 6.517667996e-07 0 0 0.0001649707099 1.217722471e-05 -7.211433116e-08 0 0 6.517667996e-07 -7.211433116e-08 1.040138865e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.931031758e-05 3.678338509e-05 2.351033669e-07 0 0 3.678338509e-05 5.01841229e-06 -3.795805242e-07 0 0 2.351033669e-07 -3.795805242e-07 6.05697242e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-1.363817709e-06 -1.592966748e-05 -9.460108257e-08 0 0 -1.592966748e-05 -1.020108788e-06 -4.310898456e-08 0 0 -9.460108257e-08 -4.310898456e-08 -7.7891359e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.75273984e-06 3.632651243e-05 1.030894068e-07 0 0 3.632651243e-05 3.043335977e-06 -7.8934936e-08 0 0 1.030894068e-07 -7.8934936e-08 1.381571653e-07 0 0 0 0 0 0 0 0 0 0 0 0 +2.816398431e-06 2.834716384e-06 1.1512875e-08 0 0 2.834716384e-06 9.129645983e-07 -9.691654147e-08 0 0 1.1512875e-08 -9.691654147e-08 -1.785125835e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.002210058588 0.01819912707 -0.0003985995442 -0.02677874341 -0.0001667239031 0.01819912707 -0.0001123704219 -0.0007144060289 0.1243964523 0.0009658773871 -0.0003985995442 -0.0007144060289 0.001229907306 0.0004858919252 0.1232334636 -0.02677874341 0.1243964523 0.0004858919252 0.06125855196 2.447904645e-05 -0.0001667239031 0.0009658773871 0.1232334636 2.447904645e-05 -0.04692832264 0.007082856725 -0.04524884935 0.0006515345872 -0.01784388885 0.0002154423833 -0.04524884935 -0.01337867199 0.0003247834082 0.07031625305 -0.0005982082748 0.0006515345872 0.0003247834082 0.001014291642 -0.0005567055102 0.0759744418 -0.01784388885 0.07031625305 -0.0005567055102 0.02289702642 -4.199194777e-05 0.0002154423833 -0.0005982082748 0.0759744418 -4.199194777e-05 -0.01836066275 0.003324572404 -0.02405277496 0.0004361769418 -0.000701216921 -0.0001429310389 -0.02405277496 -0.004205287999 -0.0001608075134 0.01755917099 -0.0002261951381 0.0004361769418 -0.0001608075134 7.80044877e-06 -0.0002227877399 0.01880974705 -0.000701216921 0.01755917099 -0.0002227877399 -4.771460958e-05 -1.291471745e-05 -0.0001429310389 -0.0002261951381 0.01880974705 -1.291471745e-05 0.00072303404 @@ -74,7 +74,7 @@ -3.107674499e-05 0.0004485340696 1.533816656e-06 2.951759468e-05 6.649459122e-08 0.0004485340696 5.087004304e-05 -4.270906882e-07 1.470590772e-05 1.403647212e-06 1.533816656e-06 -4.270906882e-07 3.392363925e-06 4.374932308e-07 7.076327562e-06 2.951759468e-05 1.470590772e-05 4.374932308e-07 6.59717042e-06 5.26005895e-08 6.649459122e-08 1.403647212e-06 7.076327562e-06 5.26005895e-08 -4.08049249e-06 -8.991305531e-06 9.589526851e-06 -4.430152798e-07 -3.964847568e-06 1.312178305e-07 9.589526851e-06 -8.139902321e-07 1.227083828e-07 2.667853583e-06 8.687193364e-08 -4.430152798e-07 1.227083828e-07 -5.952561354e-07 9.596969582e-08 2.331480326e-06 -3.964847568e-06 2.667853583e-06 9.596969582e-08 2.136336094e-06 4.384724338e-09 1.312178305e-07 8.687193364e-08 2.331480326e-06 4.384724338e-09 -1.290334138e-06 -3.084232247e-06 -1.124136596e-05 -5.602219971e-08 -3.299373679e-06 -9.013969779e-08 -1.124136596e-05 -4.584013311e-07 -2.066891861e-07 1.121415198e-05 1.056896715e-07 -5.602219971e-08 -2.066891861e-07 -3.640521782e-07 6.675435246e-08 1.084444942e-05 -3.299373679e-06 1.121415198e-05 6.675435246e-08 5.741873229e-06 3.40720919e-09 -9.013969779e-08 1.056896715e-07 1.084444942e-05 3.40720919e-09 -4.3670519e-06 -6.715215304e-07 3.583372416e-05 4.181397811e-08 2.992169421e-06 -4.65475685e-08 3.583372416e-05 4.508625145e-06 -9.76499292e-08 5.634527682e-06 2.053958935e-07 4.181397811e-08 -9.76499292e-08 5.383749334e-07 1.165946361e-07 4.550410441e-06 2.992169421e-06 5.634527682e-06 1.165946361e-07 3.425011315e-06 8.50644318e-09 -4.65475685e-08 2.053958935e-07 4.550410441e-06 8.50644318e-09 -2.521836121e-06 +6.715215304e-07 3.583372415e-05 4.181397811e-08 2.992169421e-06 -4.65475685e-08 3.583372415e-05 4.508625145e-06 -9.76499292e-08 5.634527682e-06 2.053958935e-07 4.181397811e-08 -9.76499292e-08 5.383749334e-07 1.165946361e-07 4.550410441e-06 2.992169421e-06 5.634527682e-06 1.165946361e-07 3.425011315e-06 8.50644318e-09 -4.65475685e-08 2.053958935e-07 4.550410441e-06 8.50644318e-09 -2.521836121e-06 2.190156791e-07 -7.184450614e-06 -1.30691584e-07 -2.161701436e-06 -6.850677971e-08 -7.184450614e-06 -2.814007197e-07 -1.356516765e-07 5.082013371e-06 1.376815685e-07 -1.30691584e-07 -1.356516765e-07 -2.602853582e-07 1.093216227e-07 4.463573794e-06 -2.161701436e-06 5.082013371e-06 1.093216227e-07 3.19552379e-06 6.413569007e-09 -6.850677971e-08 1.376815685e-07 4.463573794e-06 6.413569007e-09 -2.208231013e-06 0.1092481102 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1696017834 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -89,24 +89,24 @@ 5.421410721e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001403667724 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.55926937e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1035025824 0.004279401123 -0.0003765889404 0.004279401123 0.05083218837 0.0004842360617 -0.0003765889404 0.0004842360617 0.1071639333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08639239008 -0.02059659557 0.0001757861693 -0.02059659557 -0.04593967422 -0.002126699913 0.0001757861693 -0.002126699913 0.07722411642 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01125021855 0.003839441514 3.442733602e-05 0.003839441514 -0.02134959702 0.0002959320414 3.442733602e-05 0.0002959320414 0.005162234487 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.006648987299 0.02550279098 -5.794586681e-05 0.02550279098 0.06552509961 2.698086064e-05 -5.794586681e-05 2.698086064e-05 -0.002219733822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001178538735 -0.003024812413 1.028204369e-06 -0.003024812413 -0.01066861413 -1.063433664e-05 1.028204369e-06 -1.063433664e-05 -0.0003870524992 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.340784271e-05 -0.0008403934819 -7.850210439e-06 -0.0008403934819 -0.002039781357 3.527687762e-05 -7.850210439e-06 3.527687762e-05 0.0005547949481 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003256845109 0.00145391674 6.891229781e-06 0.00145391674 0.003923134683 4.001280324e-06 6.891229781e-06 4.001280324e-06 -0.0002126913706 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001897736012 -0.000535700178 -1.343569078e-07 -0.000535700178 -0.001746030538 -1.698565531e-06 -1.343569078e-07 -1.698565531e-06 -2.431644e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.075909681e-05 -8.200893249e-05 -1.8010423e-07 -8.200893249e-05 -0.0001430887374 -4.741640761e-08 -1.8010423e-07 -4.741640761e-08 8.622268758e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.743402178e-05 0.0002475819088 1.098093539e-06 0.0002475819088 0.0006915243323 6.021968095e-07 1.098093539e-06 6.021968095e-07 -4.436429683e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.919447094e-05 -0.0001027151382 -3.495367649e-07 -0.0001027151382 -0.0003842880714 -2.452515669e-06 -3.495367649e-07 -2.452515669e-06 -1.399354357e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.984034321e-06 -1.286530625e-06 -9.103542088e-08 -1.286530625e-06 5.550007527e-06 -9.86491905e-08 -9.103542088e-08 -9.86491905e-08 7.569875016e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.864948106e-06 3.412031787e-05 1.317710453e-07 3.412031787e-05 8.496243136e-05 -1.298978813e-07 1.317710453e-07 -1.298978813e-07 -9.339315381e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1035025824 0.004279401123 -0.0003765889404 0 0 0.004279401123 0.05083218837 0.0004842360617 0 0 -0.0003765889404 0.0004842360617 0.1071639333 0 0 0 0 0 0 0 0 0 0 0 0 +0.08639239008 -0.02059659557 0.0001757861693 0 0 -0.02059659557 -0.04593967422 -0.002126699913 0 0 0.0001757861693 -0.002126699913 0.07722411642 0 0 0 0 0 0 0 0 0 0 0 0 +0.01125021855 0.003839441514 3.442733602e-05 0 0 0.003839441514 -0.02134959702 0.0002959320414 0 0 3.442733602e-05 0.0002959320414 0.005162234487 0 0 0 0 0 0 0 0 0 0 0 0 +0.006648987299 0.02550279098 -5.794586681e-05 0 0 0.02550279098 0.06552509961 2.698086064e-05 0 0 -5.794586681e-05 2.698086064e-05 -0.002219733822 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001178538735 -0.003024812413 1.028204369e-06 0 0 -0.003024812413 -0.01066861413 -1.063433664e-05 0 0 1.028204369e-06 -1.063433664e-05 -0.0003870524992 0 0 0 0 0 0 0 0 0 0 0 0 +9.340784271e-05 -0.0008403934819 -7.850210439e-06 0 0 -0.0008403934819 -0.002039781357 3.527687762e-05 0 0 -7.850210439e-06 3.527687762e-05 0.0005547949481 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003256845109 0.00145391674 6.891229781e-06 0 0 0.00145391674 0.003923134683 4.001280324e-06 0 0 6.891229781e-06 4.001280324e-06 -0.0002126913706 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001897736012 -0.000535700178 -1.343569078e-07 0 0 -0.000535700178 -0.001746030538 -1.698565531e-06 0 0 -1.343569078e-07 -1.698565531e-06 -2.431644e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.075909681e-05 -8.200893249e-05 -1.8010423e-07 0 0 -8.200893249e-05 -0.0001430887374 -4.741640761e-08 0 0 -1.8010423e-07 -4.741640761e-08 8.622268758e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.743402178e-05 0.0002475819088 1.098093539e-06 0 0 0.0002475819088 0.0006915243323 6.021968095e-07 0 0 1.098093539e-06 6.021968095e-07 -4.436429683e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.919447094e-05 -0.0001027151382 -3.495367649e-07 0 0 -0.0001027151382 -0.0003842880714 -2.452515669e-06 0 0 -3.495367649e-07 -2.452515669e-06 -1.399354357e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.984034321e-06 -1.286530625e-06 -9.103542088e-08 0 0 -1.286530625e-06 5.550007527e-06 -9.86491905e-08 0 0 -9.103542088e-08 -9.86491905e-08 7.569875016e-06 0 0 0 0 0 0 0 0 0 0 0 0 +3.864948106e-06 3.412031787e-05 1.317710453e-07 0 0 3.412031787e-05 8.496243136e-05 -1.298978813e-07 0 0 1.317710453e-07 -1.298978813e-07 -9.339315381e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.008140804406 -0.00647961175 -6.140374371e-05 0.05470289001 0.0004445621318 -0.00647961175 -0.08505333875 -0.000127074689 -0.003082821554 0.0004954584291 -6.140374371e-05 -0.000127074689 0.005885565704 -2.825887768e-05 0.01260638596 0.05470289001 -0.003082821554 -2.825887768e-05 -0.08890566689 -0.0004572973318 0.0004445621318 0.0004954584291 0.01260638596 -0.0004572973318 -0.1018763127 0.04849303739 0.03801729279 0.0003251020028 -0.02327020007 0.001048109503 0.03801729279 0.050738417 -3.991169172e-05 0.00279468559 -0.0003608016485 0.0003251020028 -3.991169172e-05 0.0107203171 -0.0003374720006 0.03060280785 -0.02327020007 0.00279468559 -0.0003374720006 0.02605289787 -0.001166066846 0.001048109503 -0.0003608016485 0.03060280785 -0.001166066846 0.0648161504 -0.00322859918 0.0286598352 5.602304391e-05 0.02018848973 0.0002962293394 0.0286598352 0.005260255768 4.597260171e-05 -0.03575322004 0.0002037270107 5.602304391e-05 4.597260171e-05 0.004675396968 -6.550257271e-06 0.01047968872 0.02018848973 -0.03575322004 -6.550257271e-06 -0.0478894769 -0.0001633321908 0.0002962293394 0.0002037270107 0.01047968872 -0.0001633321908 0.02341101953 -0.004282516887 -0.005334385343 -4.643487532e-05 0.001650787916 -0.0002110151511 -0.005334385343 0.004304769195 1.060442901e-05 0.008077064319 -4.945749093e-05 -4.643487532e-05 1.060442901e-05 0.0001327396427 5.570076458e-05 -0.0007016145091 0.001650787916 0.008077064319 5.570076458e-05 0.003053617417 0.0002154661595 -0.0002110151511 -4.945749093e-05 -0.0007016145091 0.0002154661595 -0.005650707264 -0.001734186995 -0.002545034636 -1.594657237e-06 -0.003819057254 4.658234655e-09 -0.002545034636 0.004737978897 -4.508726119e-06 0.006556380678 -4.44880326e-05 -1.594657237e-06 -4.508726119e-06 -5.129901953e-05 -2.434611785e-06 -7.453067004e-06 -0.003819057254 0.006556380678 -2.434611785e-06 0.00909292445 -3.10032788e-05 4.658234655e-09 -4.44880326e-05 -7.453067004e-06 -3.10032788e-05 0.0007332754302 +0.001734186995 -0.002545034636 -1.594657237e-06 -0.003819057254 4.658234657e-09 -0.002545034636 0.004737978897 -4.508726119e-06 0.006556380678 -4.44880326e-05 -1.594657237e-06 -4.508726119e-06 -5.129901953e-05 -2.434611785e-06 -7.453067004e-06 -0.003819057254 0.006556380678 -2.434611785e-06 0.00909292445 -3.10032788e-05 4.658234657e-09 -4.44880326e-05 -7.453067004e-06 -3.10032788e-05 0.0007332754302 9.464610016e-05 0.0006099068046 -3.671930161e-06 0.0003010475274 -3.1443611e-05 0.0006099068046 -0.0004015463645 -1.47896665e-07 -0.001102571252 1.505168127e-05 -3.671930161e-06 -1.47896665e-07 6.968662815e-05 2.633222079e-06 0.0002248989177 0.0003010475274 -0.001102571252 2.633222079e-06 -0.001182966697 4.516148889e-05 -3.1443611e-05 1.505168127e-05 0.0002248989177 4.516148889e-05 0.0006391531699 -0.0003019865067 9.06669676e-05 9.893351922e-07 0.0004600964451 5.320773117e-06 9.06669676e-05 -9.663898731e-05 1.062049536e-06 -0.0002063637198 7.4156562e-06 9.893351922e-07 1.062049536e-06 -6.665641428e-06 -3.0969634e-07 -3.714970315e-05 0.0004600964451 -0.0002063637198 -3.0969634e-07 -0.000752533077 -1.967400542e-06 5.320773117e-06 7.4156562e-06 -3.714970315e-05 -1.967400542e-06 -0.0001711816231 0.0001200198143 -7.06117516e-05 3.064080674e-07 -0.000190947555 -6.899967565e-08 -7.06117516e-05 0.0002254312683 -1.932908996e-07 0.0002415497238 2.170056455e-06 3.064080674e-07 -1.932908996e-07 5.798445124e-07 -4.586085706e-07 1.605138844e-05 -0.000190947555 0.0002415497238 -4.586085706e-07 0.0003886668028 1.576886791e-06 -6.899967565e-08 2.170056455e-06 1.605138844e-05 1.576886791e-06 8.683663805e-05 @@ -114,7 +114,7 @@ -6.350998277e-05 -1.770149715e-05 3.725951622e-07 7.487026235e-05 2.33608038e-06 -1.770149715e-05 -5.387624767e-05 8.310284403e-08 -1.60373294e-05 2.019814746e-06 3.725951622e-07 8.310284403e-08 -2.576796064e-06 -2.526651837e-07 -2.040453762e-05 7.487026235e-05 -1.60373294e-05 -2.526651837e-07 -0.0001105560891 -1.542299747e-06 2.33608038e-06 2.019814746e-06 -2.040453762e-05 -1.542299747e-06 -0.0001160887933 -1.504559177e-05 2.278942376e-05 -6.594311844e-08 3.414980431e-05 9.274070042e-07 2.278942376e-05 -1.830000241e-05 2.23449877e-08 -3.697347687e-05 -1.114820338e-06 -6.594311844e-08 2.23449877e-08 4.527260633e-07 6.773806614e-08 2.689233578e-06 3.414980431e-05 -3.697347687e-05 6.773806614e-08 -6.439059241e-05 -2.030032115e-06 9.274070042e-07 -1.114820338e-06 2.689233578e-06 -2.030032115e-06 3.503934451e-06 1.280611557e-05 -1.66010353e-05 1.205971685e-08 -2.364532389e-05 1.051845953e-07 -1.66010353e-05 1.818473109e-05 -1.500750386e-08 3.461904098e-05 2.826702861e-07 1.205971685e-08 -1.500750386e-08 3.838322085e-07 -3.784201703e-08 1.385210747e-06 -2.364532389e-05 3.461904098e-05 -3.784201703e-08 5.07045466e-05 -2.965621893e-08 1.051845953e-07 2.826702861e-07 1.385210747e-06 -2.965621893e-08 -6.024483655e-06 --1.437088443e-05 -5.33718427e-06 3.032664678e-08 1.707498877e-05 4.001381695e-07 -5.33718427e-06 -1.760582276e-05 1.137334137e-08 -3.651892542e-06 2.069790946e-07 3.032664678e-08 1.137334137e-08 -4.964743532e-07 -2.120481705e-08 -4.031223502e-06 1.707498877e-05 -3.651892542e-06 -2.120481705e-08 -2.440555893e-05 -4.130853686e-07 4.001381695e-07 2.069790946e-07 -4.031223502e-06 -4.130853686e-07 -2.920468492e-05 +-1.437088443e-05 -5.33718427e-06 3.032664678e-08 1.707498877e-05 4.001381695e-07 -5.33718427e-06 -1.760582276e-05 1.137334137e-08 -3.651892543e-06 2.069790946e-07 3.032664678e-08 1.137334137e-08 -4.964743532e-07 -2.120481705e-08 -4.031223502e-06 1.707498877e-05 -3.651892543e-06 -2.120481705e-08 -2.440555893e-05 -4.130853686e-07 4.001381695e-07 2.069790946e-07 -4.031223502e-06 -4.130853686e-07 -2.920468492e-05 -0.05480443542 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0681446449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1215489824 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -128,19 +128,19 @@ -4.803296458e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.028299746e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.230491777e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04943128292 -0.01284191103 0.008403256152 -0.01284191103 -0.0008689279631 0.0380744624 0.008403256152 0.0380744624 -0.070413816 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04651168011 -0.01748052665 -0.004678661373 -0.01748052665 0.002362401011 0.04514065562 -0.004678661373 0.04514065562 -0.02074579219 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.00697484269 -0.01382753721 0.00414122093 -0.01382753721 0.03448753745 0.03230808788 0.00414122093 0.03230808788 -0.0162590831 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.004367353784 0.002536416321 0.01459910639 0.002536416321 0.004458363544 -0.006737892998 0.01459910639 -0.006737892998 -0.03409483564 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.749084038e-05 1.445335317e-05 0.0001466008986 1.445335317e-05 0.0002474438892 0.0001596745428 0.0001466008986 0.0001596745428 -2.885890188e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.298319104e-05 -0.0004257573121 -0.0005565644537 -0.0004257573121 0.0001824938862 0.0007899527349 -0.0005565644537 0.0007899527349 0.0009100079043 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001430606763 9.532854979e-05 0.0006030138557 9.532854979e-05 0.0003794769696 -0.0002113803875 0.0006030138557 -0.0002113803875 -0.001390398311 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.964103999e-05 -6.346932936e-05 -0.0001027604049 -6.346932936e-05 9.375623335e-05 0.0001543789218 -0.0001027604049 0.0001543789218 0.0002421387692 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.327939962e-05 2.351863783e-06 -2.429325891e-05 2.351863783e-06 -6.304556408e-05 -7.919200527e-06 -2.429325891e-05 -7.919200527e-06 1.721627928e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.475899927e-06 1.073089216e-05 7.36174111e-05 1.073089216e-05 7.051772359e-05 -2.025366711e-05 7.36174111e-05 -2.025366711e-05 -0.0001636734125 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.144176588e-05 -1.927589756e-05 -3.335935688e-05 -1.927589756e-05 3.55729346e-05 5.64273589e-05 -3.335935688e-05 5.64273589e-05 9.209591953e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.875679845e-06 8.813814742e-06 1.126800322e-05 8.813814742e-06 -1.548330173e-05 -2.017703164e-05 1.126800322e-05 -2.017703164e-05 -3.114885391e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.768785748e-06 -3.088979588e-07 7.569735157e-06 -3.088979588e-07 1.763392532e-05 3.895327946e-06 7.569735157e-06 3.895327946e-06 -1.294285491e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04943128292 -0.01284191103 0.008403256152 0 0 -0.01284191103 -0.0008689279631 0.0380744624 0 0 0.008403256152 0.0380744624 -0.070413816 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04651168011 -0.01748052665 -0.004678661373 0 0 -0.01748052665 0.002362401011 0.04514065562 0 0 -0.004678661373 0.04514065562 -0.02074579219 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00697484269 -0.01382753721 0.00414122093 0 0 -0.01382753721 0.03448753745 0.03230808788 0 0 0.00414122093 0.03230808788 -0.0162590831 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004367353784 0.002536416321 0.01459910639 0 0 0.002536416321 0.004458363544 -0.006737892998 0 0 0.01459910639 -0.006737892998 -0.03409483564 0 0 0 0 0 0 0 0 0 0 0 0 +-8.749084038e-05 1.445335317e-05 0.0001466008986 0 0 1.445335317e-05 0.0002474438892 0.0001596745428 0 0 0.0001466008986 0.0001596745428 -2.885890188e-05 0 0 0 0 0 0 0 0 0 0 0 0 +9.298319104e-05 -0.0004257573121 -0.0005565644537 0 0 -0.0004257573121 0.0001824938862 0.0007899527349 0 0 -0.0005565644537 0.0007899527349 0.0009100079043 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001430606763 9.532854979e-05 0.0006030138557 0 0 9.532854979e-05 0.0003794769696 -0.0002113803875 0 0 0.0006030138557 -0.0002113803875 -0.001390398311 0 0 0 0 0 0 0 0 0 0 0 0 +3.964103999e-05 -6.346932936e-05 -0.0001027604049 0 0 -6.346932936e-05 9.375623335e-05 0.0001543789218 0 0 -0.0001027604049 0.0001543789218 0.0002421387692 0 0 0 0 0 0 0 0 0 0 0 0 +-2.327939962e-05 2.351863783e-06 -2.429325891e-05 0 0 2.351863783e-06 -6.304556408e-05 -7.919200527e-06 0 0 -2.429325891e-05 -7.919200527e-06 1.721627928e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.475899927e-06 1.073089216e-05 7.36174111e-05 0 0 1.073089216e-05 7.051772359e-05 -2.025366711e-05 0 0 7.36174111e-05 -2.025366711e-05 -0.0001636734125 0 0 0 0 0 0 0 0 0 0 0 0 +1.144176588e-05 -1.927589756e-05 -3.335935688e-05 0 0 -1.927589756e-05 3.55729346e-05 5.64273589e-05 0 0 -3.335935688e-05 5.64273589e-05 9.209591953e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-6.875679845e-06 8.813814742e-06 1.126800322e-05 0 0 8.813814742e-06 -1.548330173e-05 -2.017703164e-05 0 0 1.126800322e-05 -2.017703164e-05 -3.114885391e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.768785748e-06 -3.088979588e-07 7.569735157e-06 0 0 -3.088979588e-07 1.763392532e-05 3.895327946e-06 0 0 7.569735157e-06 3.895327946e-06 -1.294285491e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.007820689747 -0.03991387146 0.01450847266 -0.08162166789 -0.08177022732 -0.03991387146 0.07987327826 0.06679485888 -0.007477281815 0.006599603439 0.01450847266 0.06679485888 -0.03742880982 -0.00840449957 -0.01600993006 -0.08162166789 -0.007477281815 -0.00840449957 0.09643937339 -0.01305739279 -0.08177022732 0.006599603439 -0.01600993006 -0.01305739279 0.01666321911 -0.02738025336 -0.01186015009 0.02495981012 -0.03085579324 -0.006095526439 -0.01186015009 0.0232918371 0.01519437011 0.006853674829 0.02568876652 0.02495981012 0.01519437011 -0.0485832271 0.0066080838 -0.002137883347 -0.03085579324 0.006853674829 0.0066080838 0.01772224145 -0.02799808167 -0.006095526439 0.02568876652 -0.002137883347 -0.02799808167 -0.05416199372 -0.002094860068 0.00678617025 0.01436406504 -0.003227270813 -0.01068190474 0.00678617025 0.003172570203 0.00428033135 0.006466858939 -0.003706261555 0.01436406504 0.00428033135 -0.007824459521 0.003586029671 -0.01796554589 -0.003227270813 0.006466858939 0.003586029671 -0.007162232238 -0.01320392611 -0.01068190474 -0.003706261555 -0.01796554589 -0.01320392611 0.01458733183 @@ -153,7 +153,7 @@ 5.666102563e-05 2.753286921e-05 2.985401827e-05 1.058530698e-05 -0.0001029167915 2.753286921e-05 3.258562416e-05 4.1520469e-05 8.341141445e-06 -7.332129177e-05 2.985401827e-05 4.1520469e-05 4.896899781e-05 1.030681871e-05 -8.624859109e-05 1.058530698e-05 8.341141445e-06 1.030681871e-05 2.275132109e-05 -2.394229654e-05 -0.0001029167915 -7.332129177e-05 -8.624859109e-05 -2.394229654e-05 0.0002071602201 -4.224476971e-06 2.7830794e-07 6.863631842e-06 -2.932761839e-06 -4.77593692e-07 2.7830794e-07 5.488845576e-08 -6.945104416e-07 4.651238675e-06 3.943441674e-06 6.863631842e-06 -6.945104416e-07 -6.398847085e-06 3.593115927e-06 -1.540220274e-06 -2.932761839e-06 4.651238675e-06 3.593115927e-06 2.080890218e-06 -9.433498377e-06 -4.77593692e-07 3.943441674e-06 -1.540220274e-06 -9.433498377e-06 -1.226652205e-05 -5.04219932e-06 -1.062492374e-05 -1.431870596e-05 -1.743497881e-05 9.058325129e-06 -1.062492374e-05 4.453977204e-08 -5.104833172e-06 -1.067922143e-05 1.299488588e-05 -1.431870596e-05 -5.104833172e-06 -1.849306691e-05 -1.712781809e-05 2.450801519e-05 -1.743497881e-05 -1.067922143e-05 -1.712781809e-05 -2.976290024e-06 2.43453656e-05 9.058325129e-06 1.299488588e-05 2.450801519e-05 2.43453656e-05 -2.702865291e-05 -1.066615961e-05 1.518620445e-06 3.726056597e-06 -7.833181766e-07 -1.879546818e-05 1.518620445e-06 7.2749525e-06 8.687450703e-06 4.441448869e-07 -9.854433439e-06 3.726056597e-06 8.687450703e-06 8.556847805e-06 2.374165517e-06 -1.258408544e-05 -7.833181766e-07 4.441448869e-07 2.374165517e-06 1.161169799e-05 -3.142905118e-06 -1.879546818e-05 -9.854433439e-06 -1.258408544e-05 -3.142905118e-06 3.069483436e-05 +1.066615961e-05 1.518620445e-06 3.726056596e-06 -7.833181766e-07 -1.879546818e-05 1.518620445e-06 7.2749525e-06 8.687450703e-06 4.441448869e-07 -9.854433439e-06 3.726056596e-06 8.687450703e-06 8.556847805e-06 2.374165517e-06 -1.258408544e-05 -7.833181766e-07 4.441448869e-07 2.374165517e-06 1.161169799e-05 -3.142905118e-06 -1.879546818e-05 -9.854433439e-06 -1.258408544e-05 -3.142905118e-06 3.069483436e-05 -0.05398129379 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.06409762874 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1195814608 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -167,19 +167,19 @@ -7.185551393e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.939399669e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.954799427e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04906425904 -0.01313470465 -0.007487400731 -0.01313470465 -0.0005580272116 -0.04032892138 -0.007487400731 -0.04032892138 -0.06887768653 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04906576079 -0.0169650906 0.004916863171 -0.0169650906 -0.00411136203 -0.04196355994 0.004916863171 -0.04196355994 -0.02205519108 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.007602242605 -0.01568541018 -0.001497341711 -0.01568541018 0.03569870821 -0.03639316884 -0.001497341711 -0.03639316884 -0.01129778627 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.004460640329 0.001526405278 -0.01480737493 0.001526405278 0.007221678582 0.004369070376 -0.01480737493 0.004369070376 -0.03444903807 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0005879435627 0.0005563241479 -0.001157227793 0.0005563241479 -0.0005587804915 0.001113723208 -0.001157227793 0.001113723208 -0.002434674044 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001215100313 -0.000402403737 0.0005946924061 -0.000402403737 0.0001076791231 -0.00070773729 0.0005946924061 -0.00070773729 0.0009339281258 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.506148099e-05 -4.03473708e-05 -0.0004370065456 -4.03473708e-05 0.0006075888145 -0.0001128273309 -0.0004370065456 -0.0001128273309 -0.0009770856227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.850866183e-06 -1.14650151e-05 1.371207755e-05 -1.14650151e-05 9.088490878e-06 -2.907465273e-05 1.371207755e-05 -2.907465273e-05 1.699244735e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.985694285e-05 2.281278381e-05 -1.313621992e-05 2.281278381e-05 -8.377527999e-05 6.085076002e-05 -1.313621992e-05 6.085076002e-05 -7.242171344e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.073765458e-06 -1.763965192e-05 -2.953591216e-05 -1.763965192e-05 0.0001164372202 -5.156259222e-05 -2.953591216e-05 -5.156259222e-05 -5.028050507e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.994970064e-06 -1.092304192e-05 2.279201583e-05 -1.092304192e-05 1.500522549e-05 -3.517412909e-05 2.279201583e-05 -3.517412909e-05 6.245483515e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.111092668e-06 1.298828317e-05 -2.058918285e-05 1.298828317e-05 -1.777290392e-05 3.020852936e-05 -2.058918285e-05 3.020852936e-05 -5.273115694e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.875357372e-06 -4.863721177e-06 1.797364097e-08 -4.863721177e-06 2.455389363e-05 -1.552953807e-05 1.797364097e-08 -1.552953807e-05 6.767697932e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04906425904 -0.01313470465 -0.007487400731 0 0 -0.01313470465 -0.0005580272116 -0.04032892138 0 0 -0.007487400731 -0.04032892138 -0.06887768653 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04906576079 -0.0169650906 0.004916863171 0 0 -0.0169650906 -0.00411136203 -0.04196355994 0 0 0.004916863171 -0.04196355994 -0.02205519108 0 0 0 0 0 0 0 0 0 0 0 0 +-0.007602242605 -0.01568541018 -0.001497341711 0 0 -0.01568541018 0.03569870821 -0.03639316884 0 0 -0.001497341711 -0.03639316884 -0.01129778627 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004460640329 0.001526405278 -0.01480737493 0 0 0.001526405278 0.007221678582 0.004369070376 0 0 -0.01480737493 0.004369070376 -0.03444903807 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005879435627 0.0005563241479 -0.001157227793 0 0 0.0005563241479 -0.0005587804915 0.001113723208 0 0 -0.001157227793 0.001113723208 -0.002434674044 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001215100313 -0.000402403737 0.0005946924061 0 0 -0.000402403737 0.0001076791231 -0.00070773729 0 0 0.0005946924061 -0.00070773729 0.0009339281258 0 0 0 0 0 0 0 0 0 0 0 0 +-7.506148099e-05 -4.03473708e-05 -0.0004370065456 0 0 -4.03473708e-05 0.0006075888145 -0.0001128273309 0 0 -0.0004370065456 -0.0001128273309 -0.0009770856227 0 0 0 0 0 0 0 0 0 0 0 0 +-7.850866183e-06 -1.14650151e-05 1.371207755e-05 0 0 -1.14650151e-05 9.088490878e-06 -2.907465273e-05 0 0 1.371207755e-05 -2.907465273e-05 1.699244735e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.985694285e-05 2.281278381e-05 -1.313621992e-05 0 0 2.281278381e-05 -8.377527999e-05 6.085076002e-05 0 0 -1.313621992e-05 6.085076002e-05 -7.242171344e-05 0 0 0 0 0 0 0 0 0 0 0 0 +9.073765458e-06 -1.763965192e-05 -2.953591216e-05 0 0 -1.763965192e-05 0.0001164372202 -5.156259222e-05 0 0 -2.953591216e-05 -5.156259222e-05 -5.028050507e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.994970064e-06 -1.092304192e-05 2.279201583e-05 0 0 -1.092304192e-05 1.500522549e-05 -3.517412909e-05 0 0 2.279201583e-05 -3.517412909e-05 6.245483515e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-9.111092668e-06 1.298828317e-05 -2.058918285e-05 0 0 1.298828317e-05 -1.777290392e-05 3.020852936e-05 0 0 -2.058918285e-05 3.020852936e-05 -5.273115694e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.875357372e-06 -4.863721177e-06 1.797364097e-08 0 0 -4.863721177e-06 2.455389363e-05 -1.552953807e-05 0 0 1.797364097e-08 -1.552953807e-05 6.767697932e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.008949853374 -0.04167919334 -0.01415156616 -0.08200291815 0.08445178928 -0.04167919334 0.08068573867 -0.06813272198 -0.008138775956 -0.006260511384 -0.01415156616 -0.06813272198 -0.03540100021 0.007858888574 -0.01580283228 -0.08200291815 -0.008138775956 0.007858888574 0.101138908 0.01367446449 0.08445178928 -0.006260511384 -0.01580283228 0.01367446449 0.01684190074 -0.02743657337 -0.01472360562 -0.02427263437 -0.03290588845 0.006349233984 -0.01472360562 0.02586512291 -0.01762089566 0.006131041864 -0.02761146662 -0.02427263437 -0.01762089566 -0.04901842436 -0.00671494654 -0.0007050572726 -0.03290588845 0.006131041864 -0.00671494654 0.02294597752 0.02651677821 0.006349233984 -0.02761146662 -0.0007050572726 0.02651677821 -0.05779387338 -0.003626310274 0.006020512555 -0.01514550225 -0.003598802364 0.009213015553 0.006020512555 0.003207140516 -0.004477237432 0.006921798557 0.001265185687 -0.01514550225 -0.004477237432 -0.008621920165 -0.005342704337 -0.01747780017 -0.003598802364 0.006921798557 -0.005342704337 -0.004853393374 0.01446980429 0.009213015553 0.001265185687 -0.01747780017 0.01446980429 0.009415265962 @@ -190,6 +190,6 @@ -8.83139063e-05 2.126285138e-05 -5.818490428e-06 -9.233553749e-05 -4.463906854e-05 2.126285138e-05 -8.720725768e-06 5.204023605e-05 -6.572349201e-06 -4.886085562e-06 -5.818490428e-06 5.204023605e-05 -0.0001799856708 0.000121502993 6.373449932e-05 -9.233553749e-05 -6.572349201e-06 0.000121502993 -0.000213093983 -5.377974625e-05 -4.463906854e-05 -4.886085562e-06 6.373449932e-05 -5.377974625e-05 -7.33594333e-05 -6.085652489e-05 -7.451894569e-05 0.0001257198014 -0.000126192859 -0.0001131107588 -7.451894569e-05 -2.086413163e-05 6.287578998e-05 -9.138894766e-05 -0.000101930081 0.0001257198014 6.287578998e-05 -0.0001537476323 0.0001551605487 0.0002055444574 -0.000126192859 -9.138894766e-05 0.0001551605487 -8.505125561e-05 -0.0002091894034 -0.0001131107588 -0.000101930081 0.0002055444574 -0.0002091894034 -0.0002287534653 5.735945999e-05 3.075568699e-05 -4.054028198e-05 2.372365866e-05 0.0001035447346 3.075568699e-05 3.059898212e-05 -4.315726449e-05 1.709057401e-05 7.248227566e-05 -4.054028198e-05 -4.315726449e-05 5.955484778e-05 -2.792032753e-05 -9.699095588e-05 2.372365866e-05 1.709057401e-05 -2.792032753e-05 3.590465931e-05 4.641558126e-05 0.0001035447346 7.248227566e-05 -9.699095588e-05 4.641558126e-05 0.0002007991868 --6.689736863e-06 6.693400265e-07 -8.365261577e-06 -3.42309452e-06 -5.457080131e-07 6.693400265e-07 3.040360726e-07 4.290970137e-07 6.260883489e-06 -4.095058235e-06 -8.365261577e-06 4.290970137e-07 -7.151453653e-06 -5.186038867e-06 -2.379175049e-06 -3.42309452e-06 6.260883489e-06 -5.186038867e-06 1.9209584e-06 1.234539234e-05 -5.457080131e-07 -4.095058235e-06 -2.379175049e-06 1.234539234e-05 -1.484270416e-05 +-6.689736863e-06 6.693400265e-07 -8.365261578e-06 -3.42309452e-06 -5.457080131e-07 6.693400265e-07 3.040360726e-07 4.290970137e-07 6.260883489e-06 -4.095058235e-06 -8.365261578e-06 4.290970137e-07 -7.151453653e-06 -5.186038867e-06 -2.379175049e-06 -3.42309452e-06 6.260883489e-06 -5.186038867e-06 1.9209584e-06 1.234539234e-05 -5.457080131e-07 -4.095058235e-06 -2.379175049e-06 1.234539234e-05 -1.484270416e-05 -3.052055348e-06 -1.124698297e-05 1.716828034e-05 -1.934945513e-05 -6.996865542e-06 -1.124698297e-05 8.602933241e-07 5.050156291e-06 -1.364842669e-05 -1.146374649e-05 1.716828034e-05 5.050156291e-06 -2.001469629e-05 2.23118278e-05 2.619122009e-05 -1.934945513e-05 -1.364842669e-05 2.23118278e-05 -5.937783424e-06 -2.978740215e-05 -6.996865542e-06 -1.146374649e-05 2.619122009e-05 -2.978740215e-05 -2.133038525e-05 1.039342368e-05 2.179205882e-06 -5.528179057e-06 1.054053757e-06 1.878116505e-05 2.179205882e-06 6.757956945e-06 -8.659978788e-06 1.858227085e-06 9.713828268e-06 -5.528179057e-06 -8.659978788e-06 9.816125929e-06 -4.985789677e-06 -1.413296005e-05 1.054053757e-06 1.858227085e-06 -4.985789677e-06 1.320391771e-05 6.749074483e-06 1.878116505e-05 9.713828268e-06 -1.413296005e-05 6.749074483e-06 2.939884523e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_1_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_1_ref.dat index 2b0eb7553d..e4b9c52648 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_1_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_1_ref.dat @@ -11,19 +11,19 @@ -7.503563086e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.37327294e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.555512044e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001706951337 -0.1369109273 9.009971924e-06 -0.1369109273 -0.005204835119 -4.658134791e-05 9.009971924e-06 -4.658134791e-05 4.006064837e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005050085555 -0.1193094864 1.479398351e-05 -0.1193094864 -0.002814053901 -0.0004889411674 1.479398351e-05 -0.0004889411674 0.0001411412925 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.004292092589 -0.04183467407 4.446363152e-07 -0.04183467407 -0.0005773426581 -0.0002480264309 4.446363152e-07 -0.0002480264309 0.0001191968565 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00179471849 -0.004835841726 -3.832831543e-06 -0.004835841726 -1.376274616e-05 -3.727549943e-05 -3.832831543e-06 -3.727549943e-05 4.460469879e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0005056906269 0.0009444371038 9.637938651e-07 0.0009444371038 4.280758815e-05 2.613623416e-06 9.637938651e-07 2.613623416e-06 1.009948248e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.299191605e-05 0.001054095885 1.321694466e-07 0.001054095885 2.718957857e-05 3.848377572e-06 1.321694466e-07 3.848377572e-06 8.587337432e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.656708709e-05 0.0003025206566 -4.508162986e-07 0.0003025206566 6.321992174e-06 1.263241123e-06 -4.508162986e-07 1.263241123e-06 -1.640072027e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.512298476e-05 7.199258177e-05 -2.102790264e-07 7.199258177e-05 -3.071282775e-07 3.956223851e-07 -2.102790264e-07 3.956223851e-07 -5.182832901e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.026917719e-05 -0.000104083333 -6.983290105e-08 -0.000104083333 -1.696145896e-06 -4.689613656e-07 -6.983290105e-08 -4.689613656e-07 -1.865531112e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.17424973e-06 -1.687201478e-05 3.62288348e-09 -1.687201478e-05 -7.05870864e-07 -6.172083234e-08 3.62288348e-09 -6.172083234e-08 3.92679159e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.323616829e-06 -2.460670684e-05 2.076755228e-08 -2.460670684e-05 -5.35163836e-07 -8.768411471e-08 2.076755228e-08 -8.768411471e-08 3.46553764e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.918001675e-06 6.543203885e-06 6.758775939e-09 6.543203885e-06 5.667353531e-08 4.619587068e-08 6.758775939e-09 4.619587068e-08 1.242840243e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.781308e-07 -2.915306285e-06 -8.659919986e-10 -2.915306285e-06 -1.623550587e-07 2.580816572e-08 -8.659919986e-10 2.580816572e-08 -6.734345925e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001706951337 -0.1369109273 9.009971924e-06 0 0 -0.1369109273 -0.005204835119 -4.658134791e-05 0 0 9.009971924e-06 -4.658134791e-05 4.006064837e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.005050085555 -0.1193094864 1.479398351e-05 0 0 -0.1193094864 -0.002814053901 -0.0004889411674 0 0 1.479398351e-05 -0.0004889411674 0.0001411412925 0 0 0 0 0 0 0 0 0 0 0 0 +0.004292092589 -0.04183467407 4.446363152e-07 0 0 -0.04183467407 -0.0005773426581 -0.0002480264309 0 0 4.446363152e-07 -0.0002480264309 0.0001191968565 0 0 0 0 0 0 0 0 0 0 0 0 +0.00179471849 -0.004835841726 -3.832831543e-06 0 0 -0.004835841726 -1.376274616e-05 -3.727549943e-05 0 0 -3.832831543e-06 -3.727549943e-05 4.460469879e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0005056906269 0.0009444371038 9.637938651e-07 0 0 0.0009444371038 4.280758815e-05 2.613623416e-06 0 0 9.637938651e-07 2.613623416e-06 1.009948248e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.299191605e-05 0.001054095885 1.321694466e-07 0 0 0.001054095885 2.718957857e-05 3.848377572e-06 0 0 1.321694466e-07 3.848377572e-06 8.587337432e-09 0 0 0 0 0 0 0 0 0 0 0 0 +-8.656708709e-05 0.0003025206566 -4.508162986e-07 0 0 0.0003025206566 6.321992174e-06 1.263241123e-06 0 0 -4.508162986e-07 1.263241123e-06 -1.640072027e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-5.512298476e-05 7.199258177e-05 -2.102790264e-07 0 0 7.199258177e-05 -3.071282775e-07 3.956223851e-07 0 0 -2.102790264e-07 3.956223851e-07 -5.182832901e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.026917719e-05 -0.000104083333 -6.983290105e-08 0 0 -0.000104083333 -1.696145896e-06 -4.689613656e-07 0 0 -6.983290105e-08 -4.689613656e-07 -1.865531112e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.17424973e-06 -1.687201478e-05 3.62288348e-09 0 0 -1.687201478e-05 -7.05870864e-07 -6.172083234e-08 0 0 3.62288348e-09 -6.172083234e-08 3.92679159e-08 0 0 0 0 0 0 0 0 0 0 0 0 +6.323616829e-06 -2.460670684e-05 2.076755228e-08 0 0 -2.460670684e-05 -5.35163836e-07 -8.768411471e-08 0 0 2.076755228e-08 -8.768411471e-08 3.46553764e-09 0 0 0 0 0 0 0 0 0 0 0 0 +1.918001675e-06 6.543203885e-06 6.758775939e-09 0 0 6.543203885e-06 5.667353531e-08 4.619587068e-08 0 0 6.758775939e-09 4.619587068e-08 1.242840243e-08 0 0 0 0 0 0 0 0 0 0 0 0 +2.781308e-07 -2.915306285e-06 -8.659919986e-10 0 0 -2.915306285e-06 -1.623550587e-07 2.580816572e-08 0 0 -8.659919986e-10 2.580816572e-08 -6.734345925e-09 0 0 0 0 0 0 0 0 0 0 0 0 0.0009666366106 -0.02920220629 -2.156628244e-06 -0.001216217849 -6.425425263e-05 -0.02920220629 -0.001807286564 -0.0001554273313 0.0005766064191 0.0001312769581 -2.156628244e-06 -0.0001554273313 -7.806429817e-06 2.335781847e-06 0.0004859419488 -0.001216217849 0.0005766064191 2.335781847e-06 0.001485363589 2.948930448e-06 -6.425425263e-05 0.0001312769581 0.0004859419488 2.948930448e-06 -0.001313373875 0.001927081974 -0.04091111152 2.054101811e-06 -0.002053049812 -0.0001017777432 -0.04091111152 -0.003156810627 -0.0001032912443 0.0004538927657 1.689955156e-05 2.054101811e-06 -0.0001032912443 -2.959667472e-05 -2.928601336e-06 0.0007265879236 -0.002053049812 0.0004538927657 -2.928601336e-06 0.002055186012 -5.788482763e-07 -0.0001017777432 1.689955156e-05 0.0007265879236 -5.788482763e-07 -0.001950053334 0.001547742082 -0.02293387717 8.738783797e-06 -0.00126559075 -7.28083827e-05 -0.02293387717 -0.002100297683 4.386448195e-06 9.50313839e-07 -6.340697359e-05 8.738783797e-06 4.386448195e-06 -2.870541372e-05 -5.655475728e-06 0.0003389084188 -0.00126559075 9.50313839e-07 -5.655475728e-06 0.0008647350111 -2.464158916e-06 -7.28083827e-05 -6.340697359e-05 0.0003389084188 -2.464158916e-06 -0.0009014106162 @@ -50,19 +50,19 @@ 3.207632518e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.190701913e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.522450492e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01076705871 -0.128440298 0.001822411986 -0.128440298 0.05901606419 0.0003550968694 0.001822411986 0.0003550968694 -0.04909293626 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01175265199 0.03931575632 -0.0009144747494 0.03931575632 0.05467516226 -0.001245606383 -0.0009144747494 -0.001245606383 -0.03826530695 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.39120316e-05 -0.04339339098 -0.0002391831012 -0.04339339098 9.180166319e-05 -4.756776528e-05 -0.0002391831012 -4.756776528e-05 -0.001974961713 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002948468342 -0.0328010321 2.601571872e-05 -0.0328010321 -0.0010082923 -0.0001310939526 2.601571872e-05 -0.0001310939526 -0.0001233178634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0009181592711 -0.003587878375 7.923233214e-06 -0.003587878375 -0.0002412393554 -1.37897192e-05 7.923233214e-06 -1.37897192e-05 0.0002504648356 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001352883502 -0.0004725670193 -1.399200076e-05 -0.0004725670193 -0.0002883976605 8.084002555e-06 -1.399200076e-05 8.084002555e-06 0.0001358405314 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001714599394 -0.00066207167 -7.360062579e-06 -0.00066207167 -3.546576805e-05 -2.138329426e-07 -7.360062579e-06 -2.138329426e-07 -1.284397157e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.94057763e-06 -3.978119532e-05 1.632149715e-06 -3.978119532e-05 5.965387505e-05 -1.741929019e-06 1.632149715e-06 -1.741929019e-06 -3.514525793e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.763512814e-05 -0.0002417509795 1.847626261e-06 -0.0002417509795 -3.071766437e-05 2.889996563e-07 1.847626261e-06 2.889996563e-07 2.790155094e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.251134413e-05 -9.343975407e-05 -2.321602706e-06 -9.343975407e-05 -3.529629171e-05 1.592908972e-06 -2.321602706e-06 1.592908972e-06 1.183516982e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.442973239e-07 1.174062743e-05 -7.002911299e-07 1.174062743e-05 -7.184068146e-06 8.395735696e-07 -7.002911299e-07 8.395735696e-07 -3.030404866e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.740283218e-06 -4.082351401e-05 4.153150121e-07 -4.082351401e-05 1.338622606e-06 4.524819379e-08 4.153150121e-07 4.524819379e-08 -3.686907531e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.219075548e-06 -1.599564567e-05 1.687246645e-07 -1.599564567e-05 -5.184833223e-06 3.328232808e-07 1.687246645e-07 3.328232808e-07 4.017942444e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01076705871 -0.128440298 0.001822411986 0 0 -0.128440298 0.05901606419 0.0003550968694 0 0 0.001822411986 0.0003550968694 -0.04909293626 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01175265199 0.03931575632 -0.0009144747494 0 0 0.03931575632 0.05467516226 -0.001245606383 0 0 -0.0009144747494 -0.001245606383 -0.03826530695 0 0 0 0 0 0 0 0 0 0 0 0 +5.39120316e-05 -0.04339339098 -0.0002391831012 0 0 -0.04339339098 9.180166319e-05 -4.756776528e-05 0 0 -0.0002391831012 -4.756776528e-05 -0.001974961713 0 0 0 0 0 0 0 0 0 0 0 0 +0.002948468342 -0.0328010321 2.601571872e-05 0 0 -0.0328010321 -0.0010082923 -0.0001310939526 0 0 2.601571872e-05 -0.0001310939526 -0.0001233178634 0 0 0 0 0 0 0 0 0 0 0 0 +0.0009181592711 -0.003587878375 7.923233214e-06 0 0 -0.003587878375 -0.0002412393554 -1.37897192e-05 0 0 7.923233214e-06 -1.37897192e-05 0.0002504648356 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001352883502 -0.0004725670193 -1.399200076e-05 0 0 -0.0004725670193 -0.0002883976605 8.084002555e-06 0 0 -1.399200076e-05 8.084002555e-06 0.0001358405314 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001714599394 -0.00066207167 -7.360062578e-06 0 0 -0.00066207167 -3.546576805e-05 -2.138329426e-07 0 0 -7.360062578e-06 -2.138329426e-07 -1.284397157e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.94057763e-06 -3.978119532e-05 1.632149715e-06 0 0 -3.978119532e-05 5.965387505e-05 -1.741929019e-06 0 0 1.632149715e-06 -1.741929019e-06 -3.514525793e-05 0 0 0 0 0 0 0 0 0 0 0 0 +6.763512814e-05 -0.0002417509795 1.847626261e-06 0 0 -0.0002417509795 -3.071766437e-05 2.889996563e-07 0 0 1.847626261e-06 2.889996563e-07 2.790155094e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.251134413e-05 -9.343975407e-05 -2.321602706e-06 0 0 -9.343975407e-05 -3.529629171e-05 1.592908972e-06 0 0 -2.321602706e-06 1.592908972e-06 1.183516982e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.442973239e-07 1.174062743e-05 -7.002911299e-07 0 0 1.174062743e-05 -7.184068146e-06 8.395735696e-07 0 0 -7.002911299e-07 8.395735696e-07 -3.030404866e-06 0 0 0 0 0 0 0 0 0 0 0 0 +4.740283218e-06 -4.082351401e-05 4.153150121e-07 0 0 -4.082351401e-05 1.338622606e-06 4.524819379e-08 0 0 4.153150121e-07 4.524819379e-08 -3.686907531e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.219075548e-06 -1.599564567e-05 1.687246645e-07 0 0 -1.599564567e-05 -5.184833223e-06 3.328232808e-07 0 0 1.687246645e-07 3.328232808e-07 4.017942444e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.005734499467 -0.01191796063 0.001691293545 0.06212881891 0.0002084279761 -0.01191796063 0.07483445291 5.251018877e-05 -0.2044103718 -0.001761279274 0.001691293545 5.251018877e-05 -0.05879290024 -0.001777543104 -0.2115964554 0.06212881891 -0.2044103718 -0.001777543104 -0.10530044 9.03486533e-05 0.0002084279761 -0.001761279274 -0.2115964554 9.03486533e-05 0.08262890454 -0.01567993393 0.09326383927 -0.001327382362 0.03975075087 -0.0006180661911 0.09326383927 0.1019962921 -0.002214738001 -0.07107798929 0.001630418828 -0.001327382362 -0.002214738001 -0.0699942275 0.0009962795247 -0.08826270691 0.03975075087 -0.07107798929 0.0009962795247 -0.02568448724 0.0001412124887 -0.0006180661911 0.001630418828 -0.08826270691 0.0001412124887 0.02233646722 -0.004073208025 0.02930019632 -0.0007367336222 0.001160329559 0.0001572100436 0.02930019632 0.01382083723 0.0002044359807 -0.01421597646 0.0002629758334 -0.0007367336222 0.0002044359807 -0.01129275442 0.0003594412542 -0.01571709623 0.001160329559 -0.01421597646 0.0003594412542 -1.712474787e-05 8.135059686e-06 0.0001572100436 0.0002629758334 -0.01571709623 8.135059686e-06 -0.0005988689753 @@ -89,19 +89,19 @@ -1.075367366e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.289049006e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.489014166e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08827889513 -0.02112221848 0.000104718145 -0.02112221848 -0.01725784862 2.445658146e-05 0.000104718145 2.445658146e-05 0.001198609045 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.05453808352 0.02240889675 0.0002221551583 0.02240889675 0.003879958515 0.0001129830516 0.0002221551583 0.0001129830516 0.000907580081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004118790065 -9.803337105e-05 3.088096386e-07 -9.803337105e-05 -0.003702901436 1.596015777e-06 3.088096386e-07 1.596015777e-06 -3.678693816e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003513289216 0.003341603277 9.133568173e-06 0.003341603277 0.003252263937 5.699915617e-06 9.133568173e-06 5.699915617e-06 3.154706159e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002271655457 -0.0003032187804 2.627679579e-07 -0.0003032187804 -0.0004037840894 4.665045608e-07 2.627679579e-07 4.665045608e-07 -5.011754325e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.554989517e-05 0.0003317096982 1.874779446e-06 0.0003317096982 0.0005988252982 1.840454259e-06 1.874779446e-06 1.840454259e-06 -7.781069501e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.474957961e-06 -1.126886506e-05 -1.227499107e-07 -1.126886506e-05 -3.285411326e-05 -8.189821437e-08 -1.227499107e-07 -8.189821437e-08 -1.074460017e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.308710888e-05 5.603503126e-05 -8.499004988e-08 5.603503126e-05 5.00182962e-05 -2.920499674e-09 -8.499004988e-08 -2.920499674e-09 -3.620050406e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.662035851e-05 -1.611463553e-05 -3.510885396e-09 -1.611463553e-05 1.489692608e-05 2.989793324e-08 -3.510885396e-09 2.989793324e-08 -8.049233815e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.1736006e-05 -3.16010602e-05 1.069744696e-07 -3.16010602e-05 -1.832644506e-05 1.613058813e-07 1.069744696e-07 1.613058813e-07 -6.999874903e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.829110256e-06 -6.143862852e-06 2.053940454e-08 -6.143862852e-06 -2.580972764e-06 6.58747824e-08 2.053940454e-08 6.58747824e-08 -3.682310165e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.836594531e-06 -4.527308076e-07 -9.601252916e-09 -4.527308076e-07 7.220333402e-07 1.81206558e-08 -9.601252916e-09 1.81206558e-08 -2.814659315e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.339048591e-06 -5.74397588e-06 8.419576152e-09 -5.74397588e-06 -2.528662567e-06 3.108337914e-08 8.419576152e-09 3.108337914e-08 -3.138331696e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08827889513 -0.02112221848 0.000104718145 0 0 -0.02112221848 -0.01725784862 2.445658146e-05 0 0 0.000104718145 2.445658146e-05 0.001198609045 0 0 0 0 0 0 0 0 0 0 0 0 +0.05453808352 0.02240889675 0.0002221551583 0 0 0.02240889675 0.003879958515 0.0001129830516 0 0 0.0002221551583 0.0001129830516 0.000907580081 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004118790065 -9.803337105e-05 3.088096386e-07 0 0 -9.803337105e-05 -0.003702901436 1.596015777e-06 0 0 3.088096386e-07 1.596015777e-06 -3.678693816e-07 0 0 0 0 0 0 0 0 0 0 0 0 +0.003513289216 0.003341603277 9.133568173e-06 0 0 0.003341603277 0.003252263937 5.699915617e-06 0 0 9.133568173e-06 5.699915617e-06 3.154706159e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002271655457 -0.0003032187804 2.627679579e-07 0 0 -0.0003032187804 -0.0004037840894 4.665045608e-07 0 0 2.627679579e-07 4.665045608e-07 -5.011754325e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.554989517e-05 0.0003317096982 1.874779446e-06 0 0 0.0003317096982 0.0005988252982 1.840454259e-06 0 0 1.874779446e-06 1.840454259e-06 -7.781069501e-06 0 0 0 0 0 0 0 0 0 0 0 0 +9.474957961e-06 -1.126886506e-05 -1.227499107e-07 0 0 -1.126886506e-05 -3.285411326e-05 -8.189821437e-08 0 0 -1.227499107e-07 -8.189821437e-08 -1.074460017e-06 0 0 0 0 0 0 0 0 0 0 0 0 +6.308710888e-05 5.603503126e-05 -8.499004988e-08 0 0 5.603503126e-05 5.00182962e-05 -2.920499674e-09 0 0 -8.499004988e-08 -2.920499674e-09 -3.620050406e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-1.662035851e-05 -1.611463553e-05 -3.510885396e-09 0 0 -1.611463553e-05 1.489692608e-05 2.989793324e-08 0 0 -3.510885396e-09 2.989793324e-08 -8.049233815e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-4.1736006e-05 -3.16010602e-05 1.069744696e-07 0 0 -3.16010602e-05 -1.832644506e-05 1.613058813e-07 0 0 1.069744696e-07 1.613058813e-07 -6.999874903e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-4.829110256e-06 -6.143862852e-06 2.053940454e-08 0 0 -6.143862852e-06 -2.580972764e-06 6.58747824e-08 0 0 2.053940454e-08 6.58747824e-08 -3.682310165e-07 0 0 0 0 0 0 0 0 0 0 0 0 +6.836594531e-06 -4.527308076e-07 -9.601252916e-09 0 0 -4.527308076e-07 7.220333402e-07 1.81206558e-08 0 0 -9.601252916e-09 1.81206558e-08 -2.814659315e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.339048591e-06 -5.74397588e-06 8.419576152e-09 0 0 -5.74397588e-06 -2.528662567e-06 3.108337914e-08 0 0 8.419576152e-09 3.108337914e-08 -3.138331696e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.05350370112 0.04534259927 0.0001007105472 -0.01072633932 2.198311705e-05 0.04534259927 -0.06278593862 6.309178056e-05 -0.05325877749 -6.55782501e-05 0.0001007105472 6.309178056e-05 0.0003343317016 -3.020497959e-05 0.00107481055 -0.01072633932 -0.05325877749 -3.020497959e-05 -0.01743841925 -5.342275815e-05 2.198311705e-05 -6.55782501e-05 0.00107481055 -5.342275815e-05 -0.0008841345698 0.02522660995 0.04319976201 8.250289706e-05 0.00611671926 0.0002061281164 0.04319976201 0.06374879668 0.0001375909513 0.01004367672 0.000238620229 8.250289706e-05 0.0001375909513 0.0004853281833 1.209808427e-05 0.001167571649 0.00611671926 0.01004367672 1.209808427e-05 0.00165570198 3.111805999e-05 0.0002061281164 0.000238620229 0.001167571649 3.111805999e-05 0.001058067046 0.001100997429 0.003932178555 5.589154113e-06 0.00125006848 1.5796101e-05 0.003932178555 0.00659362231 9.142791074e-06 -0.001242270014 4.403050628e-05 5.589154113e-06 9.142791074e-06 6.942082521e-05 -2.310570734e-06 0.0001165867857 0.00125006848 -0.001242270014 -2.310570734e-06 -0.003311743613 1.422933871e-05 1.5796101e-05 4.403050628e-05 0.0001165867857 1.422933871e-05 0.0001827683357 @@ -113,7 +113,7 @@ -9.163894702e-06 -3.867308791e-05 -5.06190241e-08 -1.728499493e-05 -6.702271338e-08 -3.867308791e-05 -8.114473355e-05 -1.044838305e-07 -1.373602769e-05 -2.374508105e-08 -5.06190241e-08 -1.044838305e-07 -8.907793954e-08 -1.531323399e-08 -3.910334027e-07 -1.728499493e-05 -1.373602769e-05 -1.531323399e-08 1.016824432e-05 5.490105312e-08 -6.702271338e-08 -2.374508105e-08 -3.910334027e-07 5.490105312e-08 -6.902041284e-08 -1.916729874e-06 -1.098030256e-05 -2.166785191e-09 -6.06115643e-06 1.461635033e-08 -1.098030256e-05 -4.532503562e-05 -3.732384826e-08 -2.225403389e-05 2.164450457e-07 -2.166785191e-09 -3.732384826e-08 -3.124292668e-08 -2.36186099e-08 -1.869245309e-07 -6.06115643e-06 -2.225403389e-05 -2.36186099e-08 -1.028031863e-05 1.354060043e-07 1.461635033e-08 2.164450457e-07 -1.869245309e-07 1.354060043e-07 5.288298897e-08 4.251875114e-06 3.075226417e-06 6.458348096e-09 -1.048942796e-06 -5.133256176e-08 3.075226417e-06 2.102299883e-06 8.387357563e-09 -1.344768576e-07 2.677819037e-08 6.458348096e-09 8.387357563e-09 -6.801582782e-09 -5.344547484e-10 -3.00695988e-08 -1.048942796e-06 -1.344768576e-07 -5.344547484e-10 8.665143701e-07 4.470971995e-08 -5.133256176e-08 2.677819037e-08 -3.00695988e-08 4.470971995e-08 1.807913604e-07 -5.122176756e-06 3.397316962e-06 7.041756807e-09 -1.497200521e-06 -1.974107293e-08 3.397316962e-06 -1.023882237e-06 8.981015715e-09 -1.772173948e-06 1.776297744e-08 7.041756807e-09 8.981015715e-09 -2.754491988e-09 2.31012036e-11 -6.502007473e-10 -1.497200521e-06 -1.772173948e-06 2.31012036e-11 4.672059849e-07 2.338253566e-08 -1.974107293e-08 1.776297744e-08 -6.502007473e-10 2.338253566e-08 2.109445148e-07 +5.122176756e-06 3.397316962e-06 7.041756807e-09 -1.497200521e-06 -1.974107293e-08 3.397316962e-06 -1.023882237e-06 8.981015715e-09 -1.772173948e-06 1.776297744e-08 7.041756807e-09 8.981015715e-09 -2.754491989e-09 2.31012036e-11 -6.502007473e-10 -1.497200521e-06 -1.772173948e-06 2.31012036e-11 4.672059849e-07 2.338253566e-08 -1.974107293e-08 1.776297744e-08 -6.502007473e-10 2.338253566e-08 2.109445148e-07 6.813466738e-07 -3.450094837e-06 -3.295534891e-09 -2.648330371e-06 -1.706809122e-08 -3.450094837e-06 -1.513902837e-05 -1.003597293e-08 -6.227456069e-06 2.426253319e-08 -3.295534891e-09 -1.003597293e-08 -5.050728212e-09 -3.352956316e-09 -2.004574161e-08 -2.648330371e-06 -6.227456069e-06 -3.352956316e-09 -1.51074257e-06 2.803447968e-08 -1.706809122e-08 2.426253319e-08 -2.004574161e-08 2.803447968e-08 1.542595815e-07 -0.006597623751 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.008041174705 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -128,19 +128,19 @@ -8.320261791e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.218148884e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.534587886e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04128181807 -0.06759901098 0.01926301842 -0.06759901098 0.01445991814 0.01387448032 0.01926301842 0.01387448032 -0.007342622838 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03006368176 -0.001087560151 0.01242927021 -0.001087560151 0.000512023256 0.0002628625172 0.01242927021 0.0002628625172 -0.002816220761 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003509733116 -0.0001926249669 -0.0002873176407 -0.0001926249669 0.001872587606 0.001849481319 -0.0002873176407 0.001849481319 0.0005949594893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001760005166 0.0004764145805 0.001662817632 0.0004764145805 4.2921878e-05 -0.0003754407936 0.001662817632 -0.0003754407936 -0.001529433304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000142440149 -0.000115305171 -9.490048074e-05 -0.000115305171 4.911113597e-05 6.224960873e-05 -9.490048074e-05 6.224960873e-05 6.540208332e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.991480702e-05 7.40240104e-05 0.0001399545222 7.40240104e-05 -4.044917212e-05 -9.303201291e-05 0.0001399545222 -9.303201291e-05 -0.000187692973 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.030611889e-05 7.300634289e-06 1.66666114e-05 7.300634289e-06 -1.124958734e-06 -3.004637697e-06 1.66666114e-05 -3.004637697e-06 -8.116586149e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.555771741e-05 4.571433508e-07 1.701417139e-05 4.571433508e-07 -2.269231616e-07 -2.917794196e-06 1.701417139e-05 -2.917794196e-06 -1.128104422e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.903825853e-05 -1.286162279e-05 -3.14832336e-06 -1.286162279e-05 -6.345583862e-06 -7.010208035e-06 -3.14832336e-06 -7.010208035e-06 -4.646806688e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.632268649e-05 -9.438553198e-06 -9.534166809e-06 -9.438553198e-06 3.382381349e-06 4.72856734e-06 -9.534166809e-06 4.72856734e-06 5.855041032e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.584550952e-06 -2.426631228e-06 5.556100048e-07 -2.426631228e-06 -7.309061543e-07 -4.48701738e-07 5.556100048e-07 -4.48701738e-07 7.349581927e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.959955708e-06 -3.344224274e-06 1.104808254e-06 -3.344224274e-06 -3.463943393e-07 -1.776096586e-07 1.104808254e-06 -1.776096586e-07 -5.628793342e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.301967644e-06 -4.456214332e-06 -1.555752714e-06 -4.456214332e-06 7.505566892e-07 9.42027892e-07 -1.555752714e-06 9.42027892e-07 7.135037463e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04128181807 -0.06759901098 0.01926301842 0 0 -0.06759901098 0.01445991814 0.01387448032 0 0 0.01926301842 0.01387448032 -0.007342622838 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03006368176 -0.001087560151 0.01242927021 0 0 -0.001087560151 0.000512023256 0.0002628625172 0 0 0.01242927021 0.0002628625172 -0.002816220761 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003509733116 -0.0001926249669 -0.0002873176407 0 0 -0.0001926249669 0.001872587606 0.001849481319 0 0 -0.0002873176407 0.001849481319 0.0005949594893 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001760005166 0.0004764145805 0.001662817632 0 0 0.0004764145805 4.2921878e-05 -0.0003754407936 0 0 0.001662817632 -0.0003754407936 -0.001529433304 0 0 0 0 0 0 0 0 0 0 0 0 +0.000142440149 -0.000115305171 -9.490048074e-05 0 0 -0.000115305171 4.911113597e-05 6.224960873e-05 0 0 -9.490048074e-05 6.224960873e-05 6.540208332e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.991480702e-05 7.40240104e-05 0.0001399545222 0 0 7.40240104e-05 -4.044917212e-05 -9.303201291e-05 0 0 0.0001399545222 -9.303201291e-05 -0.000187692973 0 0 0 0 0 0 0 0 0 0 0 0 +-3.030611889e-05 7.300634289e-06 1.66666114e-05 0 0 7.300634289e-06 -1.124958734e-06 -3.004637697e-06 0 0 1.66666114e-05 -3.004637697e-06 -8.116586149e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.555771741e-05 4.571433508e-07 1.701417139e-05 0 0 4.571433508e-07 -2.269231616e-07 -2.917794196e-06 0 0 1.701417139e-05 -2.917794196e-06 -1.128104422e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.903825853e-05 -1.286162279e-05 -3.14832336e-06 0 0 -1.286162279e-05 -6.345583862e-06 -7.010208035e-06 0 0 -3.14832336e-06 -7.010208035e-06 -4.646806688e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.632268649e-05 -9.438553198e-06 -9.534166809e-06 0 0 -9.438553198e-06 3.382381349e-06 4.72856734e-06 0 0 -9.534166809e-06 4.72856734e-06 5.855041032e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.584550952e-06 -2.426631228e-06 5.556100048e-07 0 0 -2.426631228e-06 -7.309061543e-07 -4.48701738e-07 0 0 5.556100048e-07 -4.48701738e-07 7.349581927e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-2.959955708e-06 -3.344224274e-06 1.104808254e-06 0 0 -3.344224274e-06 -3.463943393e-07 -1.776096586e-07 0 0 1.104808254e-06 -1.776096586e-07 -5.628793342e-08 0 0 0 0 0 0 0 0 0 0 0 0 +3.301967644e-06 -4.456214332e-06 -1.555752714e-06 0 0 -4.456214332e-06 7.505566892e-07 9.42027892e-07 0 0 -1.555752714e-06 9.42027892e-07 7.135037463e-07 0 0 0 0 0 0 0 0 0 0 0 0 -0.02832388008 -0.02467301668 0.03275659034 0.01942118569 0.02183061534 -0.02467301668 0.06875548206 0.05492956937 -0.009915334939 -0.03199434146 0.03275659034 0.05492956937 -0.03062156598 -0.03222951604 -0.04156180167 0.01942118569 -0.009915334939 -0.03222951604 -0.005040952501 -0.0004560730582 0.02183061534 -0.03199434146 -0.04156180167 -0.0004560730582 0.01171516021 -0.01620668253 0.002258782708 0.02438614632 0.007004918766 0.002155770319 0.002258782708 0.01125982597 0.0007111085659 -0.005284098566 -0.0045568144 0.02438614632 0.0007111085659 -0.0360833119 -0.01311618158 -0.005140561757 0.007004918766 -0.005284098566 -0.01311618158 -0.001517777469 0.0004254162068 0.002155770319 -0.0045568144 -0.005140561757 0.0004254162068 0.0009072872539 -0.00134688075 0.001798816372 0.002277861635 -0.0001006359141 -0.0006151789428 0.001798816372 -0.001436829897 -0.002090937267 0.0005183281988 -0.0003719667038 0.002277861635 -0.002090937267 -0.003074057084 0.0003551363698 -2.801226159e-05 -0.0001006359141 0.0005183281988 0.0003551363698 3.184580105e-06 -0.0005209804223 -0.0006151789428 -0.0003719667038 -2.801226159e-05 -0.0005209804223 0.001298655765 @@ -167,19 +167,19 @@ -1.314644024e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.59868173e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.977713626e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04076317667 -0.06995687722 -0.01868296211 -0.06995687722 0.01451411056 -0.01418804219 -0.01868296211 -0.01418804219 -0.007022567297 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03192363113 -0.002081228759 -0.01323223046 -0.002081228759 0.000582369217 -0.0003650269189 -0.01323223046 -0.0003650269189 -0.003278113812 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0005482281993 -0.0001077099117 0.0004063349601 -0.0001077099117 0.001893120421 -0.001936154418 0.0004063349601 -0.001936154418 0.000848456708 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001726428635 0.0004579132619 -0.001725211417 0.0004579132619 0.0001430781287 0.0003086385877 -0.001725211417 0.0003086385877 -0.00162255058 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001333101451 -8.044675766e-05 6.725881505e-05 -8.044675766e-05 -6.255572785e-08 -6.422658786e-06 6.725881505e-05 -6.422658786e-06 3.021167994e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.405603012e-05 6.484096601e-05 -0.0001278172562 6.484096601e-05 -2.366682311e-05 7.34224309e-05 -0.0001278172562 7.34224309e-05 -0.000169833462 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.16586446e-05 1.420943573e-05 -2.98151208e-05 1.420943573e-05 -5.258183787e-06 1.036747619e-05 -2.98151208e-05 1.036747619e-05 -2.105824512e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.145308889e-05 -2.887936948e-06 -1.120084322e-05 -2.887936948e-06 -1.167387301e-06 2.198175865e-06 -1.120084322e-05 2.198175865e-06 -5.332359464e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.357835577e-05 -1.313916142e-05 3.987876898e-06 -1.313916142e-05 -5.568226522e-06 6.644659555e-06 3.987876898e-06 6.644659555e-06 -5.25446272e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.378467414e-05 -8.339724825e-06 8.533513213e-06 -8.339724825e-06 3.341031075e-06 -4.501663458e-06 8.533513213e-06 -4.501663458e-06 5.721823236e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.864299307e-06 -2.219693451e-06 -8.85662818e-07 -2.219693451e-06 -9.964224576e-07 7.774315221e-07 -8.85662818e-07 7.774315221e-07 1.783000643e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.373707715e-06 -3.620530053e-06 -9.498389399e-07 -3.620530053e-06 -1.051885618e-07 6.126488723e-08 -9.498389399e-07 6.126488723e-08 -1.163280391e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.83022931e-06 -4.380352025e-06 1.757639417e-06 -4.380352025e-06 7.286333476e-07 -8.70216745e-07 1.757639417e-06 -8.70216745e-07 7.675531855e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04076317667 -0.06995687722 -0.01868296211 0 0 -0.06995687722 0.01451411056 -0.01418804219 0 0 -0.01868296211 -0.01418804219 -0.007022567297 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03192363113 -0.002081228759 -0.01323223046 0 0 -0.002081228759 0.000582369217 -0.0003650269189 0 0 -0.01323223046 -0.0003650269189 -0.003278113812 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005482281993 -0.0001077099117 0.0004063349601 0 0 -0.0001077099117 0.001893120421 -0.001936154418 0 0 0.0004063349601 -0.001936154418 0.000848456708 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001726428635 0.0004579132619 -0.001725211417 0 0 0.0004579132619 0.0001430781287 0.0003086385877 0 0 -0.001725211417 0.0003086385877 -0.00162255058 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001333101451 -8.044675766e-05 6.725881505e-05 0 0 -8.044675766e-05 -6.255572785e-08 -6.422658786e-06 0 0 6.725881505e-05 -6.422658786e-06 3.021167994e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.405603012e-05 6.484096601e-05 -0.0001278172562 0 0 6.484096601e-05 -2.366682311e-05 7.34224309e-05 0 0 -0.0001278172562 7.34224309e-05 -0.000169833462 0 0 0 0 0 0 0 0 0 0 0 0 +-4.16586446e-05 1.420943573e-05 -2.98151208e-05 0 0 1.420943573e-05 -5.258183787e-06 1.036747619e-05 0 0 -2.98151208e-05 1.036747619e-05 -2.105824512e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.145308889e-05 -2.887936948e-06 -1.120084322e-05 0 0 -2.887936948e-06 -1.167387301e-06 2.198175865e-06 0 0 -1.120084322e-05 2.198175865e-06 -5.332359464e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.357835577e-05 -1.313916142e-05 3.987876898e-06 0 0 -1.313916142e-05 -5.568226522e-06 6.644659555e-06 0 0 3.987876898e-06 6.644659555e-06 -5.25446272e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.378467414e-05 -8.339724825e-06 8.533513213e-06 0 0 -8.339724825e-06 3.341031075e-06 -4.501663458e-06 0 0 8.533513213e-06 -4.501663458e-06 5.721823236e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.864299307e-06 -2.219693451e-06 -8.85662818e-07 0 0 -2.219693451e-06 -9.964224576e-07 7.774315221e-07 0 0 -8.85662818e-07 7.774315221e-07 1.783000643e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.373707715e-06 -3.620530053e-06 -9.498389399e-07 0 0 -3.620530053e-06 -1.051885618e-07 6.126488723e-08 0 0 -9.498389399e-07 6.126488723e-08 -1.163280391e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.83022931e-06 -4.380352025e-06 1.757639417e-06 0 0 -4.380352025e-06 7.286333476e-07 -8.70216745e-07 0 0 1.757639417e-06 -8.70216745e-07 7.675531855e-07 0 0 0 0 0 0 0 0 0 0 0 0 -0.02819507137 -0.0260189268 -0.03190155612 0.01916407866 -0.02212742067 -0.0260189268 0.06898705964 -0.05588529455 -0.009296222171 0.03170026206 -0.03190155612 -0.05588529455 -0.0289995721 0.03126532305 -0.0413065763 0.01916407866 -0.009296222171 0.03126532305 -0.004830920338 0.0006034079475 -0.02212742067 0.03170026206 -0.0413065763 0.0006034079475 0.01156455537 -0.01713037401 0.001485336979 -0.02520503539 0.007462215642 -0.002709798256 0.001485336979 0.01317094436 -0.002500248157 -0.005280901321 0.0052945552 -0.02520503539 -0.002500248157 -0.03632294133 0.01375308171 -0.006181353301 0.007462215642 -0.005280901321 0.01375308171 -0.00176463613 -0.0003546093207 -0.002709798256 0.0052945552 -0.006181353301 -0.0003546093207 0.001112685291 -0.001730847654 0.001956636888 -0.002746753463 -4.807075241e-05 0.0005496679779 0.001956636888 -0.001576976208 0.002391188832 0.0004164662389 0.0002387199913 -0.002746753463 0.002391188832 -0.003736642482 -0.0002704257812 7.766462265e-06 -4.807075241e-05 0.0004164662389 -0.0002704257812 5.315430623e-05 0.000525540155 0.0005496679779 0.0002387199913 7.766462265e-06 0.000525540155 0.001140817792 @@ -189,7 +189,7 @@ 1.854869435e-05 4.353872956e-06 -2.39845173e-06 1.142283425e-05 2.151775444e-05 4.353872956e-06 -1.101723768e-05 2.66863183e-05 -1.372620196e-05 -1.825661363e-05 -2.39845173e-06 2.66863183e-05 -6.057790308e-05 3.602866995e-05 5.078939032e-05 1.142283425e-05 -1.372620196e-05 3.602866995e-05 -1.675004628e-05 -2.007370038e-05 2.151775444e-05 -1.825661363e-05 5.078939032e-05 -2.007370038e-05 -2.166794851e-05 -1.578615184e-05 -1.667983e-05 -9.322937434e-06 6.851745036e-06 -1.61402179e-05 -1.667983e-05 9.047254424e-06 -7.709506944e-06 -7.048817778e-06 -5.441619736e-06 -9.322937434e-06 -7.709506944e-06 -4.374688334e-06 2.228542297e-06 -9.19307354e-06 6.851745036e-06 -7.048817778e-06 2.228542297e-06 4.790234802e-06 1.181486107e-06 -1.61402179e-05 -5.441619736e-06 -9.19307354e-06 1.181486107e-06 -1.092595766e-05 9.290377542e-06 -1.458818294e-05 1.620308799e-05 -1.215103868e-07 -7.815178533e-06 -1.458818294e-05 1.713029096e-05 -2.322755796e-05 8.158090614e-07 6.559556019e-06 1.620308799e-05 -2.322755796e-05 2.764845689e-05 -9.351194392e-07 -1.105670362e-05 -1.215103868e-07 8.158090614e-07 -9.351194392e-07 -2.553252852e-07 3.960950656e-07 -7.815178533e-06 6.559556019e-06 -1.105670362e-05 3.960950656e-07 9.736989817e-07 --2.065851356e-07 -1.564459546e-06 8.991872297e-07 1.324384745e-07 -1.54844124e-06 -1.564459546e-06 2.687668933e-06 -3.390468565e-06 6.391868478e-07 1.79514808e-06 8.991872297e-07 -3.390468565e-06 3.333791585e-06 -5.940467806e-07 -2.665694254e-06 1.324384745e-07 6.391868478e-07 -5.940467806e-07 -8.504535838e-10 6.250204453e-07 -1.54844124e-06 1.79514808e-06 -2.665694254e-06 6.250204453e-07 1.038509329e-06 +-2.065851356e-07 -1.564459546e-06 8.991872297e-07 1.324384745e-07 -1.54844124e-06 -1.564459546e-06 2.687668933e-06 -3.390468565e-06 6.391868478e-07 1.79514808e-06 8.991872297e-07 -3.390468565e-06 3.333791585e-06 -5.940467806e-07 -2.665694254e-06 1.324384745e-07 6.391868478e-07 -5.940467806e-07 -8.504535835e-10 6.250204453e-07 -1.54844124e-06 1.79514808e-06 -2.665694254e-06 6.250204453e-07 1.038509329e-06 -4.598038189e-06 -9.842436687e-07 -4.537382885e-06 1.58755886e-06 -2.019425196e-06 -9.842436687e-07 1.383338149e-06 -9.989952079e-08 -1.169482291e-06 -3.395569708e-07 -4.537382885e-06 -9.989952079e-08 -4.541637219e-06 1.120782727e-06 -1.574579866e-06 1.58755886e-06 -1.169482291e-06 1.120782727e-06 3.810957334e-07 3.308510931e-07 -2.019425196e-06 -3.395569708e-07 -1.574579866e-06 3.308510931e-07 -9.898707245e-07 -1.220168647e-06 -2.740614319e-06 -8.165466509e-07 1.303188944e-06 -2.10557351e-06 -2.740614319e-06 4.881583613e-06 -4.541895317e-06 -4.608109822e-07 2.097209066e-06 -8.165466509e-07 -4.541895317e-06 7.341689396e-08 1.621326393e-06 -2.928310666e-06 1.303188944e-06 -4.608109822e-07 1.621326393e-06 -4.303934749e-07 6.530284892e-08 -2.10557351e-06 2.097209066e-06 -2.928310666e-06 6.530284892e-08 5.724108439e-07 4.160351685e-07 -2.804892959e-06 1.423854908e-06 4.926198545e-07 -1.897608343e-06 -2.804892959e-06 3.579270128e-06 -4.126053282e-06 -5.634049339e-08 1.435566715e-06 1.423854908e-06 -4.126053282e-06 2.972801312e-06 3.863616304e-07 -2.394010945e-06 4.926198545e-07 -5.634049339e-08 3.863616304e-07 -1.40875482e-07 1.520123142e-07 -1.897608343e-06 1.435566715e-06 -2.394010945e-06 1.520123142e-07 2.864025486e-07 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_2_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_2_ref.dat index 5ea543313c..c6e83ca52c 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_2_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_2_ref.dat @@ -11,19 +11,19 @@ -2.182434826e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.962654334e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.545253482e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01486301923 0.004837765296 3.485529257e-06 0.004837765296 0.1630134993 4.6034809e-05 3.485529257e-06 4.6034809e-05 -0.00186116299 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03512123557 -0.06221502517 0.0001142748022 -0.06221502517 -0.1165640503 0.000207858147 0.0001142748022 0.000207858147 -0.005837666296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0211848283 -0.04588509949 9.953150921e-05 -0.04588509949 -0.1259623879 0.0003490761727 9.953150921e-05 0.0003490761727 -0.003763799915 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.004733750623 -0.01190895228 2.523662153e-05 -0.01190895228 -0.03768429735 0.0001332013169 2.523662153e-05 0.0001332013169 -0.0008159194367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004188037063 0.0003475298877 -2.956819877e-06 0.0003475298877 -0.0002190477672 -4.825072669e-06 -2.956819877e-06 -4.825072669e-06 0.0001122976604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0008426046716 0.001985370039 -4.258765264e-06 0.001985370039 0.005489022845 -1.169151797e-05 -4.258765264e-06 -1.169151797e-05 0.0001104655907 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004312326813 0.001263905743 -1.495182749e-06 0.001263905743 0.004161332683 -4.063460363e-06 -1.495182749e-06 -4.063460363e-06 4.587474133e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.360349882e-05 -9.319675296e-05 2.657776798e-07 -9.319675296e-05 -0.00025845879 6.336131512e-07 2.657776798e-07 6.336131512e-07 -7.85506761e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001091238375 -0.0002918313573 6.867869324e-07 -0.0002918313573 -0.0007914586923 1.869116017e-06 6.867869324e-07 1.869116017e-06 -2.850079821e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.371178478e-05 -0.0001002761357 3.298511281e-07 -0.0001002761357 -0.0003228537218 1.439335118e-06 3.298511281e-07 1.439335118e-06 -2.613039111e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.028654754e-05 2.907704817e-05 -4.931414965e-08 2.907704817e-05 0.0001000816719 -1.794738703e-07 -4.931414965e-08 -1.794738703e-07 1.562467566e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.14062113e-06 1.300311544e-05 -5.273646687e-08 1.300311544e-05 2.955284878e-05 -1.047607834e-07 -5.273646687e-08 -1.047607834e-07 -2.874536222e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.532733035e-06 1.519886812e-05 -3.670146452e-09 1.519886812e-05 5.892272734e-05 3.104693228e-08 -3.670146452e-09 3.104693228e-08 6.95554829e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01486301923 0.004837765296 3.485529257e-06 0 0 0.004837765296 0.1630134993 4.6034809e-05 0 0 3.485529257e-06 4.6034809e-05 -0.00186116299 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03512123557 -0.06221502517 0.0001142748022 0 0 -0.06221502517 -0.1165640503 0.000207858147 0 0 0.0001142748022 0.000207858147 -0.005837666296 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0211848283 -0.04588509949 9.953150921e-05 0 0 -0.04588509949 -0.1259623879 0.0003490761727 0 0 9.953150921e-05 0.0003490761727 -0.003763799915 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004733750623 -0.01190895228 2.523662153e-05 0 0 -0.01190895228 -0.03768429735 0.0001332013169 0 0 2.523662153e-05 0.0001332013169 -0.0008159194367 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004188037063 0.0003475298877 -2.956819877e-06 0 0 0.0003475298877 -0.0002190477672 -4.825072669e-06 0 0 -2.956819877e-06 -4.825072669e-06 0.0001122976604 0 0 0 0 0 0 0 0 0 0 0 0 +0.0008426046716 0.001985370039 -4.258765264e-06 0 0 0.001985370039 0.005489022845 -1.169151797e-05 0 0 -4.258765264e-06 -1.169151797e-05 0.0001104655907 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004312326813 0.001263905743 -1.495182749e-06 0 0 0.001263905743 0.004161332683 -4.063460363e-06 0 0 -1.495182749e-06 -4.063460363e-06 4.587474133e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.360349882e-05 -9.319675296e-05 2.657776798e-07 0 0 -9.319675296e-05 -0.00025845879 6.336131512e-07 0 0 2.657776798e-07 6.336131512e-07 -7.85506761e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001091238375 -0.0002918313573 6.867869324e-07 0 0 -0.0002918313573 -0.0007914586923 1.869116017e-06 0 0 6.867869324e-07 1.869116017e-06 -2.850079821e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.371178478e-05 -0.0001002761357 3.298511281e-07 0 0 -0.0001002761357 -0.0003228537218 1.439335118e-06 0 0 3.298511281e-07 1.439335118e-06 -2.613039111e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.028654754e-05 2.907704817e-05 -4.931414965e-08 0 0 2.907704817e-05 0.0001000816719 -1.794738703e-07 0 0 -4.931414965e-08 -1.794738703e-07 1.562467566e-06 0 0 0 0 0 0 0 0 0 0 0 0 +5.14062113e-06 1.300311544e-05 -5.273646687e-08 0 0 1.300311544e-05 2.955284878e-05 -1.047607834e-07 0 0 -5.273646687e-08 -1.047607834e-07 -2.874536222e-07 0 0 0 0 0 0 0 0 0 0 0 0 +4.532733035e-06 1.519886812e-05 -3.670146452e-09 0 0 1.519886812e-05 5.892272734e-05 3.104693228e-08 0 0 -3.670146452e-09 3.104693228e-08 6.95554829e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.01307876642 -0.01245626161 -3.947242783e-05 -0.02595603443 6.720720776e-05 -0.01245626161 0.006701793244 1.055013567e-05 0.02139823969 -1.872352661e-05 -3.947242783e-05 1.055013567e-05 -0.0001374665759 6.220264219e-05 0.0002454992101 -0.02595603443 0.02139823969 6.220264219e-05 0.05030625056 -0.0001041028043 6.720720776e-05 -1.872352661e-05 0.0002454992101 -0.0001041028043 -0.0004141802115 0.006752784182 -0.001564776136 -6.826671847e-06 -0.009465594181 -3.794026066e-06 -0.001564776136 -0.006587096969 2.71529109e-06 -0.001113438096 -1.302989656e-06 -6.826671847e-06 2.71529109e-06 -0.0004578235226 9.154180932e-06 6.028716391e-05 -0.009465594181 -0.001113438096 9.154180932e-06 0.0128059879 1.921334043e-06 -3.794026066e-06 -1.302989656e-06 6.028716391e-05 1.921334043e-06 0.0007057981384 -0.0005727996773 0.004884159028 -9.404565609e-06 0.004400126627 2.374263225e-05 0.004884159028 -0.00811154029 1.419373067e-05 -0.01039130423 -3.328056075e-05 -9.404565609e-06 1.419373067e-05 -0.0003585383287 2.516402607e-05 -0.0001574613988 0.004400126627 -0.01039130423 2.516402607e-05 -0.01227667268 -3.679590568e-05 2.374263225e-05 -3.328056075e-05 -0.0001574613988 -3.679590568e-05 0.001162431009 @@ -35,7 +35,7 @@ -3.769074373e-07 3.594292436e-06 1.133236388e-09 2.860261429e-06 -1.566386881e-08 3.594292436e-06 -1.124916923e-05 -3.200711935e-08 -1.266156955e-05 3.989718779e-08 1.133236388e-09 -3.200711935e-08 -1.269399089e-07 -2.294630035e-08 -1.21559749e-07 2.860261429e-06 -1.266156955e-05 -2.294630035e-08 -1.226216237e-05 3.08833885e-08 -1.566386881e-08 3.989718779e-08 -1.21559749e-07 3.08833885e-08 5.690662307e-07 1.986364771e-06 -2.986890725e-06 -9.231100832e-08 -4.568334611e-06 1.549386918e-07 -2.986890725e-06 4.514809362e-06 1.149713434e-07 6.910227305e-06 -1.884920845e-07 -9.231100832e-08 1.149713434e-07 -7.058329566e-09 1.955926389e-07 -1.242540492e-09 -4.568334611e-06 6.910227305e-06 1.955926389e-07 1.055571433e-05 -3.167337379e-07 1.549386918e-07 -1.884920845e-07 -1.242540492e-09 -3.167337379e-07 1.926505226e-08 -7.456256081e-07 1.209153874e-06 -9.289949308e-09 1.64619284e-06 1.910134661e-08 1.209153874e-06 -1.423466113e-06 1.71646527e-08 -2.188709079e-06 -2.542948584e-08 -9.289949308e-09 1.71646527e-08 -1.547561722e-08 2.410786935e-08 -2.488813744e-08 1.64619284e-06 -2.188709079e-06 2.410786935e-08 -3.320623207e-06 -3.571524366e-08 1.910134661e-08 -2.542948584e-08 -2.488813744e-08 -3.571524366e-08 1.02403427e-07 -2.289246018e-07 1.142413391e-08 -1.740594552e-09 -3.438116623e-07 6.213811015e-10 1.142413391e-08 -8.690710099e-07 -3.540271768e-09 -6.199157518e-07 5.988165e-09 -1.740594552e-09 -3.540271768e-09 -1.625774722e-08 -4.703976131e-10 -2.412343134e-08 -3.438116623e-07 -6.199157518e-07 -4.703976131e-10 1.080524954e-07 -1.119849118e-09 6.213811015e-10 5.988165e-09 -2.412343134e-08 -1.119849118e-09 9.185239271e-08 +2.289246018e-07 1.14241339e-08 -1.740594552e-09 -3.438116623e-07 6.213811015e-10 1.14241339e-08 -8.690710099e-07 -3.540271768e-09 -6.199157518e-07 5.988165e-09 -1.740594552e-09 -3.540271768e-09 -1.625774722e-08 -4.703976131e-10 -2.412343134e-08 -3.438116623e-07 -6.199157518e-07 -4.703976131e-10 1.080524954e-07 -1.119849118e-09 6.213811015e-10 5.988165e-09 -2.412343134e-08 -1.119849118e-09 9.185239271e-08 1.310698945e-06 -1.705336085e-06 -1.307277125e-08 -2.846171425e-06 1.804655895e-08 -1.705336085e-06 2.203028217e-06 1.37705315e-08 3.687930137e-06 -2.015705412e-08 -1.307277125e-08 1.37705315e-08 -3.242243515e-10 2.583567249e-08 -5.345501538e-09 -2.846171425e-06 3.687930137e-06 2.583567249e-08 6.152167193e-06 -3.736006121e-08 1.804655895e-08 -2.015705412e-08 -5.345501538e-09 -3.736006121e-08 1.564418826e-08 -0.03327319345 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01253489954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -50,19 +50,19 @@ -1.915898359e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.351726813e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.067631684e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.06391077617 -0.02249287906 -0.0001017661041 -0.02249287906 0.08608618579 -4.489066258e-05 -0.0001017661041 -4.489066258e-05 -0.001115384131 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03061681864 -0.04280007155 0.0001140494691 -0.04280007155 -0.04506439401 4.3790002e-05 0.0001140494691 4.3790002e-05 -0.001231991357 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0004520747338 -6.823258537e-06 4.507818512e-06 -6.823258537e-06 -0.003722577722 1.676467724e-05 4.507818512e-06 1.676467724e-05 1.512311506e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.005479735169 -0.001701585684 -1.504675977e-05 -0.001701585684 -9.217770379e-05 -5.097566944e-06 -1.504675977e-05 -5.097566944e-06 -4.648006343e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.206324604e-05 9.625644379e-05 9.750933856e-07 9.625644379e-05 0.0005408338158 2.148576543e-06 9.750933856e-07 2.148576543e-06 5.18521991e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.283075812e-05 0.000233362807 6.026626288e-07 0.000233362807 0.0003449515636 1.388034475e-06 6.026626288e-07 1.388034475e-06 5.628714167e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.122201074e-05 -5.067407625e-06 -4.698386434e-08 -5.067407625e-06 -1.925347827e-06 -4.765270299e-09 -4.698386434e-08 -4.765270299e-09 2.310306688e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.261419238e-05 -3.340751935e-05 1.111501037e-07 -3.340751935e-05 -3.818197351e-05 -7.495181967e-09 1.111501037e-07 -7.495181967e-09 6.396075429e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.24521005e-05 3.180806101e-05 5.894235148e-08 3.180806101e-05 6.208068922e-05 2.263549209e-07 5.894235148e-08 2.263549209e-07 7.060599799e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.76985127e-05 3.956143965e-05 1.904185157e-07 3.956143965e-05 4.311955253e-05 2.841186713e-07 1.904185157e-07 2.841186713e-07 3.192357483e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.196647676e-06 4.800698686e-06 2.440312097e-09 4.800698686e-06 1.78550968e-05 4.349528314e-08 2.440312097e-09 4.349528314e-08 3.024842951e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.063523608e-06 -2.04382847e-06 -1.817279621e-08 -2.04382847e-06 5.872751326e-06 2.508171436e-08 -1.817279621e-08 2.508171436e-08 2.3623885e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.421168404e-06 6.067128874e-06 1.144105067e-08 6.067128874e-06 1.502758895e-05 6.346040048e-08 1.144105067e-08 6.346040048e-08 2.354148383e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.06391077617 -0.02249287906 -0.0001017661041 0 0 -0.02249287906 0.08608618579 -4.489066258e-05 0 0 -0.0001017661041 -4.489066258e-05 -0.001115384131 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03061681864 -0.04280007155 0.0001140494691 0 0 -0.04280007155 -0.04506439401 4.3790002e-05 0 0 0.0001140494691 4.3790002e-05 -0.001231991357 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004520747338 -6.823258537e-06 4.507818512e-06 0 0 -6.823258537e-06 -0.003722577722 1.676467724e-05 0 0 4.507818512e-06 1.676467724e-05 1.512311506e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005479735169 -0.001701585684 -1.504675977e-05 0 0 -0.001701585684 -9.217770379e-05 -5.097566944e-06 0 0 -1.504675977e-05 -5.097566944e-06 -4.648006343e-06 0 0 0 0 0 0 0 0 0 0 0 0 +9.206324604e-05 9.625644379e-05 9.750933856e-07 0 0 9.625644379e-05 0.0005408338158 2.148576543e-06 0 0 9.750933856e-07 2.148576543e-06 5.18521991e-06 0 0 0 0 0 0 0 0 0 0 0 0 +8.283075812e-05 0.000233362807 6.026626288e-07 0 0 0.000233362807 0.0003449515636 1.388034475e-06 0 0 6.026626288e-07 1.388034475e-06 5.628714167e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.122201074e-05 -5.067407625e-06 -4.698386434e-08 0 0 -5.067407625e-06 -1.925347827e-06 -4.765270299e-09 0 0 -4.698386434e-08 -4.765270299e-09 2.310306688e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.261419238e-05 -3.340751935e-05 1.111501037e-07 0 0 -3.340751935e-05 -3.818197351e-05 -7.495181967e-09 0 0 1.111501037e-07 -7.495181967e-09 6.396075429e-08 0 0 0 0 0 0 0 0 0 0 0 0 +1.24521005e-05 3.180806101e-05 5.894235148e-08 0 0 3.180806101e-05 6.208068922e-05 2.263549209e-07 0 0 5.894235148e-08 2.263549209e-07 7.060599799e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.76985127e-05 3.956143965e-05 1.904185157e-07 0 0 3.956143965e-05 4.311955253e-05 2.841186713e-07 0 0 1.904185157e-07 2.841186713e-07 3.192357483e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.196647676e-06 4.800698686e-06 2.440312097e-09 0 0 4.800698686e-06 1.78550968e-05 4.349528314e-08 0 0 2.440312097e-09 4.349528314e-08 3.024842951e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-6.063523608e-06 -2.04382847e-06 -1.817279621e-08 0 0 -2.04382847e-06 5.872751326e-06 2.508171436e-08 0 0 -1.817279621e-08 2.508171436e-08 2.3623885e-07 0 0 0 0 0 0 0 0 0 0 0 0 +2.421168404e-06 6.067128874e-06 1.144105067e-08 0 0 6.067128874e-06 1.502758895e-05 6.346040048e-08 0 0 1.144105067e-08 6.346040048e-08 2.354148383e-07 0 0 0 0 0 0 0 0 0 0 0 0 -0.05007695942 -0.05031619098 -0.0001482385939 0.004291859446 -7.555128611e-05 -0.05031619098 0.07354376875 -4.765040004e-05 0.06214574684 0.0001278548555 -0.0001482385939 -4.765040004e-05 -0.001807995077 6.8574172e-05 0.0005224745102 0.004291859446 0.06214574684 6.8574172e-05 0.0257786058 9.714596007e-05 -7.555128611e-05 0.0001278548555 0.0005224745102 9.714596007e-05 -0.0001331722526 -0.02508476886 -0.04340720347 3.134152902e-05 -0.006505208399 -0.0001217090052 -0.04340720347 -0.06614539428 -1.263046776e-05 -0.01099005917 -0.0001644466297 3.134152902e-05 -1.263046776e-05 -0.002274479659 1.173256916e-05 -0.0004388788817 -0.006505208399 -0.01099005917 1.173256916e-05 -0.001828716138 -2.719156669e-05 -0.0001217090052 -0.0001644466297 -0.0004388788817 -2.719156669e-05 0.000138693641 -0.0004425034815 -0.002648599364 1.289113497e-05 -0.0002383849095 -9.699357477e-06 -0.002648599364 -0.0152622515 4.631585579e-05 -0.003751060782 -4.627927832e-05 1.289113497e-05 4.631585579e-05 -0.0002920441082 3.218942649e-05 -0.0001849256 -0.0002383849095 -0.003751060782 3.218942649e-05 5.494126823e-05 -1.553742911e-05 -9.699357477e-06 -4.627927832e-05 -0.0001849256 -1.553742911e-05 -7.141795529e-06 @@ -89,19 +89,19 @@ -8.640509734e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0001645289339 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.66482556e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.1944390015 0.01888982584 0.000991916031 0.01888982584 -0.05321169536 -0.00316898336 0.000991916031 -0.00316898336 -0.2440847747 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.1425955911 0.02252523523 -0.0003820504351 0.02252523523 -0.01198226439 0.004036971587 -0.0003820504351 0.004036971587 -0.1364686667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01171795011 -0.005119481471 -0.0001603200531 -0.005119481471 0.01801576723 -0.0004371423115 -0.0001603200531 -0.0004371423115 -0.004534308368 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01028586806 -0.02936136798 6.874806903e-05 -0.02936136798 -0.0782130746 0.0002146797239 6.874806903e-05 0.0002146797239 0.0001748972052 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001402408854 0.003307443059 -2.492821553e-06 0.003307443059 0.01086674105 -7.82308982e-05 -2.492821553e-06 -7.82308982e-05 0.0001936468238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001086810333 0.0001625004823 1.135907621e-05 0.0001625004823 0.0009540315256 1.494578182e-06 1.135907621e-05 1.494578182e-06 -8.091286476e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003300277633 -0.001446446258 -9.23168017e-06 -0.001446446258 -0.003354420367 3.09001848e-05 -9.23168017e-06 3.09001848e-05 0.0003749180397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001271687337 0.0004764786633 9.276512772e-07 0.0004764786633 0.001585164328 1.137865174e-05 9.276512772e-07 1.137865174e-05 -1.130686197e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.40940227e-05 0.0001093621151 1.522556418e-06 0.0001093621151 0.0001031107849 -6.107912053e-06 1.522556418e-06 -6.107912053e-06 -0.0001443417991 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.603092387e-06 -0.0002242059909 -9.107436864e-07 -0.0002242059909 -0.0005324465839 -6.591511817e-06 -9.107436864e-07 -6.591511817e-06 8.60570392e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.477919695e-05 0.0001011917464 5.582497264e-09 0.0001011917464 0.0004932843954 7.059093095e-06 5.582497264e-09 7.059093095e-06 5.199045026e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.229514598e-05 -2.927327531e-06 -3.967937782e-07 -2.927327531e-06 1.709328871e-05 4.210501719e-06 -3.967937782e-07 4.210501719e-06 -5.496063175e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.906029833e-09 -2.975776111e-05 -1.836525464e-07 -2.975776111e-05 -6.646128588e-05 8.604575168e-07 -1.836525464e-07 8.604575168e-07 7.906633135e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1944390015 0.01888982584 0.000991916031 0 0 0.01888982584 -0.05321169536 -0.00316898336 0 0 0.000991916031 -0.00316898336 -0.2440847747 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1425955911 0.02252523523 -0.0003820504351 0 0 0.02252523523 -0.01198226439 0.004036971587 0 0 -0.0003820504351 0.004036971587 -0.1364686667 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01171795011 -0.005119481471 -0.0001603200531 0 0 -0.005119481471 0.01801576723 -0.0004371423115 0 0 -0.0001603200531 -0.0004371423115 -0.004534308368 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01028586806 -0.02936136798 6.874806903e-05 0 0 -0.02936136798 -0.0782130746 0.0002146797239 0 0 6.874806903e-05 0.0002146797239 0.0001748972052 0 0 0 0 0 0 0 0 0 0 0 0 +0.001402408854 0.003307443059 -2.492821553e-06 0 0 0.003307443059 0.01086674105 -7.82308982e-05 0 0 -2.492821553e-06 -7.82308982e-05 0.0001936468238 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001086810333 0.0001625004823 1.135907621e-05 0 0 0.0001625004823 0.0009540315256 1.494578182e-06 0 0 1.135907621e-05 1.494578182e-06 -8.091286476e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003300277633 -0.001446446258 -9.23168017e-06 0 0 -0.001446446258 -0.003354420367 3.09001848e-05 0 0 -9.23168017e-06 3.09001848e-05 0.0003749180397 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001271687337 0.0004764786633 9.276512772e-07 0 0 0.0004764786633 0.001585164328 1.137865174e-05 0 0 9.276512772e-07 1.137865174e-05 -1.130686197e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.40940227e-05 0.0001093621151 1.522556418e-06 0 0 0.0001093621151 0.0001031107849 -6.107912053e-06 0 0 1.522556418e-06 -6.107912053e-06 -0.0001443417991 0 0 0 0 0 0 0 0 0 0 0 0 +-4.603092387e-06 -0.0002242059909 -9.107436864e-07 0 0 -0.0002242059909 -0.0005324465839 -6.591511817e-06 0 0 -9.107436864e-07 -6.591511817e-06 8.60570392e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.477919695e-05 0.0001011917464 5.582497264e-09 0 0 0.0001011917464 0.0004932843954 7.059093095e-06 0 0 5.582497264e-09 7.059093095e-06 5.199045026e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.229514598e-05 -2.927327531e-06 -3.967937782e-07 0 0 -2.927327531e-06 1.709328871e-05 4.210501719e-06 0 0 -3.967937782e-07 4.210501719e-06 -5.496063175e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.906029834e-09 -2.975776111e-05 -1.836525464e-07 0 0 -2.975776111e-05 -6.646128588e-05 8.604575168e-07 0 0 -1.836525464e-07 8.604575168e-07 7.906633135e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.02425632189 -0.03623951522 7.995899391e-06 -0.1077074696 0.001478021385 -0.03623951522 0.1462879996 3.719630852e-05 0.042568988 -6.895670752e-05 7.995899391e-06 3.719630852e-05 -0.006267145607 0.0001007619569 -0.01699231067 -0.1077074696 0.042568988 0.0001007619569 0.2110259187 -9.723009251e-05 0.001478021385 -6.895670752e-05 -0.01699231067 -9.723009251e-05 0.05974167431 -0.1201121625 -0.09308402892 -0.0004438201746 0.05707946126 -0.002275054655 -0.09308402892 -0.1181858869 -5.627551689e-05 -0.00433059869 0.0005117813029 -0.0004438201746 -5.627551689e-05 -0.01129752516 0.0003761583773 -0.04833234568 0.05707946126 -0.00433059869 0.0003761583773 -0.06111723594 0.0021662097 -0.002275054655 0.0005117813029 -0.04833234568 0.0021662097 -0.2067519094 0.00115667639 -0.03462020897 -0.0001759892831 -0.02101961036 -0.000662821845 -0.03462020897 -0.01193644745 -4.661346105e-05 0.03990462818 -0.0005946296473 -0.0001759892831 -4.661346105e-05 -0.004746645954 0.0001108112301 -0.01209197096 -0.02101961036 0.03990462818 0.0001108112301 0.05207909576 0.0003369567767 -0.000662821845 -0.0005946296473 -0.01209197096 0.0003369567767 -0.02991026804 @@ -114,7 +114,7 @@ 0.0001287948831 2.461479845e-05 -1.796198039e-07 -0.0001431505917 -2.367623446e-06 2.461479845e-05 9.932999403e-05 -7.731128889e-08 4.340742964e-05 -3.124188589e-06 -1.796198039e-07 -7.731128889e-08 2.571896977e-06 9.66637075e-08 2.542273188e-05 -0.0001431505917 4.340742964e-05 9.66637075e-08 0.0002085319905 1.147662034e-06 -2.367623446e-06 -3.124188589e-06 2.542273188e-05 1.147662034e-06 0.0002383579188 3.149809427e-05 -2.165472622e-05 -8.572846123e-08 -5.334170827e-05 -5.666472536e-06 -2.165472622e-05 1.634916287e-05 -2.944230582e-08 3.205623424e-05 3.275727919e-07 -8.572846123e-08 -2.944230582e-08 -4.635052554e-07 8.228504192e-08 -3.750041748e-07 -5.334170827e-05 3.205623424e-05 8.228504192e-08 8.220794151e-05 6.399798889e-06 -5.666472536e-06 3.275727919e-07 -3.750041748e-07 6.399798889e-06 4.983402306e-05 -1.448956771e-05 1.396400148e-05 -1.765178494e-07 1.907246635e-05 -2.685772155e-06 1.396400148e-05 -1.734448474e-05 7.52682552e-09 -3.505177404e-05 -7.566220059e-07 -1.765178494e-07 7.52682552e-09 -3.679202691e-07 1.986342194e-07 -1.166994784e-06 1.907246635e-05 -3.505177404e-05 1.986342194e-07 -4.392966268e-05 2.47499467e-06 -2.685772155e-06 -7.566220059e-07 -1.166994784e-06 2.47499467e-06 8.718453146e-06 -1.925326814e-05 9.238665266e-06 -6.091486943e-09 -2.323014746e-05 4.398461527e-08 9.238665266e-06 3.257061429e-05 -4.644664158e-10 8.781216258e-06 -1.556014311e-07 -6.091486943e-09 -4.644664158e-10 5.099759788e-07 1.789738527e-08 4.426540525e-06 -2.323014746e-05 8.781216258e-06 1.789738527e-08 3.758909233e-05 2.251616811e-07 4.398461527e-08 -1.556014311e-07 4.426540525e-06 2.251616811e-07 3.614461701e-05 +1.925326814e-05 9.238665266e-06 -6.091486943e-09 -2.323014746e-05 4.398461528e-08 9.238665266e-06 3.257061429e-05 -4.644664157e-10 8.781216258e-06 -1.556014311e-07 -6.091486943e-09 -4.644664157e-10 5.099759788e-07 1.789738527e-08 4.426540525e-06 -2.323014746e-05 8.781216258e-06 1.789738527e-08 3.758909233e-05 2.251616811e-07 4.398461528e-08 -1.556014311e-07 4.426540525e-06 2.251616811e-07 3.614461701e-05 -0.0383647822 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.02562037498 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0149930296 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -128,19 +128,19 @@ 2.49735774e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.410227466e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.201657515e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0007735885347 0.0007299957886 -0.008043685293 0.0007299957886 -0.01025581434 -0.05173796141 -0.008043685293 -0.05173796141 -0.02693891535 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0004996021539 -0.0107344627 -0.006896713918 -0.0107344627 -0.06127499835 -0.01685844584 -0.006896713918 -0.01685844584 0.0003565373117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.832910297e-05 0.0007587492111 0.0009443995753 0.0007587492111 -0.001241180139 -0.002030837987 0.0009443995753 -0.002030837987 -0.003215921604 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.828692548e-05 0.000468760573 0.0003410273496 0.000468760573 -0.003172360604 -0.002596937573 0.0003410273496 -0.002596937573 -0.002076152182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.077363575e-06 -6.493184579e-06 -5.830479994e-06 -6.493184579e-06 -5.154569132e-05 -9.570816985e-05 -5.830479994e-06 -9.570816985e-05 -7.478022599e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.773002666e-06 0.0001581787357 8.827496881e-05 0.0001581787357 0.0004805135656 -5.09212501e-05 8.827496881e-05 -5.09212501e-05 -0.000166087656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.14543954e-06 -1.974562795e-05 -1.161071288e-05 -1.974562795e-05 0.0003172399648 0.0001943445723 -1.161071288e-05 0.0001943445723 0.0001201138719 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.970862328e-07 4.892607026e-07 -2.308279862e-07 4.892607026e-07 -3.550793756e-05 -2.420469884e-05 -2.308279862e-07 -2.420469884e-05 -1.357319644e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.849435526e-07 -5.959880012e-06 -6.904604825e-06 -5.959880012e-06 -3.41037714e-05 -1.938240904e-05 -6.904604825e-06 -1.938240904e-05 2.928214273e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.590349707e-07 -5.511201343e-08 -9.320166308e-08 -5.511201343e-08 8.59971548e-05 3.454323209e-05 -9.320166308e-08 3.454323209e-05 1.428566834e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.021108969e-07 4.251428674e-06 1.919695851e-06 4.251428674e-06 7.023620408e-05 2.437583332e-05 1.919695851e-06 2.437583332e-05 8.783891821e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.429999356e-07 2.266278825e-06 6.723693296e-07 2.266278825e-06 2.602605707e-05 5.735253795e-06 6.723693296e-07 5.735253795e-06 1.671469323e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.614844815e-07 4.972462214e-07 -1.264467741e-07 4.972462214e-07 1.285799842e-05 1.415208372e-06 -1.264467741e-07 1.415208372e-06 5.959701576e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007735885347 0.0007299957886 -0.008043685293 0 0 0.0007299957886 -0.01025581434 -0.05173796141 0 0 -0.008043685293 -0.05173796141 -0.02693891535 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004996021539 -0.0107344627 -0.006896713918 0 0 -0.0107344627 -0.06127499835 -0.01685844584 0 0 -0.006896713918 -0.01685844584 0.0003565373117 0 0 0 0 0 0 0 0 0 0 0 0 +-6.832910297e-05 0.0007587492111 0.0009443995753 0 0 0.0007587492111 -0.001241180139 -0.002030837987 0 0 0.0009443995753 -0.002030837987 -0.003215921604 0 0 0 0 0 0 0 0 0 0 0 0 +-7.828692548e-05 0.000468760573 0.0003410273496 0 0 0.000468760573 -0.003172360604 -0.002596937573 0 0 0.0003410273496 -0.002596937573 -0.002076152182 0 0 0 0 0 0 0 0 0 0 0 0 +-1.077363575e-06 -6.493184579e-06 -5.830479994e-06 0 0 -6.493184579e-06 -5.154569132e-05 -9.570816985e-05 0 0 -5.830479994e-06 -9.570816985e-05 -7.478022599e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.773002666e-06 0.0001581787357 8.827496881e-05 0 0 0.0001581787357 0.0004805135656 -5.09212501e-05 0 0 8.827496881e-05 -5.09212501e-05 -0.000166087656 0 0 0 0 0 0 0 0 0 0 0 0 +3.14543954e-06 -1.974562795e-05 -1.161071288e-05 0 0 -1.974562795e-05 0.0003172399648 0.0001943445723 0 0 -1.161071288e-05 0.0001943445723 0.0001201138719 0 0 0 0 0 0 0 0 0 0 0 0 +1.970862328e-07 4.892607026e-07 -2.308279862e-07 0 0 4.892607026e-07 -3.550793756e-05 -2.420469884e-05 0 0 -2.308279862e-07 -2.420469884e-05 -1.357319644e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.849435526e-07 -5.959880012e-06 -6.904604825e-06 0 0 -5.959880012e-06 -3.41037714e-05 -1.938240904e-05 0 0 -6.904604825e-06 -1.938240904e-05 2.928214273e-06 0 0 0 0 0 0 0 0 0 0 0 0 +4.590349707e-07 -5.511201343e-08 -9.320166308e-08 0 0 -5.511201343e-08 8.59971548e-05 3.454323209e-05 0 0 -9.320166308e-08 3.454323209e-05 1.428566834e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.021108969e-07 4.251428674e-06 1.919695851e-06 0 0 4.251428674e-06 7.023620408e-05 2.437583332e-05 0 0 1.919695851e-06 2.437583332e-05 8.783891821e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.429999356e-07 2.266278825e-06 6.723693296e-07 0 0 2.266278825e-06 2.602605707e-05 5.735253795e-06 0 0 6.723693296e-07 5.735253795e-06 1.671469323e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.614844815e-07 4.972462214e-07 -1.264467741e-07 0 0 4.972462214e-07 1.285799842e-05 1.415208372e-06 0 0 -1.264467741e-07 1.415208372e-06 5.959701576e-08 0 0 0 0 0 0 0 0 0 0 0 0 0.0101364064 0.0009798150599 -0.001703834183 -0.03465729836 -0.002427452422 0.0009798150599 -0.0004823443067 -0.0007076791802 -0.005233073801 0.001818263525 -0.001703834183 -0.0007076791802 -0.0008262361412 0.008566185159 -0.0006128009902 -0.03465729836 -0.005233073801 0.008566185159 0.05905563511 0.04270322969 -0.002427452422 0.001818263525 -0.0006128009902 0.04270322969 -0.02259907758 -0.02298709866 -0.003222261492 0.006600221182 0.02074107058 0.0398085391 -0.003222261492 -0.001257202614 -0.0008821073323 0.003110849913 0.00624969557 0.006600221182 -0.0008821073323 -0.0006299078214 -0.003995118072 -0.009859110989 0.02074107058 0.003110849913 -0.003995118072 -0.01989540234 -0.03538811361 0.0398085391 0.00624969557 -0.009859110989 -0.03538811361 -0.06818554768 -0.0007393099651 -0.0001659696806 0.001001221267 0.001458775928 0.001380376864 -0.0001659696806 -5.507020825e-05 6.509549955e-06 0.0002979991522 0.0002428552882 0.001001221267 6.509549955e-06 8.727960334e-06 -0.001365773587 -0.001217831642 0.001458775928 0.0002979991522 -0.001365773587 -0.002851783771 -0.00229928174 0.001380376864 0.0002428552882 -0.001217831642 -0.00229928174 -0.002277785997 @@ -167,19 +167,19 @@ 2.237905945e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.106516394e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.316156207e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0009147181632 0.0006860973542 0.008122796526 0.0006860973542 -0.006539449068 0.0507403924 0.008122796526 0.0507403924 -0.02631560578 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0006754400601 -0.01142555878 0.007237171388 -0.01142555878 -0.06803697457 0.02001629436 0.007237171388 0.02001629436 -0.001136100736 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.20332898e-05 0.0004755947869 -0.0007826560875 0.0004755947869 -0.001118827375 0.001442972037 -0.0007826560875 0.001442972037 -0.002619517719 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.527331741e-05 0.0006260620409 -0.0004462702786 0.0006260620409 -0.003407486259 0.002989374069 -0.0004462702786 0.002989374069 -0.002474123667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.750245804e-08 -1.631998271e-05 1.790779847e-05 -1.631998271e-05 0.0001150957722 -1.03321315e-05 1.790779847e-05 -1.03321315e-05 1.756765345e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.519285034e-06 0.0001705991013 -9.522563428e-05 0.0001705991013 0.0005073583249 6.014253725e-05 -9.522563428e-05 6.014253725e-05 -0.0001838580071 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.007938911e-06 -2.520121085e-05 1.459547263e-05 -2.520121085e-05 0.0002568765678 -0.0001714555597 1.459547263e-05 -0.0001714555597 0.0001125543099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.619660095e-07 -2.139207122e-06 2.197850594e-06 -2.139207122e-06 -4.723737334e-05 2.577867266e-05 2.197850594e-06 2.577867266e-05 -9.972815198e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.953368163e-07 -3.918051147e-06 5.484097746e-06 -3.918051147e-06 -2.284705949e-05 1.786786576e-05 5.484097746e-06 1.786786576e-05 9.126899849e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.727321081e-07 -1.05027804e-06 4.758402707e-07 -1.05027804e-06 9.92086511e-05 -4.292411944e-05 4.758402707e-07 -4.292411944e-05 1.917573295e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.914792271e-07 5.259722204e-06 -2.34909243e-06 5.259722204e-06 6.199582602e-05 -1.853889291e-05 -2.34909243e-06 -1.853889291e-05 5.413421039e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.645254679e-07 1.513659347e-06 -2.564529768e-07 1.513659347e-06 1.953039846e-05 -3.442339752e-06 -2.564529768e-07 -3.442339752e-06 1.12166271e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.543023992e-07 4.32262232e-07 1.404093982e-07 4.32262232e-07 1.205608466e-05 -1.035842768e-06 1.404093982e-07 -1.035842768e-06 -6.181260883e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0009147181632 0.0006860973542 0.008122796526 0 0 0.0006860973542 -0.006539449068 0.0507403924 0 0 0.008122796526 0.0507403924 -0.02631560578 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0006754400601 -0.01142555878 0.007237171388 0 0 -0.01142555878 -0.06803697457 0.02001629436 0 0 0.007237171388 0.02001629436 -0.001136100736 0 0 0 0 0 0 0 0 0 0 0 0 +-4.20332898e-05 0.0004755947869 -0.0007826560875 0 0 0.0004755947869 -0.001118827375 0.001442972037 0 0 -0.0007826560875 0.001442972037 -0.002619517719 0 0 0 0 0 0 0 0 0 0 0 0 +-8.527331741e-05 0.0006260620409 -0.0004462702786 0 0 0.0006260620409 -0.003407486259 0.002989374069 0 0 -0.0004462702786 0.002989374069 -0.002474123667 0 0 0 0 0 0 0 0 0 0 0 0 +4.750245804e-08 -1.631998271e-05 1.790779847e-05 0 0 -1.631998271e-05 0.0001150957722 -1.03321315e-05 0 0 1.790779847e-05 -1.03321315e-05 1.756765345e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.519285034e-06 0.0001705991013 -9.522563428e-05 0 0 0.0001705991013 0.0005073583249 6.014253725e-05 0 0 -9.522563428e-05 6.014253725e-05 -0.0001838580071 0 0 0 0 0 0 0 0 0 0 0 0 +3.007938911e-06 -2.520121085e-05 1.459547263e-05 0 0 -2.520121085e-05 0.0002568765678 -0.0001714555597 0 0 1.459547263e-05 -0.0001714555597 0.0001125543099 0 0 0 0 0 0 0 0 0 0 0 0 +1.619660095e-07 -2.139207122e-06 2.197850594e-06 0 0 -2.139207122e-06 -4.723737334e-05 2.577867266e-05 0 0 2.197850594e-06 2.577867266e-05 -9.972815198e-06 0 0 0 0 0 0 0 0 0 0 0 0 +3.953368163e-07 -3.918051147e-06 5.484097746e-06 0 0 -3.918051147e-06 -2.284705949e-05 1.786786576e-05 0 0 5.484097746e-06 1.786786576e-05 9.126899849e-07 0 0 0 0 0 0 0 0 0 0 0 0 +4.727321081e-07 -1.05027804e-06 4.758402707e-07 0 0 -1.05027804e-06 9.92086511e-05 -4.292411944e-05 0 0 4.758402707e-07 -4.292411944e-05 1.917573295e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.914792271e-07 5.259722204e-06 -2.34909243e-06 0 0 5.259722204e-06 6.199582602e-05 -1.853889291e-05 0 0 -2.34909243e-06 -1.853889291e-05 5.413421039e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.645254679e-07 1.513659347e-06 -2.564529768e-07 0 0 1.513659347e-06 1.953039846e-05 -3.442339752e-06 0 0 -2.564529768e-07 -3.442339752e-06 1.12166271e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.543023992e-07 4.32262232e-07 1.404093982e-07 0 0 4.32262232e-07 1.205608466e-05 -1.035842768e-06 0 0 1.404093982e-07 -1.035842768e-06 -6.181260883e-08 0 0 0 0 0 0 0 0 0 0 0 0 0.01160631335 0.001148293427 0.001750788535 -0.03578033214 0.004456051822 0.001148293427 -0.0004298972574 0.0006621443719 -0.005254036156 -0.001527123992 0.001750788535 0.0006621443719 -0.0008801887228 -0.008432947825 -0.0006431432659 -0.03578033214 -0.005254036156 -0.008432947825 0.0602107318 -0.04374636423 0.004456051822 -0.001527123992 -0.0006431432659 -0.04374636423 -0.01968402599 -0.02413628562 -0.003199382915 -0.006612624186 0.02134716126 -0.04151988034 -0.003199382915 -0.001246545133 0.0009950799364 0.003042770361 -0.006245460555 -0.006612624186 0.0009950799364 -0.0007806430247 0.004052731721 -0.009889138914 0.02134716126 0.003042770361 0.004052731721 -0.02027751236 0.03628235005 -0.04151988034 -0.006245460555 -0.009889138914 0.03628235005 -0.07069324158 -0.001097279591 -0.0002125146069 -0.001326333048 0.002013659834 -0.001961146711 -0.0002125146069 -7.777042172e-05 1.120653371e-05 0.0003910005398 -0.0003131744904 -0.001326333048 1.120653371e-05 3.087780413e-06 0.001639713995 -0.001679992001 0.002013659834 0.0003910005398 0.001639713995 -0.003522835245 0.003178701197 -0.001961146711 -0.0003131744904 -0.001679992001 0.003178701197 -0.003186007286 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_3_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_3_ref.dat index 0cab7a952d..64ae9482bb 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_3_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_3_ref.dat @@ -11,19 +11,19 @@ 9.383482892e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.161501437e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.212980464e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.007664193524 0.04066223382 -0.01657556372 0.04066223382 -0.1263349742 -0.1001361371 -0.01657556372 -0.1001361371 0.0412488081 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01959237922 0.01058473679 -0.03922002242 0.01058473679 -0.05189649147 -0.02369159131 -0.03922002242 -0.02369159131 0.09570291207 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01310861076 -0.006639515061 -0.02519029672 -0.006639515061 0.001815278658 0.0158130168 -0.02519029672 0.0158130168 0.06044112893 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003579750791 -0.004336260425 -0.006734275428 -0.004336260425 0.006524641239 0.009710986063 -0.006734275428 0.009710986063 0.01589909374 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001440520634 -0.0007603485782 -0.0003678636392 -0.0007603485782 0.001583409214 0.001696842831 -0.0003678636392 0.001696842831 0.0008975275942 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0004251542169 0.000232132691 0.0008527195999 0.000232132691 -5.64229203e-05 -0.0005482976989 0.0008527195999 -0.0005482976989 -0.002016393031 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003127669714 0.0004297623418 0.0006733565138 0.0004297623418 -0.0006816507457 -0.001024240536 0.0006733565138 -0.001024240536 -0.00162664096 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.099078087e-05 5.871831372e-05 7.382861362e-05 5.871831372e-05 -9.294338883e-05 -0.0001341285679 7.382861362e-05 -0.0001341285679 -0.000174662424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.156961216e-05 -2.714514988e-05 -0.0001177474988 -2.714514988e-05 -1.31738601e-05 6.345849025e-05 -0.0001177474988 6.345849025e-05 0.0002764455611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.85995141e-05 -4.318326025e-05 -6.102674285e-05 -4.318326025e-05 6.5037427e-05 9.622728947e-05 -6.102674285e-05 9.622728947e-05 0.0001392906195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.383430719e-06 -1.759473295e-06 -9.073813944e-06 -1.759473295e-06 -3.161390899e-06 3.862334472e-06 -9.073813944e-06 3.862334472e-06 2.080567335e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.207615679e-06 -4.61209725e-07 5.279263515e-06 -4.61209725e-07 4.282704287e-06 5.659384095e-07 5.279263515e-06 5.659384095e-07 -1.166386678e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.496058515e-06 7.089614649e-06 7.673509415e-06 7.089614649e-06 -1.443988396e-05 -1.742326996e-05 7.673509415e-06 -1.742326996e-05 -1.87445809e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.007664193524 0.04066223382 -0.01657556372 0 0 0.04066223382 -0.1263349742 -0.1001361371 0 0 -0.01657556372 -0.1001361371 0.0412488081 0 0 0 0 0 0 0 0 0 0 0 0 +0.01959237922 0.01058473679 -0.03922002242 0 0 0.01058473679 -0.05189649147 -0.02369159131 0 0 -0.03922002242 -0.02369159131 0.09570291207 0 0 0 0 0 0 0 0 0 0 0 0 +0.01310861076 -0.006639515061 -0.02519029672 0 0 -0.006639515061 0.001815278658 0.0158130168 0 0 -0.02519029672 0.0158130168 0.06044112893 0 0 0 0 0 0 0 0 0 0 0 0 +0.003579750791 -0.004336260425 -0.006734275428 0 0 -0.004336260425 0.006524641239 0.009710986063 0 0 -0.006734275428 0.009710986063 0.01589909374 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001440520634 -0.0007603485782 -0.0003678636392 0 0 -0.0007603485782 0.001583409214 0.001696842831 0 0 -0.0003678636392 0.001696842831 0.0008975275942 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004251542169 0.000232132691 0.0008527195999 0 0 0.000232132691 -5.64229203e-05 -0.0005482976989 0 0 0.0008527195999 -0.0005482976989 -0.002016393031 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003127669714 0.0004297623418 0.0006733565138 0 0 0.0004297623418 -0.0006816507457 -0.001024240536 0 0 0.0006733565138 -0.001024240536 -0.00162664096 0 0 0 0 0 0 0 0 0 0 0 0 +-3.099078087e-05 5.871831372e-05 7.382861362e-05 0 0 5.871831372e-05 -9.294338883e-05 -0.0001341285679 0 0 7.382861362e-05 -0.0001341285679 -0.000174662424 0 0 0 0 0 0 0 0 0 0 0 0 +5.156961216e-05 -2.714514988e-05 -0.0001177474988 0 0 -2.714514988e-05 -1.31738601e-05 6.345849025e-05 0 0 -0.0001177474988 6.345849025e-05 0.0002764455611 0 0 0 0 0 0 0 0 0 0 0 0 +2.85995141e-05 -4.318326025e-05 -6.102674285e-05 0 0 -4.318326025e-05 6.5037427e-05 9.622728947e-05 0 0 -6.102674285e-05 9.622728947e-05 0.0001392906195 0 0 0 0 0 0 0 0 0 0 0 0 +3.383430719e-06 -1.759473295e-06 -9.073813944e-06 0 0 -1.759473295e-06 -3.161390899e-06 3.862334472e-06 0 0 -9.073813944e-06 3.862334472e-06 2.080567335e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.207615679e-06 -4.61209725e-07 5.279263515e-06 0 0 -4.61209725e-07 4.282704287e-06 5.659384095e-07 0 0 5.279263515e-06 5.659384095e-07 -1.166386678e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.496058515e-06 7.089614649e-06 7.673509415e-06 0 0 7.089614649e-06 -1.443988396e-05 -1.742326996e-05 0 0 7.673509415e-06 -1.742326996e-05 -1.87445809e-05 0 0 0 0 0 0 0 0 0 0 0 0 -0.005348105684 -0.006733940534 -0.003330838209 0.0021340767 0.01453489702 -0.006733940534 -0.006635782535 -0.005067236287 0.001140684003 0.01598797007 -0.003330838209 -0.005067236287 0.002521523192 0.01107141102 0.01273972435 0.0021340767 0.001140684003 0.01107141102 0.01818123585 -0.001652354904 0.01453489702 0.01598797007 0.01273972435 -0.001652354904 -0.03962071318 -0.003917545826 -0.005036856128 0.0003598482735 0.005359318084 0.01053283105 -0.005036856128 -0.004544267308 -0.002227251594 0.003555108511 0.01152239699 0.0003598482735 -0.002227251594 0.007123417608 0.01492097582 0.006043635121 0.005359318084 0.003555108511 0.01492097582 0.0207426915 -0.008088652847 0.01053283105 0.01152239699 0.006043635121 -0.008088652847 -0.03040298329 -0.0004236151819 -0.0005737306227 0.002501988678 0.003884838076 0.001177033178 -0.0005737306227 -0.0005274176864 0.0008052518359 0.002601539678 0.001745703382 0.002501988678 0.0008052518359 0.005260727932 0.007704770275 -0.001793798361 0.003884838076 0.002601539678 0.007704770275 0.008996683422 -0.006652172062 0.001177033178 0.001745703382 -0.001793798361 -0.006652172062 -0.005528354439 @@ -50,19 +50,19 @@ 1.558385185e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.445628533e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.458807598e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02950488925 0.04104857259 -0.02800034847 0.04104857259 -0.07301032102 -0.05847955002 -0.02800034847 -0.05847955002 0.02505769174 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01799793527 -0.006318020859 -0.01995098964 -0.006318020859 -0.001388095579 0.00321016533 -0.01995098964 0.00321016533 0.01922260592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000209430316 0.0005794166676 -0.0005725313263 0.0005794166676 0.001493698855 0.001546123635 -0.0005725313263 0.001546123635 0.0008583233693 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002781437806 0.0002803016557 -0.0009143534124 0.0002803016557 5.789385526e-07 -1.458964878e-05 -0.0009143534124 -1.458964878e-05 5.224914819e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.725756811e-05 -7.471464575e-05 7.965474917e-05 -7.471464575e-05 -0.0001695481976 -0.0001678036532 7.965474917e-05 -0.0001678036532 -0.0001201381439 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.88679966e-06 5.155373038e-05 5.557159316e-05 5.155373038e-05 -3.198205646e-05 -4.579714158e-05 5.557159316e-05 -4.579714158e-05 -7.606400079e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.498852667e-05 -6.130196532e-06 -1.962115619e-05 -6.130196532e-06 -5.031798649e-08 1.630099063e-06 -1.962115619e-05 1.630099063e-06 5.251318395e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.410292827e-05 -1.313325851e-05 -1.024430369e-05 -1.313325851e-05 -1.122562455e-05 -3.318616306e-06 -1.024430369e-05 -3.318616306e-06 2.077833141e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.596919322e-05 2.26221629e-05 1.504884969e-05 2.26221629e-05 -2.2460604e-05 -2.268378634e-05 1.504884969e-05 -2.268378634e-05 -1.376210397e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.354326959e-05 9.643274639e-06 9.390356965e-06 9.643274639e-06 -7.126439113e-06 -7.538192412e-06 9.390356965e-06 -7.538192412e-06 -6.79261376e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.477313362e-07 6.556084117e-08 -1.079955921e-06 6.556084117e-08 -5.168545124e-06 -3.728250627e-06 -1.079955921e-06 -3.728250627e-06 1.256602316e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.805515511e-06 3.271562279e-06 -2.450672209e-06 3.271562279e-06 -5.230867322e-06 -3.801335609e-06 -2.450672209e-06 -3.801335609e-06 1.879747691e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.950585572e-06 3.721833535e-06 2.009932101e-06 3.721833535e-06 -5.61695189e-06 -5.123494257e-06 2.009932101e-06 -5.123494257e-06 -1.939671021e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02950488925 0.04104857259 -0.02800034847 0 0 0.04104857259 -0.07301032102 -0.05847955002 0 0 -0.02800034847 -0.05847955002 0.02505769174 0 0 0 0 0 0 0 0 0 0 0 0 +0.01799793527 -0.006318020859 -0.01995098964 0 0 -0.006318020859 -0.001388095579 0.00321016533 0 0 -0.01995098964 0.00321016533 0.01922260592 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000209430316 0.0005794166676 -0.0005725313263 0 0 0.0005794166676 0.001493698855 0.001546123635 0 0 -0.0005725313263 0.001546123635 0.0008583233693 0 0 0 0 0 0 0 0 0 0 0 0 +0.002781437806 0.0002803016557 -0.0009143534124 0 0 0.0002803016557 5.789385526e-07 -1.458964878e-05 0 0 -0.0009143534124 -1.458964878e-05 5.224914819e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.725756811e-05 -7.471464575e-05 7.965474917e-05 0 0 -7.471464575e-05 -0.0001695481976 -0.0001678036532 0 0 7.965474917e-05 -0.0001678036532 -0.0001201381439 0 0 0 0 0 0 0 0 0 0 0 0 +-4.88679966e-06 5.155373038e-05 5.557159316e-05 0 0 5.155373038e-05 -3.198205646e-05 -4.579714158e-05 0 0 5.557159316e-05 -4.579714158e-05 -7.606400079e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.498852667e-05 -6.130196532e-06 -1.962115619e-05 0 0 -6.130196532e-06 -5.031798649e-08 1.630099063e-06 0 0 -1.962115619e-05 1.630099063e-06 5.251318395e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.410292827e-05 -1.313325851e-05 -1.024430369e-05 0 0 -1.313325851e-05 -1.122562455e-05 -3.318616306e-06 0 0 -1.024430369e-05 -3.318616306e-06 2.077833141e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.596919322e-05 2.26221629e-05 1.504884969e-05 0 0 2.26221629e-05 -2.2460604e-05 -2.268378634e-05 0 0 1.504884969e-05 -2.268378634e-05 -1.376210397e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.354326959e-05 9.643274639e-06 9.390356965e-06 0 0 9.643274639e-06 -7.126439113e-06 -7.538192412e-06 0 0 9.390356965e-06 -7.538192412e-06 -6.79261376e-06 0 0 0 0 0 0 0 0 0 0 0 0 +4.477313362e-07 6.556084117e-08 -1.079955921e-06 0 0 6.556084117e-08 -5.168545124e-06 -3.728250627e-06 0 0 -1.079955921e-06 -3.728250627e-06 1.256602316e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.805515511e-06 3.271562279e-06 -2.450672209e-06 0 0 3.271562279e-06 -5.230867322e-06 -3.801335609e-06 0 0 -2.450672209e-06 -3.801335609e-06 1.879747691e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.950585572e-06 3.721833535e-06 2.009932101e-06 0 0 3.721833535e-06 -5.61695189e-06 -5.123494257e-06 0 0 2.009932101e-06 -5.123494257e-06 -1.939671021e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.02706186244 0.02158514817 -0.03299845132 -0.02006712664 -0.01924952552 0.02158514817 -0.07425598654 -0.05957566943 0.009287625922 0.03802409991 -0.03299845132 -0.05957566943 0.0305927398 0.03372517806 0.04414392206 -0.02006712664 0.009287625922 0.03372517806 0.009247803559 0.000190586509 -0.01924952552 0.03802409991 0.04414392206 0.000190586509 -0.01801349865 0.01641712564 -0.002665745461 -0.02403202601 -0.007479363763 -0.002249455028 -0.002665745461 -0.01021644115 -0.001224168769 0.005870053783 0.004735124636 -0.02403202601 -0.001224168769 0.03574149041 0.01361186954 0.005812018808 -0.007479363763 0.005870053783 0.01361186954 0.002194591425 -0.0008669081012 -0.002249455028 0.004735124636 0.005812018808 -0.0008669081012 -0.001898364497 0.0005577206158 -0.001219842125 -0.001970604084 -9.041592363e-05 0.0001930080168 -0.001219842125 0.002830034681 0.00388504848 0.0001509437608 -0.0008639435745 -0.001970604084 0.00388504848 0.005541753009 0.0004166519735 -0.001481887675 -9.041592363e-05 0.0001509437608 0.0004166519735 -1.879725857e-06 1.066360696e-05 0.0001930080168 -0.0008639435745 -0.001481887675 1.066360696e-05 -7.808260383e-05 @@ -89,19 +89,19 @@ -2.352409215e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.37965932e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.305405021e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001387844622 -0.001336322789 -0.009513347233 -0.001336322789 0.01091875091 0.0379902116 -0.009513347233 0.0379902116 0.06934576646 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0008648221755 -0.01208493229 -0.006436633489 -0.01208493229 0.02515848151 0.03220345261 -0.006436633489 0.03220345261 0.02863905211 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.467144047e-05 0.0008143578821 0.0006797534499 0.0008143578821 0.004055451816 0.001579944372 0.0006797534499 0.001579944372 -0.0003772711049 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.80713542e-05 0.00023424215 9.163511633e-05 0.00023424215 0.004415113033 0.001997657479 9.163511633e-05 0.001997657479 0.000957700896 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.107522876e-06 1.233899163e-05 1.216103013e-05 1.233899163e-05 0.0001870555829 0.0001692931919 1.216103013e-05 0.0001692931919 0.0001244607221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.170129359e-07 0.00016642794 7.398891291e-05 0.00016642794 0.0001805917232 -0.0002054728789 7.398891291e-05 -0.0002054728789 -0.0002350885809 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.663320331e-06 4.067769603e-06 3.669437904e-06 4.067769603e-06 -0.0002953660123 -0.0001585580226 3.669437904e-06 -0.0001585580226 -9.139438231e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.71170904e-07 9.387442809e-07 7.810281385e-07 9.387442809e-07 4.452935615e-05 2.718105787e-05 7.810281385e-07 2.718105787e-05 1.572970639e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.430335815e-08 -6.631521663e-06 -7.935056763e-06 -6.631521663e-06 1.471792538e-05 2.162166551e-05 -7.935056763e-06 2.162166551e-05 3.240829777e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.37898028e-07 3.895863126e-06 1.454061199e-06 3.895863126e-06 -6.700666618e-05 -3.714392887e-05 1.454061199e-06 -3.714392887e-05 -1.821370987e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.924316362e-07 4.13345056e-06 1.74133267e-06 4.13345056e-06 -5.74476459e-05 -3.551599503e-05 1.74133267e-06 -3.551599503e-05 -2.007757364e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.758177789e-07 2.804312352e-06 6.174215501e-07 2.804312352e-06 -1.433578754e-05 -1.067416945e-05 6.174215501e-07 -1.067416945e-05 -4.800685285e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.5805975e-07 7.615741321e-07 -2.460995493e-07 7.615741321e-07 -8.729282768e-06 -3.439350476e-06 -2.460995493e-07 -3.439350476e-06 7.271951303e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001387844622 -0.001336322789 -0.009513347233 0 0 -0.001336322789 0.01091875091 0.0379902116 0 0 -0.009513347233 0.0379902116 0.06934576646 0 0 0 0 0 0 0 0 0 0 0 0 +0.0008648221755 -0.01208493229 -0.006436633489 0 0 -0.01208493229 0.02515848151 0.03220345261 0 0 -0.006436633489 0.03220345261 0.02863905211 0 0 0 0 0 0 0 0 0 0 0 0 +2.467144047e-05 0.0008143578821 0.0006797534499 0 0 0.0008143578821 0.004055451816 0.001579944372 0 0 0.0006797534499 0.001579944372 -0.0003772711049 0 0 0 0 0 0 0 0 0 0 0 0 +5.80713542e-05 0.00023424215 9.163511633e-05 0 0 0.00023424215 0.004415113033 0.001997657479 0 0 9.163511633e-05 0.001997657479 0.000957700896 0 0 0 0 0 0 0 0 0 0 0 0 +2.107522876e-06 1.233899163e-05 1.216103013e-05 0 0 1.233899163e-05 0.0001870555829 0.0001692931919 0 0 1.216103013e-05 0.0001692931919 0.0001244607221 0 0 0 0 0 0 0 0 0 0 0 0 +-7.170129359e-07 0.00016642794 7.398891291e-05 0 0 0.00016642794 0.0001805917232 -0.0002054728789 0 0 7.398891291e-05 -0.0002054728789 -0.0002350885809 0 0 0 0 0 0 0 0 0 0 0 0 +-2.663320331e-06 4.067769603e-06 3.669437904e-06 0 0 4.067769603e-06 -0.0002953660123 -0.0001585580226 0 0 3.669437904e-06 -0.0001585580226 -9.139438231e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.71170904e-07 9.387442809e-07 7.810281385e-07 0 0 9.387442809e-07 4.452935615e-05 2.718105787e-05 0 0 7.810281385e-07 2.718105787e-05 1.572970639e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.430335815e-08 -6.631521663e-06 -7.935056763e-06 0 0 -6.631521663e-06 1.471792538e-05 2.162166551e-05 0 0 -7.935056763e-06 2.162166551e-05 3.240829777e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.37898028e-07 3.895863126e-06 1.454061199e-06 0 0 3.895863126e-06 -6.700666618e-05 -3.714392887e-05 0 0 1.454061199e-06 -3.714392887e-05 -1.821370987e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.924316362e-07 4.13345056e-06 1.74133267e-06 0 0 4.13345056e-06 -5.74476459e-05 -3.551599503e-05 0 0 1.74133267e-06 -3.551599503e-05 -2.007757364e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.758177789e-07 2.804312352e-06 6.174215501e-07 0 0 2.804312352e-06 -1.433578754e-05 -1.067416945e-05 0 0 6.174215501e-07 -1.067416945e-05 -4.800685285e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.5805975e-07 7.615741321e-07 -2.460995493e-07 0 0 7.615741321e-07 -8.729282768e-06 -3.439350476e-06 0 0 -2.460995493e-07 -3.439350476e-06 7.271951303e-07 0 0 0 0 0 0 0 0 0 0 0 0 -0.009911686873 -0.001200287372 0.001800591149 0.03153194479 0.001940215529 -0.001200287372 0.0008041789659 0.0007511410964 0.006913757951 -0.001261434419 0.001800591149 0.0007511410964 -1.362262198e-05 -0.007226763219 0.001620663838 0.03153194479 0.006913757951 -0.007226763219 -0.0520331514 -0.04211542156 0.001940215529 -0.001261434419 0.001620663838 -0.04211542156 0.02302394515 0.02274899886 0.006034287381 -0.004706134857 -0.01954879486 -0.03979733789 0.006034287381 0.001885891163 0.0006221563931 -0.004341898718 -0.008517298285 -0.004706134857 0.0006221563931 3.672700115e-06 0.003431114354 0.008213223413 -0.01954879486 -0.004341898718 0.003431114354 0.01633833812 0.03259382937 -0.03979733789 -0.008517298285 0.008213223413 0.03259382937 0.06991099433 0.0004408617552 0.0008761731601 -0.0005270962273 -0.0002216850546 -0.001453490462 0.0008761731601 4.323155463e-05 6.870465762e-06 -0.001309721845 -0.0008682291843 -0.0005270962273 6.870465762e-06 -1.926742922e-06 0.0006945308413 0.0006593181432 -0.0002216850546 -0.001309721845 0.0006945308413 -0.0003596352277 0.001658576458 -0.001453490462 -0.0008682291843 0.0006593181432 0.001658576458 0.002753120203 @@ -113,7 +113,7 @@ -1.506119801e-06 -6.97400454e-07 3.59111147e-07 6.364787584e-06 5.458106852e-07 -6.97400454e-07 1.293871402e-07 3.011989158e-08 4.679660837e-06 -1.229466585e-06 3.59111147e-07 3.011989158e-08 -5.387646603e-08 -1.760495601e-06 2.078450186e-07 6.364787584e-06 4.679660837e-06 -1.760495601e-06 -6.458377546e-06 -1.380175008e-05 5.458106852e-07 -1.229466585e-06 2.078450186e-07 -1.380175008e-05 7.875326714e-06 -3.178740082e-05 1.722662779e-06 1.694861445e-06 3.717583764e-05 4.415316556e-05 1.722662779e-06 -3.361575141e-08 -3.763079972e-08 -2.231775363e-06 -2.221086195e-06 1.694861445e-06 -3.763079972e-08 2.489544388e-08 -2.045300594e-06 -2.268997311e-06 3.717583764e-05 -2.231775363e-06 -2.045300594e-06 -4.374427599e-05 -5.136953496e-05 4.415316556e-05 -2.221086195e-06 -2.268997311e-06 -5.136953496e-05 -6.10125304e-05 -1.190825741e-05 -2.358252393e-06 9.367165112e-07 1.156645756e-05 1.95219364e-05 -2.358252393e-06 -1.058556621e-07 -2.177624137e-08 2.768979594e-06 3.173841207e-06 9.367165112e-07 -2.177624137e-08 1.408664091e-08 -1.145330481e-06 -1.241177365e-06 1.156645756e-05 2.768979594e-06 -1.145330481e-06 -1.066770345e-05 -1.980444036e-05 1.95219364e-05 3.173841207e-06 -1.241177365e-06 -1.980444036e-05 -3.049466854e-05 --2.522655075e-06 -5.412199734e-07 2.955146575e-07 3.800069161e-06 3.523857413e-06 -5.412199734e-07 7.604504601e-08 7.066152311e-09 1.265890423e-06 4.429989372e-07 2.955146575e-07 7.066152311e-09 -6.735699387e-09 -6.450633202e-07 -2.270914953e-07 3.800069161e-06 1.265890423e-06 -6.450633202e-07 -4.328481898e-06 -6.502849554e-06 3.523857413e-06 4.429989372e-07 -2.270914953e-07 -6.502849554e-06 -3.569913879e-06 +-2.522655075e-06 -5.412199734e-07 2.955146575e-07 3.800069161e-06 3.523857413e-06 -5.412199734e-07 7.6045046e-08 7.066152311e-09 1.265890423e-06 4.429989372e-07 2.955146575e-07 7.066152311e-09 -6.735699387e-09 -6.450633202e-07 -2.270914953e-07 3.800069161e-06 1.265890423e-06 -6.450633202e-07 -4.328481898e-06 -6.502849554e-06 3.523857413e-06 4.429989372e-07 -2.270914953e-07 -6.502849554e-06 -3.569913879e-06 -2.692281207e-06 -2.064017846e-07 2.341880791e-07 4.39998998e-06 3.348344044e-06 -2.064017846e-07 8.143736519e-08 1.69476517e-09 5.431043849e-07 1.548807028e-07 2.341880791e-07 1.69476517e-09 -5.672353488e-09 -5.204323752e-07 -1.745540741e-07 4.39998998e-06 5.431043849e-07 -5.204323752e-07 -5.894492638e-06 -6.445865554e-06 3.348344044e-06 1.548807028e-07 -1.745540741e-07 -6.445865554e-06 -3.140177185e-06 0.1000747593 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.03272254592 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -128,19 +128,19 @@ 2.358218287e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.460090745e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.557822579e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09149401221 0.06369609245 -0.01928878836 0.06369609245 0.04169454447 -0.08084949749 -0.01928878836 -0.08084949749 0.108183336 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.077078008 0.02854925803 -0.0003327461126 0.02854925803 0.06007754636 -0.03170390421 -0.0003327461126 -0.03170390421 0.02419334054 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.007394806524 0.01404745362 -0.004850673704 0.01404745362 -0.03711273902 -0.03301190804 -0.004850673704 -0.03301190804 0.01907067063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.006206735407 -0.003453179019 -0.01664403305 -0.003453179019 -0.001423586856 0.009531247988 -0.01664403305 0.009531247988 0.03798551427 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.387427877e-05 0.0001060529261 -4.577676057e-05 0.0001060529261 -0.0002170811378 -0.0002690497073 -4.577676057e-05 -0.0002690497073 3.742118424e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.821541492e-05 0.0001768457421 0.0003211588002 0.0001768457421 -0.0005682237614 -0.0006375825229 0.0003211588002 -0.0006375825229 -0.0005461511949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001701917797 -8.091589339e-05 -0.000607102577 -8.091589339e-05 -0.0006987937405 8.603418379e-06 -0.000607102577 8.603418379e-06 0.001268957696 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.428121234e-05 6.152236838e-05 8.59859292e-05 6.152236838e-05 -5.44296946e-05 -0.0001338310189 8.59859292e-05 -0.0001338310189 -0.0002165461917 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.754483838e-06 9.562536823e-06 3.423424878e-05 9.562536823e-06 0.0001243525987 2.18581563e-05 3.423424878e-05 2.18581563e-05 -1.550285068e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.311285701e-06 -1.268077723e-06 -6.390254805e-05 -1.268077723e-06 -0.0001571742431 -3.344611123e-05 -6.390254805e-05 -3.344611123e-05 0.0001409875882 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.006100665e-05 1.63522009e-05 3.080228387e-05 1.63522009e-05 -0.0001006272529 -8.564006089e-05 3.080228387e-05 -8.564006089e-05 -0.0001019130292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.59087978e-06 -9.063444127e-06 -1.309780776e-05 -9.063444127e-06 -5.666482736e-06 9.907955713e-06 -1.309780776e-05 9.907955713e-06 2.912095871e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.334522227e-06 3.446338062e-06 -5.897312521e-06 3.446338062e-06 -2.804383206e-05 -1.232776264e-05 -5.897312521e-06 -1.232776264e-05 1.157611707e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.09149401221 0.06369609245 -0.01928878836 0 0 0.06369609245 0.04169454447 -0.08084949749 0 0 -0.01928878836 -0.08084949749 0.108183336 0 0 0 0 0 0 0 0 0 0 0 0 +0.077078008 0.02854925803 -0.0003327461126 0 0 0.02854925803 0.06007754636 -0.03170390421 0 0 -0.0003327461126 -0.03170390421 0.02419334054 0 0 0 0 0 0 0 0 0 0 0 0 +0.007394806524 0.01404745362 -0.004850673704 0 0 0.01404745362 -0.03711273902 -0.03301190804 0 0 -0.004850673704 -0.03301190804 0.01907067063 0 0 0 0 0 0 0 0 0 0 0 0 +0.006206735407 -0.003453179019 -0.01664403305 0 0 -0.003453179019 -0.001423586856 0.009531247988 0 0 -0.01664403305 0.009531247988 0.03798551427 0 0 0 0 0 0 0 0 0 0 0 0 +-5.387427877e-05 0.0001060529261 -4.577676057e-05 0 0 0.0001060529261 -0.0002170811378 -0.0002690497073 0 0 -4.577676057e-05 -0.0002690497073 3.742118424e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-6.821541492e-05 0.0001768457421 0.0003211588002 0 0 0.0001768457421 -0.0005682237614 -0.0006375825229 0 0 0.0003211588002 -0.0006375825229 -0.0005461511949 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001701917797 -8.091589339e-05 -0.000607102577 0 0 -8.091589339e-05 -0.0006987937405 8.603418379e-06 0 0 -0.000607102577 8.603418379e-06 0.001268957696 0 0 0 0 0 0 0 0 0 0 0 0 +-1.428121234e-05 6.152236838e-05 8.59859292e-05 0 0 6.152236838e-05 -5.44296946e-05 -0.0001338310189 0 0 8.59859292e-05 -0.0001338310189 -0.0002165461917 0 0 0 0 0 0 0 0 0 0 0 0 +3.754483838e-06 9.562536823e-06 3.423424878e-05 0 0 9.562536823e-06 0.0001243525987 2.18581563e-05 0 0 3.423424878e-05 2.18581563e-05 -1.550285068e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.311285701e-06 -1.268077723e-06 -6.390254805e-05 0 0 -1.268077723e-06 -0.0001571742431 -3.344611123e-05 0 0 -6.390254805e-05 -3.344611123e-05 0.0001409875882 0 0 0 0 0 0 0 0 0 0 0 0 +-1.006100665e-05 1.63522009e-05 3.080228387e-05 0 0 1.63522009e-05 -0.0001006272529 -8.564006089e-05 0 0 3.080228387e-05 -8.564006089e-05 -0.0001019130292 0 0 0 0 0 0 0 0 0 0 0 0 +9.59087978e-06 -9.063444127e-06 -1.309780776e-05 0 0 -9.063444127e-06 -5.666482736e-06 9.907955713e-06 0 0 -1.309780776e-05 9.907955713e-06 2.912095871e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.334522227e-06 3.446338062e-06 -5.897312521e-06 0 0 3.446338062e-06 -2.804383206e-05 -1.232776264e-05 0 0 -5.897312521e-06 -1.232776264e-05 1.157611707e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.01015237725 0.06363553134 -0.04555188237 0.09908550671 0.1187121036 0.06363553134 -0.1485829416 -0.1217818102 0.02118008374 0.004626456848 -0.04555188237 -0.1217818102 0.06889802883 0.03202533092 0.05670009739 0.09908550671 0.02118008374 0.03202533092 -0.1460278181 0.08003269016 0.1187121036 0.004626456848 0.05670009739 0.08003269016 -0.001124027591 0.06727106255 0.01277284766 -0.05602556244 0.004504330779 -0.02746763402 0.01277284766 -0.03338367954 -0.01521643091 -0.005176498848 -0.03193820575 -0.05602556244 -0.01521643091 0.0853149455 0.01026809513 0.01645748155 0.004504330779 -0.005176498848 0.01026809513 0.005645610283 0.0791274858 -0.02746763402 -0.03193820575 0.01645748155 0.0791274858 0.1219750246 0.004196709112 -0.008482121892 -0.01770072942 0.001876434215 0.009654438895 -0.008482121892 -0.001700047554 -0.002187547512 -0.007289080595 0.004928041715 -0.01770072942 -0.002187547512 0.0108894046 -0.002585180783 0.01989618619 0.001876434215 -0.007289080595 -0.002585180783 0.01003371092 0.01505178001 0.009654438895 0.004928041715 0.01989618619 0.01505178001 -0.01520199767 @@ -153,7 +153,7 @@ -8.768153685e-05 -2.94582707e-05 -3.10548589e-05 1.67454171e-05 0.0001534489498 -2.94582707e-05 -3.687992119e-05 -4.712067372e-05 -5.039197036e-06 8.217070718e-05 -3.10548589e-05 -4.712067372e-05 -5.532627592e-05 -8.306803991e-06 9.686621185e-05 1.67454171e-05 -5.039197036e-06 -8.306803991e-06 -4.758896172e-05 -6.580044514e-06 0.0001534489498 8.217070718e-05 9.686621185e-05 -6.580044514e-06 -0.0002821726015 -3.79937944e-06 5.631498433e-07 -7.478648863e-06 1.761473453e-05 1.827625372e-05 5.631498433e-07 -1.317803989e-06 6.810236999e-07 -3.469365478e-06 -5.727599754e-06 -7.478648863e-06 6.810236999e-07 1.057631426e-05 -6.223073148e-06 -2.776154795e-06 1.761473453e-05 -3.469365478e-06 -6.223073148e-06 -2.467997929e-05 -7.763971543e-06 1.827625372e-05 -5.727599754e-06 -2.776154795e-06 -7.763971543e-06 -6.842025982e-06 3.688046869e-06 1.284863937e-05 1.323250751e-05 2.128032324e-05 -3.341450856e-06 1.284863937e-05 -4.458398894e-06 1.299696799e-06 1.18464593e-05 -1.251128203e-05 1.323250751e-05 1.299696799e-06 1.948815681e-05 1.797189497e-05 -2.262014046e-05 2.128032324e-05 1.18464593e-05 1.797189497e-05 -4.679932784e-06 -2.303357291e-05 -3.341450856e-06 -1.251128203e-05 -2.262014046e-05 -2.303357291e-05 2.496167591e-05 --1.390467361e-05 1.062273208e-06 -2.192005483e-06 5.130501093e-06 2.416166949e-05 1.062273208e-06 -1.121303221e-05 -1.316332089e-05 5.452540246e-08 1.089995987e-05 -2.192005483e-06 -1.316332089e-05 -1.165030373e-05 -2.388467019e-06 1.509810724e-05 5.130501093e-06 5.452540246e-08 -2.388467019e-06 -1.864841256e-05 4.490274109e-06 2.416166949e-05 1.089995987e-05 1.509810724e-05 4.490274109e-06 -3.35718574e-05 +-1.390467361e-05 1.062273208e-06 -2.192005483e-06 5.130501093e-06 2.416166949e-05 1.062273208e-06 -1.121303221e-05 -1.316332089e-05 5.452540247e-08 1.089995987e-05 -2.192005483e-06 -1.316332089e-05 -1.165030373e-05 -2.388467019e-06 1.509810724e-05 5.130501093e-06 5.452540247e-08 -2.388467019e-06 -1.864841256e-05 4.490274109e-06 2.416166949e-05 1.089995987e-05 1.509810724e-05 4.490274109e-06 -3.35718574e-05 0.0003180261582 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001239805291 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004451128424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -167,19 +167,19 @@ -3.117137793e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.232062512e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.034100449e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.898505126e-06 0.01672604601 4.18446788e-06 0.01672604601 -0.04739385261 -0.0828809491 4.18446788e-06 -0.0828809491 -7.517414324e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.895930283e-06 0.0007874668655 0.0002185582318 0.0007874668655 -0.001753161561 -0.002811079859 0.0002185582318 -0.002811079859 0.000307085273 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.927365215e-07 -0.0008189806237 -3.480753873e-05 -0.0008189806237 0.002036689103 -0.0007479882335 -3.480753873e-05 -0.0007479882335 -0.000120602444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.037947764e-06 -4.605751844e-05 -2.962521181e-05 -4.605751844e-05 0.0001340626974 -0.0002075412193 -2.962521181e-05 -0.0002075412193 -0.0001594584824 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.870324299e-09 1.506566307e-05 -3.437272617e-07 1.506566307e-05 -6.855576228e-05 -0.0001195179031 -3.437272617e-07 -0.0001195179031 -6.215623416e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.289425604e-08 1.624961421e-05 -2.830716913e-06 1.624961421e-05 -5.309481076e-05 -5.289159296e-06 -2.830716913e-06 -5.289159296e-06 -7.390705253e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.871472076e-08 -2.097053069e-06 7.369847705e-07 -2.097053069e-06 3.831860615e-06 -1.215579479e-05 7.369847705e-07 -1.215579479e-05 5.503097884e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.631707003e-11 2.08275131e-06 -8.604793549e-08 2.08275131e-06 -6.500065431e-06 -5.397799499e-06 -8.604793549e-08 -5.397799499e-06 8.106986918e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.935956526e-10 6.870787584e-06 -2.38564119e-07 6.870787584e-06 -2.103426457e-05 -1.47486206e-05 -2.38564119e-07 -1.47486206e-05 7.125410082e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.411279169e-09 -2.131242057e-07 1.030331566e-07 -2.131242057e-07 -2.170737391e-06 -1.55233457e-05 1.030331566e-07 -1.55233457e-05 7.889963042e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.759592881e-09 1.44070826e-06 -3.646484172e-08 1.44070826e-06 -5.284114325e-06 -5.449257173e-06 -3.646484172e-08 -5.449257173e-06 1.781209102e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.852904953e-09 1.348380804e-06 -5.567154937e-08 1.348380804e-06 -4.57192339e-06 -5.428520021e-06 -5.567154937e-08 -5.428520021e-06 4.926406983e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.180907026e-09 8.571011301e-07 -1.507705866e-08 8.571011301e-07 -3.350607477e-06 -6.511854418e-06 -1.507705866e-08 -6.511854418e-06 6.130614368e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +9.898505126e-06 0.01672604601 4.18446788e-06 0 0 0.01672604601 -0.04739385261 -0.0828809491 0 0 4.18446788e-06 -0.0828809491 -7.517414324e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.895930283e-06 0.0007874668655 0.0002185582318 0 0 0.0007874668655 -0.001753161561 -0.002811079859 0 0 0.0002185582318 -0.002811079859 0.000307085273 0 0 0 0 0 0 0 0 0 0 0 0 +4.927365215e-07 -0.0008189806237 -3.480753873e-05 0 0 -0.0008189806237 0.002036689103 -0.0007479882335 0 0 -3.480753873e-05 -0.0007479882335 -0.000120602444 0 0 0 0 0 0 0 0 0 0 0 0 +1.037947764e-06 -4.605751844e-05 -2.962521181e-05 0 0 -4.605751844e-05 0.0001340626974 -0.0002075412193 0 0 -2.962521181e-05 -0.0002075412193 -0.0001594584824 0 0 0 0 0 0 0 0 0 0 0 0 +1.870324299e-09 1.506566307e-05 -3.437272617e-07 0 0 1.506566307e-05 -6.855576228e-05 -0.0001195179031 0 0 -3.437272617e-07 -0.0001195179031 -6.215623416e-07 0 0 0 0 0 0 0 0 0 0 0 0 +4.289425604e-08 1.624961421e-05 -2.830716913e-06 0 0 1.624961421e-05 -5.309481076e-05 -5.289159296e-06 0 0 -2.830716913e-06 -5.289159296e-06 -7.390705253e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.871472076e-08 -2.097053069e-06 7.369847705e-07 0 0 -2.097053069e-06 3.831860615e-06 -1.215579479e-05 0 0 7.369847705e-07 -1.215579479e-05 5.503097884e-06 0 0 0 0 0 0 0 0 0 0 0 0 +4.631707003e-11 2.08275131e-06 -8.604793549e-08 0 0 2.08275131e-06 -6.500065431e-06 -5.397799499e-06 0 0 -8.604793549e-08 -5.397799499e-06 8.106986918e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-9.935956526e-10 6.870787584e-06 -2.38564119e-07 0 0 6.870787584e-06 -2.103426457e-05 -1.47486206e-05 0 0 -2.38564119e-07 -1.47486206e-05 7.125410082e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-5.411279169e-09 -2.131242057e-07 1.030331566e-07 0 0 -2.131242057e-07 -2.170737391e-06 -1.55233457e-05 0 0 1.030331566e-07 -1.55233457e-05 7.889963042e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.759592881e-09 1.44070826e-06 -3.646484172e-08 0 0 1.44070826e-06 -5.284114325e-06 -5.449257173e-06 0 0 -3.646484172e-08 -5.449257173e-06 1.781209102e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.852904953e-09 1.348380804e-06 -5.567154937e-08 0 0 1.348380804e-06 -4.57192339e-06 -5.428520021e-06 0 0 -5.567154937e-08 -5.428520021e-06 4.926406983e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.180907026e-09 8.571011301e-07 -1.507705866e-08 0 0 8.571011301e-07 -3.350607477e-06 -6.511854418e-06 0 0 -1.507705866e-08 -6.511854418e-06 6.130614368e-07 0 0 0 0 0 0 0 0 0 0 0 0 -2.916795897e-05 -0.0004033895425 -2.623791613e-06 -0.0008483917443 0.05695156183 -0.0004033895425 0.0007079059636 -0.000767384963 6.557337829e-05 -0.0188642945 -2.623791613e-06 -0.000767384963 2.128855728e-05 -3.019923525e-06 0.00195764392 -0.0008483917443 6.557337829e-05 -3.019923525e-06 0.001783067962 0.1100030221 0.05695156183 -0.0188642945 0.00195764392 0.1100030221 -0.00751204376 -0.0002318946335 -0.0001512541598 -4.468211517e-05 -0.0002603056224 0.008424253435 -0.0001512541598 0.0001632029646 -0.0002092424937 -1.574316953e-05 -0.004563009946 -4.468211517e-05 -0.0002092424937 2.023568293e-05 -0.000158880529 0.0006599068695 -0.0002603056224 -1.574316953e-05 -0.000158880529 0.0007174153024 0.01614685349 0.008424253435 -0.004563009946 0.0006599068695 0.01614685349 -0.0006961743566 1.910448088e-06 3.459125191e-05 -3.879112621e-05 3.726388127e-05 -0.0003780029974 3.459125191e-05 -3.87644981e-07 1.840584214e-05 -7.139900083e-06 0.001101851236 -3.879112621e-05 1.840584214e-05 5.948181742e-08 -4.076074059e-06 -0.0006384939587 3.726388127e-05 -7.139900083e-06 -4.076074059e-06 3.375744494e-05 -0.001123581061 -0.0003780029974 0.001101851236 -0.0006384939587 -0.001123581061 0.001454740779 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_4_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_4_ref.dat index 70af6ec7f7..42b4f1d21a 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_4_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmx_4_ref.dat @@ -11,19 +11,19 @@ 5.983341431e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.258879043e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.755845654e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.007242536608 0.04064933609 0.01544919361 0.04064933609 -0.1251444605 0.1001600493 0.01544919361 0.1001600493 0.03833303099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01948503903 0.0130050457 0.03845860653 0.0130050457 -0.05729348746 0.0289736116 0.03845860653 0.0289736116 0.09310190041 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01380247127 -0.00595878008 0.02622376405 -0.00595878008 -0.0004376717279 -0.01430709294 0.02622376405 -0.01430709294 0.06227439594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.004149567179 -0.004635390412 0.007735057013 -0.004635390412 0.006679261851 -0.01033138357 0.007735057013 -0.01033138357 0.01802496063 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003847789523 -0.00102991245 0.0008243997957 -0.00102991245 0.001970056751 -0.002284703607 0.0008243997957 -0.002284703607 0.001947033328 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003766034708 0.0001377782153 -0.0007416059291 0.0001377782153 0.0001086009831 0.0003308737086 -0.0007416059291 0.0003308737086 -0.001740663527 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003367261139 0.0004264594253 -0.0007151438577 0.0004264594253 -0.0006433679981 0.001010410725 -0.0007151438577 0.001010410725 -0.00171576186 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.408956215e-05 9.681235941e-05 -0.0001445742401 9.681235941e-05 -0.0001421278932 0.0002207471763 -0.0001445742401 0.0002207471763 -0.0003387861199 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.839370203e-05 -6.373864012e-06 8.705009995e-05 -6.373864012e-06 -4.540326652e-05 -1.488952818e-05 8.705009995e-05 -1.488952818e-05 0.0002020041583 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.192638906e-05 -4.45554412e-05 6.763397151e-05 -4.45554412e-05 6.404333115e-05 -9.842974249e-05 6.763397151e-05 -9.842974249e-05 0.0001523051214 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.537743746e-06 -7.995338953e-06 2.042816439e-05 -7.995338953e-06 4.836580962e-06 -1.808497851e-05 2.042816439e-05 -1.808497851e-05 4.679849017e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.189948796e-06 -1.873470018e-06 -2.971528954e-06 -1.873470018e-06 6.189457972e-06 -3.650416547e-06 -2.971528954e-06 -3.650416547e-06 -6.396511283e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.489809918e-06 6.573727914e-06 -7.643907982e-06 6.573727914e-06 -1.30333895e-05 1.61995372e-05 -7.643907982e-06 1.61995372e-05 -1.858031198e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.007242536608 0.04064933609 0.01544919361 0 0 0.04064933609 -0.1251444605 0.1001600493 0 0 0.01544919361 0.1001600493 0.03833303099 0 0 0 0 0 0 0 0 0 0 0 0 +0.01948503903 0.0130050457 0.03845860653 0 0 0.0130050457 -0.05729348746 0.0289736116 0 0 0.03845860653 0.0289736116 0.09310190041 0 0 0 0 0 0 0 0 0 0 0 0 +0.01380247127 -0.00595878008 0.02622376405 0 0 -0.00595878008 -0.0004376717279 -0.01430709294 0 0 0.02622376405 -0.01430709294 0.06227439594 0 0 0 0 0 0 0 0 0 0 0 0 +0.004149567179 -0.004635390412 0.007735057013 0 0 -0.004635390412 0.006679261851 -0.01033138357 0 0 0.007735057013 -0.01033138357 0.01802496063 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003847789523 -0.00102991245 0.0008243997957 0 0 -0.00102991245 0.001970056751 -0.002284703607 0 0 0.0008243997957 -0.002284703607 0.001947033328 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003766034708 0.0001377782153 -0.0007416059291 0 0 0.0001377782153 0.0001086009831 0.0003308737086 0 0 -0.0007416059291 0.0003308737086 -0.001740663527 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003367261139 0.0004264594253 -0.0007151438577 0 0 0.0004264594253 -0.0006433679981 0.001010410725 0 0 -0.0007151438577 0.001010410725 -0.00171576186 0 0 0 0 0 0 0 0 0 0 0 0 +-6.408956215e-05 9.681235941e-05 -0.0001445742401 0 0 9.681235941e-05 -0.0001421278932 0.0002207471763 0 0 -0.0001445742401 0.0002207471763 -0.0003387861199 0 0 0 0 0 0 0 0 0 0 0 0 +3.839370203e-05 -6.373864012e-06 8.705009995e-05 0 0 -6.373864012e-06 -4.540326652e-05 -1.488952818e-05 0 0 8.705009995e-05 -1.488952818e-05 0.0002020041583 0 0 0 0 0 0 0 0 0 0 0 0 +3.192638906e-05 -4.45554412e-05 6.763397151e-05 0 0 -4.45554412e-05 6.404333115e-05 -9.842974249e-05 0 0 6.763397151e-05 -9.842974249e-05 0.0001523051214 0 0 0 0 0 0 0 0 0 0 0 0 +8.537743746e-06 -7.995338953e-06 2.042816439e-05 0 0 -7.995338953e-06 4.836580962e-06 -1.808497851e-05 0 0 2.042816439e-05 -1.808497851e-05 4.679849017e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.189948796e-06 -1.873470018e-06 -2.971528954e-06 0 0 -1.873470018e-06 6.189457972e-06 -3.650416547e-06 0 0 -2.971528954e-06 -3.650416547e-06 -6.396511283e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.489809918e-06 6.573727914e-06 -7.643907982e-06 0 0 6.573727914e-06 -1.30333895e-05 1.61995372e-05 0 0 -7.643907982e-06 1.61995372e-05 -1.858031198e-05 0 0 0 0 0 0 0 0 0 0 0 0 -0.005005630421 -0.006437524831 0.003263539524 0.001792098841 -0.0136501324 -0.006437524831 -0.006357228268 0.004940831599 0.001024802498 -0.01524606365 0.003263539524 0.004940831599 0.002271912545 -0.01038678485 0.01232926824 0.001792098841 0.001024802498 -0.01038678485 0.01705460773 0.001498778527 -0.0136501324 -0.01524606365 0.01232926824 0.001498778527 -0.0378033937 -0.004170331232 -0.005359474289 6.470652163e-06 0.005012546852 -0.0110377685 -0.005359474289 -0.004812031321 0.002571482518 0.00335979702 -0.01208048766 6.470652163e-06 0.002571482518 0.006786770382 -0.01472142968 0.006837559697 0.005012546852 0.00335979702 -0.01472142968 0.02066326141 0.007548474605 -0.0110377685 -0.01208048766 0.006837559697 0.007548474605 -0.03164977742 -0.0006953056073 -0.0008784804352 -0.00238973864 0.003994263452 -0.001810118381 -0.0008784804352 -0.0007737466131 -0.0006334739614 0.002656554001 -0.002337737845 -0.00238973864 -0.0006334739614 0.005430299008 -0.008173627719 -0.001335440117 0.003994263452 0.002656554001 -0.008173627719 0.009741205884 0.006683923746 -0.001810118381 -0.002337737845 -0.001335440117 0.006683923746 -0.006993993696 @@ -50,19 +50,19 @@ 1.721003848e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.09907467e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.249639742e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02816654211 0.04122823258 0.02652734721 0.04122823258 -0.07248174366 0.05870895891 0.02652734721 0.05870895891 0.02349488791 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01888083651 -0.005784056584 0.02027475561 -0.005784056584 -0.002488995984 -0.002205921428 0.02027475561 -0.002205921428 0.01906752519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000435260435 0.0005341406397 0.0006414990413 0.0005341406397 0.001570836843 -0.001627545485 0.0006414990413 -0.001627545485 0.001025908012 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00285806867 0.0003843912197 0.0009427238575 0.0003843912197 -2.65327608e-06 1.988186099e-05 0.0009427238575 1.988186099e-05 7.443339278e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001117448564 -9.201357676e-05 -6.56507626e-05 -9.201357676e-05 -0.0001564513695 0.0001580790062 -6.56507626e-05 0.0001580790062 -0.0001267984116 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.97200331e-06 4.479424071e-05 -4.219268941e-05 4.479424071e-05 -2.321325881e-05 3.511644113e-05 -4.219268941e-05 3.511644113e-05 -6.383533093e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.266889823e-05 -9.370363819e-06 2.612947133e-05 -9.370363819e-06 2.577662794e-07 -2.159886985e-06 2.612947133e-05 -2.159886985e-06 6.528336547e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.420445829e-05 -1.287345931e-05 8.505974074e-06 -1.287345931e-05 -1.229561684e-05 4.962898985e-06 8.505974074e-06 4.962898985e-06 1.805353532e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.884501243e-05 2.235004571e-05 -1.76071851e-05 2.235004571e-05 -2.107964556e-05 2.22405461e-05 -1.76071851e-05 2.22405461e-05 -1.588564581e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.095421656e-05 7.451654688e-06 -7.494276141e-06 7.451654688e-06 -5.715233995e-06 6.040745292e-06 -7.494276141e-06 6.040745292e-06 -5.422361537e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.637360207e-07 -6.772194724e-07 1.872407821e-06 -6.772194724e-07 -4.482374741e-06 2.888290758e-06 1.872407821e-06 2.888290758e-06 2.250231845e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.270464719e-06 3.26926777e-06 1.950440587e-06 3.26926777e-06 -5.023842587e-06 3.809940637e-06 1.950440587e-06 3.809940637e-06 1.432763824e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.067905715e-06 3.371966875e-06 -2.201610691e-06 3.371966875e-06 -5.138768431e-06 4.824127118e-06 -2.201610691e-06 4.824127118e-06 -2.135173678e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02816654211 0.04122823258 0.02652734721 0 0 0.04122823258 -0.07248174366 0.05870895891 0 0 0.02652734721 0.05870895891 0.02349488791 0 0 0 0 0 0 0 0 0 0 0 0 +0.01888083651 -0.005784056584 0.02027475561 0 0 -0.005784056584 -0.002488995984 -0.002205921428 0 0 0.02027475561 -0.002205921428 0.01906752519 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000435260435 0.0005341406397 0.0006414990413 0 0 0.0005341406397 0.001570836843 -0.001627545485 0 0 0.0006414990413 -0.001627545485 0.001025908012 0 0 0 0 0 0 0 0 0 0 0 0 +0.00285806867 0.0003843912197 0.0009427238575 0 0 0.0003843912197 -2.65327608e-06 1.988186099e-05 0 0 0.0009427238575 1.988186099e-05 7.443339278e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001117448564 -9.201357676e-05 -6.56507626e-05 0 0 -9.201357676e-05 -0.0001564513695 0.0001580790062 0 0 -6.56507626e-05 0.0001580790062 -0.0001267984116 0 0 0 0 0 0 0 0 0 0 0 0 +9.97200331e-06 4.479424071e-05 -4.219268941e-05 0 0 4.479424071e-05 -2.321325881e-05 3.511644113e-05 0 0 -4.219268941e-05 3.511644113e-05 -6.383533093e-05 0 0 0 0 0 0 0 0 0 0 0 0 +6.266889823e-05 -9.370363819e-06 2.612947133e-05 0 0 -9.370363819e-06 2.577662794e-07 -2.159886985e-06 0 0 2.612947133e-05 -2.159886985e-06 6.528336547e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.420445829e-05 -1.287345931e-05 8.505974074e-06 0 0 -1.287345931e-05 -1.229561684e-05 4.962898985e-06 0 0 8.505974074e-06 4.962898985e-06 1.805353532e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.884501243e-05 2.235004571e-05 -1.76071851e-05 0 0 2.235004571e-05 -2.107964556e-05 2.22405461e-05 0 0 -1.76071851e-05 2.22405461e-05 -1.588564581e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.095421656e-05 7.451654688e-06 -7.494276141e-06 0 0 7.451654688e-06 -5.715233995e-06 6.040745292e-06 0 0 -7.494276141e-06 6.040745292e-06 -5.422361537e-06 0 0 0 0 0 0 0 0 0 0 0 0 +5.637360207e-07 -6.772194724e-07 1.872407821e-06 0 0 -6.772194724e-07 -4.482374741e-06 2.888290758e-06 0 0 1.872407821e-06 2.888290758e-06 2.250231845e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.270464719e-06 3.26926777e-06 1.950440587e-06 0 0 3.26926777e-06 -5.023842587e-06 3.809940637e-06 0 0 1.950440587e-06 3.809940637e-06 1.432763824e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.067905715e-06 3.371966875e-06 -2.201610691e-06 0 0 3.371966875e-06 -5.138768431e-06 4.824127118e-06 0 0 -2.201610691e-06 4.824127118e-06 -2.135173678e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.02653953786 0.02244987637 0.03185399592 -0.0195748083 0.01928337273 0.02244987637 -0.0740098647 0.06028521567 0.00858054681 -0.03735655288 0.03185399592 0.06028521567 0.02877824821 -0.03250210105 0.04369659526 -0.0195748083 0.00858054681 -0.03250210105 0.009015478656 -0.0004025601688 0.01928337273 -0.03735655288 0.04369659526 -0.0004025601688 -0.017553911 0.01726472042 -0.001942040983 0.02467653226 -0.007922289862 0.002773787841 -0.001942040983 -0.01225578465 0.00312675383 0.005881741633 -0.00560288856 0.02467653226 0.00312675383 0.03551292511 -0.01406317612 0.006915125182 -0.007922289862 0.005881741633 -0.01406317612 0.002421585531 0.0007948791269 0.002773787841 -0.00560288856 0.006915125182 0.0007948791269 -0.002216133618 0.0006334184875 -0.001378979871 0.002258269629 -0.0001303118054 -0.0001975876641 -0.001378979871 0.002816667587 -0.003974992803 0.0002569224838 0.0008734421574 0.002258269629 -0.003974992803 0.006035245066 -0.0005854949143 -0.001425837544 -0.0001303118054 0.0002569224838 -0.0005854949143 1.177781508e-05 9.653479911e-06 -0.0001975876641 0.0008734421574 -0.001425837544 9.653479911e-06 -3.894066535e-05 @@ -89,19 +89,19 @@ -2.097413797e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.013666336e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.990582969e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00126967936 -0.0007106856928 0.008793301998 -0.0007106856928 0.008718604703 -0.03532992088 0.008793301998 -0.03532992088 0.06637646583 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0008002953034 -0.01225260413 0.006420742597 -0.01225260413 0.02888349859 -0.03422670734 0.006420742597 -0.03422670734 0.02969791814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.118110896e-05 0.0005637154468 -0.0005541695425 0.0005637154468 0.00298127941 -0.001440330117 -0.0005541695425 -0.001440330117 -0.0002502871448 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.552019266e-05 0.0002827315693 -0.0001115708867 0.0002827315693 0.005020598022 -0.002245017979 -0.0001115708867 -0.002245017979 0.001055588659 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.18790472e-06 8.249142367e-06 -1.09591809e-05 8.249142367e-06 1.860159008e-05 -8.089446158e-05 -1.09591809e-05 -8.089446158e-05 7.395670769e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.403083858e-07 0.0001797553613 -7.937255812e-05 0.0001797553613 0.0003063328099 0.0001668609688 -7.937255812e-05 0.0001668609688 -0.000231012433 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.468385183e-06 -2.693866821e-07 -1.206237604e-06 -2.693866821e-07 -0.0002404941911 0.0001237384557 -1.206237604e-06 0.0001237384557 -6.975782674e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.11070531e-07 2.247739197e-06 -1.489332458e-06 2.247739197e-06 6.631855795e-05 -3.685822358e-05 -1.489332458e-06 -3.685822358e-05 1.992979608e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.901895654e-08 -4.607025463e-06 6.596115461e-06 -4.607025463e-06 1.03631011e-05 -1.549623498e-05 6.596115461e-06 -1.549623498e-05 2.651573712e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.570253577e-07 4.329279194e-06 -1.748385521e-06 4.329279194e-06 -7.374463718e-05 4.2971938e-05 -1.748385521e-06 4.2971938e-05 -2.277904501e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.631841174e-07 3.533804117e-06 -1.417917807e-06 3.533804117e-06 -4.896770531e-05 3.084354283e-05 -1.417917807e-06 3.084354283e-05 -1.755110203e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.496650911e-07 1.862276612e-06 -1.19991098e-07 1.862276612e-06 -9.02954204e-06 6.544196265e-06 -1.19991098e-07 6.544196265e-06 -1.938117482e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.63933735e-07 6.198449935e-07 2.895614742e-07 6.198449935e-07 -7.243200139e-06 2.677707462e-06 2.895614742e-07 2.677707462e-06 1.019320285e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.00126967936 -0.0007106856928 0.008793301998 0 0 -0.0007106856928 0.008718604703 -0.03532992088 0 0 0.008793301998 -0.03532992088 0.06637646583 0 0 0 0 0 0 0 0 0 0 0 0 +0.0008002953034 -0.01225260413 0.006420742597 0 0 -0.01225260413 0.02888349859 -0.03422670734 0 0 0.006420742597 -0.03422670734 0.02969791814 0 0 0 0 0 0 0 0 0 0 0 0 +3.118110896e-05 0.0005637154468 -0.0005541695425 0 0 0.0005637154468 0.00298127941 -0.001440330117 0 0 -0.0005541695425 -0.001440330117 -0.0002502871448 0 0 0 0 0 0 0 0 0 0 0 0 +6.552019266e-05 0.0002827315693 -0.0001115708867 0 0 0.0002827315693 0.005020598022 -0.002245017979 0 0 -0.0001115708867 -0.002245017979 0.001055588659 0 0 0 0 0 0 0 0 0 0 0 0 +1.18790472e-06 8.249142367e-06 -1.09591809e-05 0 0 8.249142367e-06 1.860159008e-05 -8.089446158e-05 0 0 -1.09591809e-05 -8.089446158e-05 7.395670769e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.403083858e-07 0.0001797553613 -7.937255812e-05 0 0 0.0001797553613 0.0003063328099 0.0001668609688 0 0 -7.937255812e-05 0.0001668609688 -0.000231012433 0 0 0 0 0 0 0 0 0 0 0 0 +-2.468385183e-06 -2.693866821e-07 -1.206237604e-06 0 0 -2.693866821e-07 -0.0002404941911 0.0001237384557 0 0 -1.206237604e-06 0.0001237384557 -6.975782674e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.11070531e-07 2.247739197e-06 -1.489332458e-06 0 0 2.247739197e-06 6.631855795e-05 -3.685822358e-05 0 0 -1.489332458e-06 -3.685822358e-05 1.992979608e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-9.901895654e-08 -4.607025463e-06 6.596115461e-06 0 0 -4.607025463e-06 1.03631011e-05 -1.549623498e-05 0 0 6.596115461e-06 -1.549623498e-05 2.651573712e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.570253577e-07 4.329279194e-06 -1.748385521e-06 0 0 4.329279194e-06 -7.374463718e-05 4.2971938e-05 0 0 -1.748385521e-06 4.2971938e-05 -2.277904501e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.631841174e-07 3.533804117e-06 -1.417917807e-06 0 0 3.533804117e-06 -4.896770531e-05 3.084354283e-05 0 0 -1.417917807e-06 3.084354283e-05 -1.755110203e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.496650911e-07 1.862276612e-06 -1.19991098e-07 0 0 1.862276612e-06 -9.02954204e-06 6.544196265e-06 0 0 -1.19991098e-07 6.544196265e-06 -1.938117482e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.63933735e-07 6.198449935e-07 2.895614742e-07 0 0 6.198449935e-07 -7.243200139e-06 2.677707462e-06 0 0 2.895614742e-07 2.677707462e-06 1.019320285e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.01119488795 -0.001423184926 -0.001847893852 0.03219897411 -0.003884782162 -0.001423184926 0.0007470988111 -0.0007243544965 0.006858853086 0.0009005109475 -0.001847893852 -0.0007243544965 6.087082315e-05 0.00718446512 0.001690450318 0.03219897411 0.006858853086 0.00718446512 -0.05264868118 0.04272337174 -0.003884782162 0.0009005109475 0.001690450318 0.04272337174 0.01999482778 0.02364351632 0.005832686742 0.004742350132 -0.02037718558 0.04081815492 0.005832686742 0.001812782057 -0.0006635601358 -0.004165864901 0.008127698401 0.004742350132 -0.0006635601358 8.820717684e-05 -0.003481898815 0.008348742763 -0.02037718558 -0.004165864901 -0.003481898815 0.01707029796 -0.03362509029 0.04081815492 0.008127698401 0.008348742763 -0.03362509029 0.07096669761 0.0005300636054 0.00115202206 0.0006414733124 -0.0001972627871 0.001804286866 0.00115202206 3.933781447e-05 -1.537239749e-05 -0.001599416282 0.001215101315 0.0006414733124 -1.537239749e-05 3.754903862e-06 -0.0007964812433 0.0008363773094 -0.0001972627871 -0.001599416282 -0.0007964812433 -0.0005182400214 -0.001846430382 0.001804286866 0.001215101315 0.0008363773094 -0.001846430382 0.00356335997 @@ -113,8 +113,8 @@ -7.259953212e-06 -3.031814562e-06 -1.089786085e-06 1.021467717e-05 -1.177112507e-05 -3.031814562e-06 -2.381761317e-08 2.247187547e-08 6.644414221e-06 -2.182138844e-06 -1.089786085e-06 2.247187547e-08 -2.769935749e-08 2.421735364e-06 -8.556260137e-07 1.021467717e-05 6.644414221e-06 2.421735364e-06 -8.903837818e-06 2.179509543e-05 -1.177112507e-05 -2.182138844e-06 -8.556260137e-07 2.179509543e-05 -1.267558603e-05 -3.158076961e-05 2.344338485e-06 -1.885670019e-06 3.716564814e-05 -4.413623885e-05 2.344338485e-06 -9.50949897e-08 6.916309283e-08 -2.884290991e-06 3.109014993e-06 -1.885670019e-06 6.916309283e-08 1.124656984e-08 2.224920681e-06 -2.56227242e-06 3.716564814e-05 -2.884290991e-06 2.224920681e-06 -4.395130682e-05 5.162876667e-05 -4.413623885e-05 3.109014993e-06 -2.56227242e-06 5.162876667e-05 -6.130947812e-05 -8.796120207e-06 -1.851671565e-06 -7.915032796e-07 8.674389194e-06 -1.473153831e-05 -1.851671565e-06 -4.560467882e-08 2.048620193e-08 2.282739889e-06 -2.413371851e-06 -7.915032796e-07 2.048620193e-08 3.494133975e-09 9.958418281e-07 -1.042982439e-06 8.674389194e-06 2.282739889e-06 9.958418281e-07 -8.016160025e-06 1.538996387e-05 -1.473153831e-05 -2.413371851e-06 -1.042982439e-06 1.538996387e-05 -2.302408034e-05 --9.160695447e-07 -2.190631638e-07 -1.380982817e-07 2.269988906e-06 -9.235287801e-07 -2.190631638e-07 1.075908419e-07 -8.566489686e-09 9.390165813e-07 1.318980519e-08 -1.380982817e-07 -8.566489686e-09 -6.421748061e-09 4.842480167e-07 9.525733374e-09 2.269988906e-06 9.390165813e-07 4.842480167e-07 -2.913608009e-06 4.034128567e-06 -9.235287801e-07 1.318980519e-08 9.525733374e-09 4.034128567e-06 6.649998734e-07 --2.871449175e-06 -2.449843739e-07 -2.551277041e-07 4.403499079e-06 -3.775398737e-06 -2.449843739e-07 9.279946677e-08 -2.567667196e-09 5.550279692e-07 -2.305208995e-07 -2.551277041e-07 -2.567667196e-09 -2.778543882e-09 5.270927633e-07 -2.007172074e-07 4.403499079e-06 5.550279692e-07 5.270927633e-07 -5.778298184e-06 6.605754762e-06 -3.775398737e-06 -2.305208995e-07 -2.007172074e-07 6.605754762e-06 -3.95401448e-06 +-9.160695447e-07 -2.190631638e-07 -1.380982817e-07 2.269988906e-06 -9.235287801e-07 -2.190631638e-07 1.075908419e-07 -8.566489686e-09 9.390165813e-07 1.318980519e-08 -1.380982817e-07 -8.566489686e-09 -6.421748061e-09 4.842480167e-07 9.525733375e-09 2.269988906e-06 9.390165813e-07 4.842480167e-07 -2.913608009e-06 4.034128567e-06 -9.235287801e-07 1.318980519e-08 9.525733375e-09 4.034128567e-06 6.649998734e-07 +-2.871449175e-06 -2.449843739e-07 -2.551277041e-07 4.403499079e-06 -3.775398737e-06 -2.449843739e-07 9.279946677e-08 -2.567667196e-09 5.550279692e-07 -2.305208995e-07 -2.551277041e-07 -2.567667196e-09 -2.778543881e-09 5.270927633e-07 -2.007172074e-07 4.403499079e-06 5.550279692e-07 5.270927633e-07 -5.778298184e-06 6.605754762e-06 -3.775398737e-06 -2.305208995e-07 -2.007172074e-07 6.605754762e-06 -3.95401448e-06 -0.000307917954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.001760549297 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000711177954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -128,19 +128,19 @@ 3.092304971e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.374502111e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.032740775e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.32268389e-06 0.01601483377 -0.0003338009194 0.01601483377 -0.04502972031 0.08063851618 -0.0003338009194 0.08063851618 -0.003487981796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.043971541e-06 0.0007532914741 -0.0005211488067 0.0007532914741 -0.001676972283 0.003158831907 -0.0005211488067 0.003158831907 -0.0009878649031 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.614197961e-07 -0.0007860406611 5.237083917e-05 -0.0007860406611 0.001993794105 0.0008851768223 5.237083917e-05 0.0008851768223 -0.000190625417 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.08953126e-06 -2.841245532e-05 4.108167952e-05 -2.841245532e-05 9.466203853e-05 0.0001790233756 4.108167952e-05 0.0001790233756 -0.0002850931475 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.333743091e-09 1.292076277e-06 -9.317731469e-08 1.292076277e-06 -2.792819611e-05 0.0001428337256 -9.317731469e-08 0.0001428337256 8.158603104e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.996643142e-08 1.670882384e-05 7.176162578e-06 1.670882384e-05 -5.433451829e-05 -8.416948917e-06 7.176162578e-06 -8.416948917e-06 -1.007608046e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.957599238e-08 -1.967662726e-06 -9.671771393e-07 -1.967662726e-06 3.201764799e-06 1.143703449e-05 -9.671771393e-07 1.143703449e-05 9.443329567e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.035283803e-10 1.000556924e-06 -8.86768191e-09 1.000556924e-06 -3.591678027e-06 6.574590186e-06 -8.86768191e-09 6.574590186e-06 -7.383368699e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.713705141e-09 6.907102194e-06 1.119383077e-07 6.907102194e-06 -2.085767938e-05 1.24536613e-05 1.119383077e-07 1.24536613e-05 5.163813733e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.464165573e-09 3.085077896e-08 -8.749457138e-08 3.085077896e-08 -2.723016629e-06 1.442797892e-05 -8.749457138e-08 1.442797892e-05 2.545114954e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.680825695e-09 1.09889922e-06 8.176715582e-08 1.09889922e-06 -4.450979599e-06 5.28557041e-06 8.176715582e-08 5.28557041e-06 9.597219782e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.755837071e-09 1.327574834e-06 5.262695226e-08 1.327574834e-06 -4.529878261e-06 4.711431792e-06 5.262695226e-08 4.711431792e-06 4.1271381e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.284353916e-09 8.215280076e-07 9.776851689e-09 8.215280076e-07 -3.198648366e-06 6.07519843e-06 9.776851689e-09 6.07519843e-06 5.936370778e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.32268389e-06 0.01601483377 -0.0003338009194 0 0 0.01601483377 -0.04502972031 0.08063851618 0 0 -0.0003338009194 0.08063851618 -0.003487981796 0 0 0 0 0 0 0 0 0 0 0 0 +-3.043971541e-06 0.0007532914741 -0.0005211488067 0 0 0.0007532914741 -0.001676972283 0.003158831907 0 0 -0.0005211488067 0.003158831907 -0.0009878649031 0 0 0 0 0 0 0 0 0 0 0 0 +-6.614197961e-07 -0.0007860406611 5.237083917e-05 0 0 -0.0007860406611 0.001993794105 0.0008851768223 0 0 5.237083917e-05 0.0008851768223 -0.000190625417 0 0 0 0 0 0 0 0 0 0 0 0 +-1.08953126e-06 -2.841245532e-05 4.108167952e-05 0 0 -2.841245532e-05 9.466203853e-05 0.0001790233756 0 0 4.108167952e-05 0.0001790233756 -0.0002850931475 0 0 0 0 0 0 0 0 0 0 0 0 +2.333743091e-09 1.292076277e-06 -9.317731469e-08 0 0 1.292076277e-06 -2.792819611e-05 0.0001428337256 0 0 -9.317731469e-08 0.0001428337256 8.158603104e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-7.996643142e-08 1.670882384e-05 7.176162578e-06 0 0 1.670882384e-05 -5.433451829e-05 -8.416948917e-06 0 0 7.176162578e-06 -8.416948917e-06 -1.007608046e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.957599238e-08 -1.967662726e-06 -9.671771393e-07 0 0 -1.967662726e-06 3.201764799e-06 1.143703449e-05 0 0 -9.671771393e-07 1.143703449e-05 9.443329567e-06 0 0 0 0 0 0 0 0 0 0 0 0 +8.035283803e-10 1.000556924e-06 -8.86768191e-09 0 0 1.000556924e-06 -3.591678027e-06 6.574590186e-06 0 0 -8.86768191e-09 6.574590186e-06 -7.383368699e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.713705141e-09 6.907102194e-06 1.119383077e-07 0 0 6.907102194e-06 -2.085767938e-05 1.24536613e-05 0 0 1.119383077e-07 1.24536613e-05 5.163813733e-09 0 0 0 0 0 0 0 0 0 0 0 0 +5.464165573e-09 3.085077896e-08 -8.749457138e-08 0 0 3.085077896e-08 -2.723016629e-06 1.442797892e-05 0 0 -8.749457138e-08 1.442797892e-05 2.545114954e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.680825695e-09 1.09889922e-06 8.176715582e-08 0 0 1.09889922e-06 -4.450979599e-06 5.28557041e-06 0 0 8.176715582e-08 5.28557041e-06 9.597219782e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.755837071e-09 1.327574834e-06 5.262695226e-08 0 0 1.327574834e-06 -4.529878261e-06 4.711431792e-06 0 0 5.262695226e-08 4.711431792e-06 4.1271381e-07 0 0 0 0 0 0 0 0 0 0 0 0 +2.284353916e-09 8.215280076e-07 9.776851689e-09 0 0 8.215280076e-07 -3.198648366e-06 6.07519843e-06 0 0 9.776851689e-09 6.07519843e-06 5.936370778e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.0002144066862 -2.845826765e-05 -9.346445108e-06 -0.002227726146 -0.05634503917 -2.845826765e-05 0.0004365256291 0.0007650611732 0.001445606812 0.01895001765 -9.346445108e-06 0.0007650611732 -2.141688525e-05 4.249953123e-05 0.001484435325 -0.002227726146 0.001445606812 4.249953123e-05 -0.004426237864 -0.109222454 -0.05634503917 0.01895001765 0.001484435325 -0.109222454 -0.004655274149 -0.0006970280011 5.078121593e-05 7.93848212e-05 -0.00139452689 -0.008401148969 5.078121593e-05 8.921907417e-05 0.0001930595698 0.0004960726723 0.004556558062 7.93848212e-05 0.0001930595698 -1.849867407e-05 0.0002351207252 0.0006800745423 -0.00139452689 0.0004960726723 0.0002351207252 -0.001954671932 -0.01616670673 -0.008401148969 0.004556558062 0.0006800745423 -0.01616670673 -0.0005347704597 -1.565832886e-05 6.310495033e-05 5.758147979e-05 -7.303415826e-06 0.000262267924 6.310495033e-05 1.937745592e-05 -8.356121886e-06 5.894305662e-06 -0.001092668744 5.758147979e-05 -8.356121886e-06 3.840473019e-07 9.788329057e-06 -0.0006847963969 -7.303415826e-06 5.894305662e-06 9.788329057e-06 -2.28794911e-05 0.0009724082641 0.000262267924 -0.001092668744 -0.0006847963969 0.0009724082641 0.001593796068 @@ -167,19 +167,19 @@ 5.082226988e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.189102346e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.374618132e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09073225537 0.06567943851 0.01804338185 0.06567943851 0.03997721833 0.08665752028 0.01804338185 0.08665752028 0.1022910337 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08165893605 0.02968441126 0.0008596376656 0.02968441126 0.07331912895 0.02512337236 0.0008596376656 0.02512337236 0.02616232036 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.008192011357 0.01613650593 0.001908470378 0.01613650593 -0.03850969036 0.03763433945 0.001908470378 0.03763433945 0.01318944973 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.006271304334 -0.002564323062 0.01700848183 -0.002564323062 -0.004091333149 -0.007459541813 0.01700848183 -0.007459541813 0.0387051708 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004545840448 -0.0004746230706 0.001072404907 -0.0004746230706 0.0005123030373 -0.0009774505147 0.001072404907 -0.0009774505147 0.002387516273 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001039776104 0.0001507140554 -0.0003688187987 0.0001507140554 -0.0005382758141 0.0005794614812 -0.0003688187987 0.0005794614812 -0.0005728459515 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001137409014 5.343619899e-05 0.0004514892091 5.343619899e-05 -0.0008630390591 0.0002860712093 0.0004514892091 0.0002860712093 0.00088008646 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.914194275e-05 1.440940786e-05 -4.623036992e-06 1.440940786e-05 4.581633519e-05 6.495603698e-06 -4.623036992e-06 6.495603698e-06 -2.497971379e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.884243863e-06 -1.262635883e-05 3.902809399e-06 -1.262635883e-05 0.0001332248306 -7.061466473e-05 3.902809399e-06 -7.061466473e-05 7.605094516e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.332576043e-05 2.724277899e-05 2.042352552e-05 2.724277899e-05 -0.000216816165 0.0001145117208 2.042352552e-05 0.0001145117208 2.459395258e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.320390392e-06 6.442304907e-06 -1.952079574e-05 6.442304907e-06 -7.072051473e-05 5.838484766e-05 -1.952079574e-05 5.838484766e-05 -6.822467717e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.122212782e-05 -1.222979327e-05 2.185114632e-05 -1.222979327e-05 2.919617415e-06 -2.139893447e-05 2.185114632e-05 -2.139893447e-05 5.123318157e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.957708174e-06 7.95470984e-06 -1.900945397e-06 7.95470984e-06 -3.398800416e-05 2.3947452e-05 -1.900945397e-06 2.3947452e-05 -8.086499945e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.09073225537 0.06567943851 0.01804338185 0 0 0.06567943851 0.03997721833 0.08665752028 0 0 0.01804338185 0.08665752028 0.1022910337 0 0 0 0 0 0 0 0 0 0 0 0 +0.08165893605 0.02968441126 0.0008596376656 0 0 0.02968441126 0.07331912895 0.02512337236 0 0 0.0008596376656 0.02512337236 0.02616232036 0 0 0 0 0 0 0 0 0 0 0 0 +0.008192011357 0.01613650593 0.001908470378 0 0 0.01613650593 -0.03850969036 0.03763433945 0 0 0.001908470378 0.03763433945 0.01318944973 0 0 0 0 0 0 0 0 0 0 0 0 +0.006271304334 -0.002564323062 0.01700848183 0 0 -0.002564323062 -0.004091333149 -0.007459541813 0 0 0.01700848183 -0.007459541813 0.0387051708 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004545840448 -0.0004746230706 0.001072404907 0 0 -0.0004746230706 0.0005123030373 -0.0009774505147 0 0 0.001072404907 -0.0009774505147 0.002387516273 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001039776104 0.0001507140554 -0.0003688187987 0 0 0.0001507140554 -0.0005382758141 0.0005794614812 0 0 -0.0003688187987 0.0005794614812 -0.0005728459515 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001137409014 5.343619899e-05 0.0004514892091 0 0 5.343619899e-05 -0.0008630390591 0.0002860712093 0 0 0.0004514892091 0.0002860712093 0.00088008646 0 0 0 0 0 0 0 0 0 0 0 0 +2.914194275e-05 1.440940786e-05 -4.623036992e-06 0 0 1.440940786e-05 4.581633519e-05 6.495603698e-06 0 0 -4.623036992e-06 6.495603698e-06 -2.497971379e-06 0 0 0 0 0 0 0 0 0 0 0 0 +5.884243863e-06 -1.262635883e-05 3.902809399e-06 0 0 -1.262635883e-05 0.0001332248306 -7.061466473e-05 0 0 3.902809399e-06 -7.061466473e-05 7.605094516e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.332576043e-05 2.724277899e-05 2.042352552e-05 0 0 2.724277899e-05 -0.000216816165 0.0001145117208 0 0 2.042352552e-05 0.0001145117208 2.459395258e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.320390392e-06 6.442304907e-06 -1.952079574e-05 0 0 6.442304907e-06 -7.072051473e-05 5.838484766e-05 0 0 -1.952079574e-05 5.838484766e-05 -6.822467717e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.122212782e-05 -1.222979327e-05 2.185114632e-05 0 0 -1.222979327e-05 2.919617415e-06 -2.139893447e-05 0 0 2.185114632e-05 -2.139893447e-05 5.123318157e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.957708174e-06 7.95470984e-06 -1.900945397e-06 0 0 7.95470984e-06 -3.398800416e-05 2.3947452e-05 0 0 -1.900945397e-06 2.3947452e-05 -8.086499945e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.007668072607 0.06695321626 0.04430495754 0.09946756337 -0.1237319823 0.06695321626 -0.149950807 0.1241232571 0.0226234609 -0.005048332186 0.04430495754 0.1241232571 0.06525947248 -0.03068824387 0.05579490793 0.09946756337 0.0226234609 -0.03068824387 -0.1583017875 -0.08053453032 -0.1237319823 -0.005048332186 0.05579490793 -0.08053453032 -0.001210386365 0.06893512763 0.01658890572 0.05613497606 0.004356817172 0.02945619118 0.01658890572 -0.03795272511 0.01933530638 -0.003877167734 0.03312538192 0.05613497606 0.01933530638 0.08610177303 -0.01093198636 0.01611564262 0.004356817172 -0.003877167734 -0.01093198636 -0.00162124433 -0.07859137243 0.02945619118 0.03312538192 0.01611564262 -0.07859137243 0.128070604 0.006452527071 -0.007799226089 0.01925737989 0.001595949401 -0.007423533822 -0.007799226089 -0.001552006241 0.002056436225 -0.007722125436 -0.002292582424 0.01925737989 0.002056436225 0.01235541538 0.003977492197 0.01978851966 0.001595949401 -0.007722125436 0.003977492197 0.008289316868 -0.01705046459 -0.007423533822 -0.002292582424 0.01978851966 -0.01705046459 -0.008824817247 @@ -190,6 +190,6 @@ 0.0001217558578 -9.827465043e-06 2.97544301e-05 5.30581181e-05 7.96088457e-05 -9.827465043e-06 -5.698508733e-07 -4.394078159e-05 1.555099751e-05 1.037895597e-05 2.97544301e-05 -4.394078159e-05 0.000183976554 -0.0001316665304 -4.159478807e-05 5.30581181e-05 1.555099751e-05 -0.0001316665304 0.0002374981557 -1.427768013e-05 7.96088457e-05 1.037895597e-05 -4.159478807e-05 -1.427768013e-05 0.0001500332652 4.141668058e-05 8.842782749e-05 -0.0001438273323 0.000144933405 9.326066717e-05 8.842782749e-05 3.803428689e-06 -3.976836251e-05 9.251076163e-05 9.985123644e-05 -0.0001438273323 -3.976836251e-05 0.0001259963464 -0.0001506605913 -0.0001972218251 0.000144933405 9.251076163e-05 -0.0001506605913 5.437078651e-05 0.0002023110277 9.326066717e-05 9.985123644e-05 -0.0001972218251 0.0002023110277 0.0002222267049 -8.623681794e-05 -3.276319228e-05 4.271508301e-05 2.989917565e-06 -0.0001525032216 -3.276319228e-05 -3.33745921e-05 4.661919141e-05 -1.359961063e-05 -7.957949874e-05 4.271508301e-05 4.661919141e-05 -6.304560133e-05 2.511072631e-05 0.0001057775192 2.989917565e-06 -1.359961063e-05 2.511072631e-05 -5.949695276e-05 -1.6904451e-05 -0.0001525032216 -7.957949874e-05 0.0001057775192 -1.6904451e-05 -0.0002713248343 -2.149672346e-06 4.745928664e-07 9.661281479e-06 1.558353414e-05 -1.316261936e-05 4.745928664e-07 -1.678672283e-06 -3.900948684e-07 -5.213209171e-06 6.492151815e-06 9.661281479e-06 -3.900948684e-07 1.170471347e-05 7.978967054e-06 -1.810461129e-06 1.558353414e-05 -5.213209171e-06 7.978967054e-06 -2.262396686e-05 2.670940568e-07 -1.316261936e-05 6.492151815e-06 -1.810461129e-06 2.670940568e-07 2.811806746e-06 +2.149672346e-06 4.745928664e-07 9.661281479e-06 1.558353414e-05 -1.316261936e-05 4.745928664e-07 -1.678672283e-06 -3.900948684e-07 -5.213209171e-06 6.492151815e-06 9.661281479e-06 -3.900948684e-07 1.170471347e-05 7.978967054e-06 -1.810461129e-06 1.558353414e-05 -5.213209171e-06 7.978967054e-06 -2.262396686e-05 2.670940568e-07 -1.316261936e-05 6.492151815e-06 -1.810461129e-06 2.670940568e-07 2.811806747e-06 2.641380661e-06 1.382261921e-05 -1.653063026e-05 2.170119452e-05 3.259394158e-06 1.382261921e-05 -5.63454837e-06 -6.166270334e-07 1.462507591e-05 1.062198475e-05 -1.653063026e-05 -6.166270334e-07 1.99285218e-05 -2.332036006e-05 -2.354631751e-05 2.170119452e-05 1.462507591e-05 -2.332036006e-05 -3.658950768e-07 2.561582526e-05 3.259394158e-06 1.062198475e-05 -2.354631751e-05 2.561582526e-05 2.217082407e-05 --1.399644577e-05 3.93885176e-07 3.818701975e-06 3.692559406e-06 -2.479916921e-05 3.93885176e-07 -1.027206975e-05 1.271454199e-05 -1.303395137e-06 -1.042285242e-05 3.818701975e-06 1.271454199e-05 -1.279693679e-05 5.177781399e-06 1.609472506e-05 3.692559406e-06 -1.303395137e-06 5.177781399e-06 -2.109456746e-05 -7.773334405e-06 -2.479916921e-05 -1.042285242e-05 1.609472506e-05 -7.773334405e-06 -3.241669482e-05 +-1.399644577e-05 3.938851761e-07 3.818701975e-06 3.692559406e-06 -2.479916921e-05 3.938851761e-07 -1.027206975e-05 1.271454199e-05 -1.303395137e-06 -1.042285242e-05 3.818701975e-06 1.271454199e-05 -1.279693679e-05 5.177781399e-06 1.609472506e-05 3.692559406e-06 -1.303395137e-06 5.177781399e-06 -2.109456746e-05 -7.773334405e-06 -2.479916921e-05 -1.042285242e-05 1.609472506e-05 -7.773334405e-06 -3.241669482e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_0_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_0_ref.dat index c0429af3a0..999ffb7464 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_0_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_0_ref.dat @@ -11,19 +11,19 @@ -5.904560394e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.984811393e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.847692376e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0009947983627 0.001119713877 0.0491086304 0.001119713877 -0.001706304576 -0.08339628764 0.0491086304 -0.08339628764 -0.00190031518 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0009129262607 0.0006410846375 0.1653317755 0.0006410846375 -0.001181856699 -0.1736774897 0.1653317755 -0.1736774897 -0.01106785091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006109109207 -0.001131866244 0.1131019132 -0.001131866244 0.001418349608 -0.1116895964 0.1131019132 -0.1116895964 -0.001366200392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007446806488 -0.001022691429 0.03251843422 -0.001022691429 0.001354218618 -0.03117033745 0.03251843422 -0.03117033745 0.002677486135 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003555987713 -0.0004563468984 0.002776520787 -0.0004563468984 0.000623373559 -0.002912886511 0.002776520787 -0.002912886511 0.00190518778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.346041954e-05 -0.0001069960935 -0.003231975683 -0.0001069960935 0.0001497421281 0.003459296988 -0.003231975683 0.003459296988 0.0006215113205 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.084119654e-05 4.42165744e-05 -0.002960620853 4.42165744e-05 -5.769484776e-05 0.003121884188 -0.002960620853 0.003121884188 -3.789175483e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.130289936e-05 7.078135262e-05 -0.0005114393778 7.078135262e-05 -9.410281401e-05 0.0005137842376 -0.0005114393778 0.0005137842376 -0.0002873576279 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.063659675e-05 3.004390342e-05 0.0003645070206 3.004390342e-05 -4.072521742e-05 -0.0004506375481 0.0003645070206 -0.0004506375481 -0.000147900061 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.521397149e-06 -7.036525752e-06 0.0002758260499 -7.036525752e-06 8.409491174e-06 -0.0002710833109 0.0002758260499 -0.0002710833109 1.157856367e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.32573834e-06 -1.141496943e-05 6.726537377e-05 -1.141496943e-05 1.484967435e-05 -7.03924602e-05 6.726537377e-05 -7.03924602e-05 4.629321996e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.54445622e-06 -2.248462989e-06 -1.173208122e-05 -2.248462989e-06 2.814751434e-06 1.757429036e-05 -1.173208122e-05 1.757429036e-05 9.685662613e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.922857194e-08 -2.496751633e-08 -3.276286732e-05 -2.496751633e-08 1.226509261e-07 3.413004374e-05 -3.276286732e-05 3.413004374e-05 2.420639323e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0009947983627 0.001119713877 0.0491086304 0 0 0.001119713877 -0.001706304576 -0.08339628764 0 0 0.0491086304 -0.08339628764 -0.00190031518 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0009129262607 0.0006410846375 0.1653317755 0 0 0.0006410846375 -0.001181856699 -0.1736774897 0 0 0.1653317755 -0.1736774897 -0.01106785091 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006109109207 -0.001131866244 0.1131019132 0 0 -0.001131866244 0.001418349608 -0.1116895964 0 0 0.1131019132 -0.1116895964 -0.001366200392 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007446806488 -0.001022691429 0.03251843422 0 0 -0.001022691429 0.001354218618 -0.03117033745 0 0 0.03251843422 -0.03117033745 0.002677486135 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003555987713 -0.0004563468984 0.002776520787 0 0 -0.0004563468984 0.000623373559 -0.002912886511 0 0 0.002776520787 -0.002912886511 0.00190518778 0 0 0 0 0 0 0 0 0 0 0 0 +8.346041954e-05 -0.0001069960935 -0.003231975683 0 0 -0.0001069960935 0.0001497421281 0.003459296988 0 0 -0.003231975683 0.003459296988 0.0006215113205 0 0 0 0 0 0 0 0 0 0 0 0 +-3.084119654e-05 4.42165744e-05 -0.002960620853 0 0 4.42165744e-05 -5.769484776e-05 0.003121884188 0 0 -0.002960620853 0.003121884188 -3.789175483e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.130289936e-05 7.078135262e-05 -0.0005114393778 0 0 7.078135262e-05 -9.410281401e-05 0.0005137842376 0 0 -0.0005114393778 0.0005137842376 -0.0002873576279 0 0 0 0 0 0 0 0 0 0 0 0 +-2.063659675e-05 3.004390342e-05 0.0003645070206 0 0 3.004390342e-05 -4.072521742e-05 -0.0004506375481 0 0 0.0003645070206 -0.0004506375481 -0.000147900061 0 0 0 0 0 0 0 0 0 0 0 0 +5.521397149e-06 -7.036525752e-06 0.0002758260499 0 0 -7.036525752e-06 8.409491174e-06 -0.0002710833109 0 0 0.0002758260499 -0.0002710833109 1.157856367e-05 0 0 0 0 0 0 0 0 0 0 0 0 +8.32573834e-06 -1.141496943e-05 6.726537377e-05 0 0 -1.141496943e-05 1.484967435e-05 -7.03924602e-05 0 0 6.726537377e-05 -7.03924602e-05 4.629321996e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.54445622e-06 -2.248462989e-06 -1.173208122e-05 0 0 -2.248462989e-06 2.814751434e-06 1.757429036e-05 0 0 -1.173208122e-05 1.757429036e-05 9.685662613e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.922857194e-08 -2.496751633e-08 -3.276286732e-05 0 0 -2.496751633e-08 1.226509261e-07 3.413004374e-05 0 0 -3.276286732e-05 3.413004374e-05 2.420639323e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.0005169508699 0.000107961243 0.05554547527 0.000892570789 -0.01394133735 0.000107961243 -0.0001515755542 -0.003444317451 0.0002988651551 -0.02632481713 0.05554547527 -0.003444317451 0.0003731084274 0.02500948371 -0.0004111244973 0.000892570789 0.0002988651551 0.02500948371 0.001376796404 -0.08458273302 -0.01394133735 -0.02632481713 -0.0004111244973 -0.08458273302 0.0007393239775 -0.0007045563784 -0.0003659875497 0.05574611615 -0.000659109714 -0.001520828434 -0.0003659875497 -0.000190645504 -0.01060978371 -0.0004305962174 -0.01049196984 0.05574611615 -0.01060978371 -0.0006887582011 0.01346109002 0.001170802472 -0.000659109714 -0.0004305962174 0.01346109002 -0.0007737822893 -0.06128187429 -0.001520828434 -0.01049196984 0.001170802472 -0.06128187429 -0.001645877228 -0.000718964513 -0.0001193542732 0.01989636424 -0.0006955759457 0.008483169765 -0.0001193542732 0.0001068903384 -0.008387510866 -0.0002146321989 0.005549154953 0.01989636424 -0.008387510866 -0.0002379837432 -0.002817249542 0.0004487224162 -0.0006955759457 -0.0002146321989 -0.002817249542 -0.0009029393642 -0.008143354231 0.008483169765 0.005549154953 0.0004487224162 -0.008143354231 -0.0007489420519 @@ -34,8 +34,8 @@ 3.825967427e-06 4.124861422e-06 1.744791043e-05 4.998852508e-06 2.160784284e-05 4.124861422e-06 2.904105432e-06 -1.481794598e-06 4.088628008e-06 3.168861651e-06 1.744791043e-05 -1.481794598e-06 7.155667974e-06 -2.802796339e-06 -9.757491814e-06 4.998852508e-06 4.088628008e-06 -2.802796339e-06 5.827743828e-06 3.362265531e-06 2.160784284e-05 3.168861651e-06 -9.757491814e-06 3.362265531e-06 1.391314132e-05 -1.575000228e-06 -2.246357318e-06 1.867270579e-05 -2.607184407e-06 -1.773302769e-05 -2.246357318e-06 -2.523350005e-06 5.660794555e-06 -3.087700662e-06 -2.132418666e-05 1.867270579e-05 5.660794555e-06 -7.375444035e-06 2.267089185e-05 9.78635936e-06 -2.607184407e-06 -3.087700662e-06 2.267089185e-05 -3.557943847e-06 -5.196753805e-05 -1.773302769e-05 -2.132418666e-05 9.78635936e-06 -5.196753805e-05 -1.300283379e-05 4.006235809e-07 4.616233495e-07 -1.74667228e-06 5.517281264e-07 3.666340077e-06 4.616233495e-07 4.620634427e-07 -1.252050185e-06 6.278661749e-07 1.42602032e-06 -1.74667228e-06 -1.252050185e-06 8.777971798e-07 -1.737590198e-06 -1.16320009e-06 5.517281264e-07 6.278661749e-07 -1.737590198e-06 8.419633812e-07 1.883839658e-06 3.666340077e-06 1.42602032e-06 -1.16320009e-06 1.883839658e-06 1.554909868e-06 -3.533978211e-07 4.406474341e-07 4.791140289e-08 4.18920499e-07 7.216991392e-06 4.406474341e-07 4.081421814e-07 -3.751143639e-06 4.624727649e-07 5.295409781e-06 4.791140289e-08 -3.751143639e-06 9.374109574e-07 -4.873269674e-06 -1.256601368e-06 4.18920499e-07 4.624727649e-07 -4.873269674e-06 4.696635833e-07 6.413024044e-06 7.216991392e-06 5.295409781e-06 -1.256601368e-06 6.413024044e-06 1.711785376e-06 --7.641516531e-08 -2.023329148e-07 2.881497404e-06 -1.534475456e-07 -2.672752143e-06 -2.023329148e-07 -2.85002108e-07 1.103524313e-06 -2.90620845e-07 -3.514462524e-06 2.881497404e-06 1.103524313e-06 -7.560292086e-07 3.422918132e-06 9.75004605e-07 -1.534475456e-07 -2.90620845e-07 3.422918132e-06 -2.181537295e-07 -7.624293799e-06 -2.672752143e-06 -3.514462524e-06 9.75004605e-07 -7.624293799e-06 -1.235865593e-06 +3.533978211e-07 4.406474341e-07 4.791140288e-08 4.18920499e-07 7.216991392e-06 4.406474341e-07 4.081421814e-07 -3.751143639e-06 4.624727649e-07 5.295409781e-06 4.791140288e-08 -3.751143639e-06 9.374109574e-07 -4.873269674e-06 -1.256601368e-06 4.18920499e-07 4.624727649e-07 -4.873269674e-06 4.696635833e-07 6.413024044e-06 7.216991392e-06 5.295409781e-06 -1.256601368e-06 6.413024044e-06 1.711785376e-06 +-7.641516531e-08 -2.023329148e-07 2.881497404e-06 -1.534475456e-07 -2.672752143e-06 -2.023329148e-07 -2.85002108e-07 1.103524313e-06 -2.90620845e-07 -3.514462524e-06 2.881497404e-06 1.103524313e-06 -7.560292086e-07 3.422918132e-06 9.750046049e-07 -1.534475456e-07 -2.90620845e-07 3.422918132e-06 -2.181537295e-07 -7.624293799e-06 -2.672752143e-06 -3.514462524e-06 9.750046049e-07 -7.624293799e-06 -1.235865593e-06 2.209270898e-07 1.756497824e-07 1.584346679e-06 3.166105919e-07 -1.154045155e-06 1.756497824e-07 1.268624791e-07 6.712707246e-07 2.387206467e-07 -1.706778085e-06 1.584346679e-06 6.712707246e-07 4.169630917e-07 1.287143259e-06 -5.779423661e-07 3.166105919e-07 2.387206467e-07 1.287143259e-06 4.307672382e-07 -3.036607029e-06 -1.154045155e-06 -1.706778085e-06 -5.779423661e-07 -3.036607029e-06 8.016867137e-07 0.0005640121176 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003067795203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -50,19 +50,19 @@ 3.64089478e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.307774158e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.363215073e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003632398287 -0.0002507429178 0.07021457295 -0.0002507429178 -0.0003588281519 0.006845733174 0.07021457295 0.006845733174 -0.001379365313 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.00231388534 0.0004592024269 0.0121734475 0.0004592024269 -0.0004020591691 0.003595802838 0.0121734475 0.003595802838 -0.0001151484946 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.06424212e-05 0.0001656372571 0.04151071078 0.0001656372571 -0.0001014640825 0.001672353987 0.04151071078 0.001672353987 8.891645717e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002607246826 -3.104083058e-05 0.03422259207 -3.104083058e-05 1.080905397e-06 0.0005380742287 0.03422259207 0.0005380742287 0.0002716692015 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.798320176e-06 -1.874140953e-05 0.003775716873 -1.874140953e-05 -5.456519692e-06 6.828736125e-05 0.003775716873 6.828736125e-05 4.146101149e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.818424292e-05 -1.324257218e-06 0.0001533538047 -1.324257218e-06 -1.910081137e-07 -1.248671372e-06 0.0001533538047 -1.248671372e-06 2.354370992e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.83102114e-05 1.030126023e-06 0.0006740902816 1.030126023e-06 3.315609235e-07 1.580613856e-05 0.0006740902816 1.580613856e-05 1.61718022e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.823811962e-06 3.887639401e-08 9.765182883e-05 3.887639401e-08 -6.279710362e-07 4.078024482e-06 9.765182883e-05 4.078024482e-06 -4.373354858e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.080274434e-05 4.091608006e-07 0.000162575313 4.091608006e-07 3.263612717e-07 3.492470704e-06 0.000162575313 3.492470704e-06 4.606143933e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.025030532e-06 3.401870396e-07 3.422507798e-05 3.401870396e-07 6.613833001e-08 1.802612003e-06 3.422507798e-05 1.802612003e-06 -7.60441296e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.01073796e-07 -7.791822507e-08 -1.511976859e-05 -7.791822507e-08 -8.881543321e-08 -5.234724192e-07 -1.511976859e-05 -5.234724192e-07 -1.513686689e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.104191396e-06 8.160611398e-08 3.582318464e-05 8.160611398e-08 7.250333988e-08 8.026240953e-07 3.582318464e-05 8.026240953e-07 -1.081367049e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.281378754e-07 3.33171252e-08 2.615349934e-06 3.33171252e-08 4.796044203e-09 1.21208467e-07 2.615349934e-06 1.21208467e-07 -1.938910373e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003632398287 -0.0002507429178 0.07021457295 0 0 -0.0002507429178 -0.0003588281519 0.006845733174 0 0 0.07021457295 0.006845733174 -0.001379365313 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00231388534 0.0004592024269 0.0121734475 0 0 0.0004592024269 -0.0004020591691 0.003595802838 0 0 0.0121734475 0.003595802838 -0.0001151484946 0 0 0 0 0 0 0 0 0 0 0 0 +3.06424212e-05 0.0001656372571 0.04151071078 0 0 0.0001656372571 -0.0001014640825 0.001672353987 0 0 0.04151071078 0.001672353987 8.891645717e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002607246826 -3.104083058e-05 0.03422259207 0 0 -3.104083058e-05 1.080905397e-06 0.0005380742287 0 0 0.03422259207 0.0005380742287 0.0002716692015 0 0 0 0 0 0 0 0 0 0 0 0 +-6.798320176e-06 -1.874140953e-05 0.003775716873 0 0 -1.874140953e-05 -5.456519692e-06 6.828736125e-05 0 0 0.003775716873 6.828736125e-05 4.146101149e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.818424292e-05 -1.324257218e-06 0.0001533538047 0 0 -1.324257218e-06 -1.910081137e-07 -1.248671372e-06 0 0 0.0001533538047 -1.248671372e-06 2.354370992e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.83102114e-05 1.030126023e-06 0.0006740902816 0 0 1.030126023e-06 3.315609235e-07 1.580613856e-05 0 0 0.0006740902816 1.580613856e-05 1.61718022e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.823811962e-06 3.887639401e-08 9.765182883e-05 0 0 3.887639401e-08 -6.279710362e-07 4.078024482e-06 0 0 9.765182883e-05 4.078024482e-06 -4.373354858e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.080274434e-05 4.091608006e-07 0.000162575313 0 0 4.091608006e-07 3.263612717e-07 3.492470704e-06 0 0 0.000162575313 3.492470704e-06 4.606143933e-08 0 0 0 0 0 0 0 0 0 0 0 0 +1.025030532e-06 3.401870396e-07 3.422507798e-05 0 0 3.401870396e-07 6.613833001e-08 1.802612003e-06 0 0 3.422507798e-05 1.802612003e-06 -7.60441296e-07 0 0 0 0 0 0 0 0 0 0 0 0 +9.01073796e-07 -7.791822507e-08 -1.511976859e-05 0 0 -7.791822507e-08 -8.881543321e-08 -5.234724192e-07 0 0 -1.511976859e-05 -5.234724192e-07 -1.513686689e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.104191396e-06 8.160611398e-08 3.582318464e-05 0 0 8.160611398e-08 7.250333988e-08 8.026240953e-07 0 0 3.582318464e-05 8.026240953e-07 -1.081367049e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.281378754e-07 3.33171252e-08 2.615349934e-06 0 0 3.33171252e-08 4.796044203e-09 1.21208467e-07 0 0 2.615349934e-06 1.21208467e-07 -1.938910373e-07 0 0 0 0 0 0 0 0 0 0 0 0 4.707662174e-06 -0.0003911720506 0.01937995909 0.0001458323185 0.01690586225 -0.0003911720506 -0.0003175931639 0.005526230452 -0.0005621716755 0.1252062543 0.01937995909 0.005526230452 -0.001715560725 -0.1228791893 0.001055099817 0.0001458323185 -0.0005621716755 -0.1228791893 -8.66633588e-05 0.05410955023 0.01690586225 0.1252062543 0.001055099817 0.05410955023 -2.838264478e-05 -0.001712970085 0.0006295064141 -0.05078884957 -0.0001595264552 0.007795532677 0.0006295064141 -0.0005236805827 0.001104167317 0.0004234723268 0.07203139739 -0.05078884957 0.001104167317 -2.883020428e-05 -0.07640351531 -0.0005175734505 -0.0001595264552 0.0004234723268 -0.07640351531 0.0005966812727 0.0206451994 0.007795532677 0.07203139739 -0.0005175734505 0.0206451994 0.0005242066041 -0.0001524909487 0.0004254718014 -0.02668191069 0.0001718360998 -0.001436764115 0.0004254718014 -0.0002401672801 0.0009560354036 0.0002035196619 0.0175989956 -0.02668191069 0.0009560354036 -0.0006793286495 -0.01876135678 -0.0002193796795 0.0001718360998 0.0002035196619 -0.01876135678 0.0002410208775 -0.0003850449957 -0.001436764115 0.0175989956 -0.0002193796795 -0.0003850449957 0.0002163005751 @@ -89,19 +89,19 @@ -1.634250831e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.068958416e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.469698319e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001821696932 -9.478552277e-05 -0.01621420219 -9.478552277e-05 0.0006190953779 -0.05818442447 -0.01621420219 -0.05818442447 -0.001283857582 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.236946449e-07 -0.0002888817274 -0.015113768 -0.0002888817274 -0.002402969866 -0.04091969596 -0.015113768 -0.04091969596 -0.0001393025881 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.997591883e-05 0.0001284694416 -0.01423094014 0.0001284694416 0.0004869459443 -0.04303735253 -0.01423094014 -0.04303735253 6.958762426e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.042051249e-07 2.472373018e-05 -0.003390690203 2.472373018e-05 0.0001721052465 -0.01009291319 -0.003390690203 -0.01009291319 5.227973728e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.789151743e-06 3.513981216e-06 -0.0001701925952 3.513981216e-06 5.565283922e-06 -0.0005939933835 -0.0001701925952 -0.0005939933835 -3.02783636e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.097154143e-07 1.111475193e-05 -0.0001535536925 1.111475193e-05 6.134013867e-05 -0.0003506252107 -0.0001535536925 -0.0003506252107 9.399311564e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.14188644e-07 -1.918433252e-06 -0.0001480397273 -1.918433252e-06 -1.353051718e-05 -0.0004870567469 -0.0001480397273 -0.0004870567469 -3.239429645e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.512483671e-07 2.924737804e-07 -1.984322045e-05 2.924737804e-07 4.253607204e-07 -6.570614932e-05 -1.984322045e-05 -6.570614932e-05 -4.502480608e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.988807876e-08 2.838850314e-07 1.188704007e-05 2.838850314e-07 1.142851893e-06 3.434332915e-05 1.188704007e-05 3.434332915e-05 -3.29144728e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.693497493e-08 -2.656680182e-07 -1.868423715e-05 -2.656680182e-07 -2.00099744e-06 -6.649647413e-05 -1.868423715e-05 -6.649647413e-05 -6.845096694e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.63134869e-08 -6.222416926e-08 -4.18017231e-06 -6.222416926e-08 -7.284087029e-07 -1.889090168e-05 -4.18017231e-06 -1.889090168e-05 -5.893294334e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.276231574e-09 5.168819381e-08 2.679248117e-06 5.168819381e-08 2.733518784e-07 5.882478738e-06 2.679248117e-06 5.882478738e-06 -1.700560052e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.218998873e-08 -3.301670184e-08 -2.777445353e-06 -3.301670184e-08 -2.986678027e-07 -1.199922771e-05 -2.777445353e-06 -1.199922771e-05 -2.526324402e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001821696932 -9.478552277e-05 -0.01621420219 0 0 -9.478552277e-05 0.0006190953779 -0.05818442447 0 0 -0.01621420219 -0.05818442447 -0.001283857582 0 0 0 0 0 0 0 0 0 0 0 0 +8.236946449e-07 -0.0002888817274 -0.015113768 0 0 -0.0002888817274 -0.002402969866 -0.04091969596 0 0 -0.015113768 -0.04091969596 -0.0001393025881 0 0 0 0 0 0 0 0 0 0 0 0 +2.997591883e-05 0.0001284694416 -0.01423094014 0 0 0.0001284694416 0.0004869459443 -0.04303735253 0 0 -0.01423094014 -0.04303735253 6.958762426e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.042051249e-07 2.472373018e-05 -0.003390690203 0 0 2.472373018e-05 0.0001721052465 -0.01009291319 0 0 -0.003390690203 -0.01009291319 5.227973728e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.789151743e-06 3.513981216e-06 -0.0001701925952 0 0 3.513981216e-06 5.565283922e-06 -0.0005939933835 0 0 -0.0001701925952 -0.0005939933835 -3.02783636e-06 0 0 0 0 0 0 0 0 0 0 0 0 +7.097154143e-07 1.111475193e-05 -0.0001535536925 0 0 1.111475193e-05 6.134013867e-05 -0.0003506252107 0 0 -0.0001535536925 -0.0003506252107 9.399311564e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.14188644e-07 -1.918433252e-06 -0.0001480397273 0 0 -1.918433252e-06 -1.353051718e-05 -0.0004870567469 0 0 -0.0001480397273 -0.0004870567469 -3.239429645e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.512483671e-07 2.924737804e-07 -1.984322045e-05 0 0 2.924737804e-07 4.253607204e-07 -6.570614932e-05 0 0 -1.984322045e-05 -6.570614932e-05 -4.502480608e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.988807876e-08 2.838850314e-07 1.188704007e-05 0 0 2.838850314e-07 1.142851893e-06 3.434332915e-05 0 0 1.188704007e-05 3.434332915e-05 -3.29144728e-07 0 0 0 0 0 0 0 0 0 0 0 0 +4.693497493e-08 -2.656680182e-07 -1.868423715e-05 0 0 -2.656680182e-07 -2.00099744e-06 -6.649647413e-05 0 0 -1.868423715e-05 -6.649647413e-05 -6.845096694e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.63134869e-08 -6.222416926e-08 -4.18017231e-06 0 0 -6.222416926e-08 -7.284087029e-07 -1.889090168e-05 0 0 -4.18017231e-06 -1.889090168e-05 -5.893294334e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.276231574e-09 5.168819381e-08 2.679248117e-06 0 0 5.168819381e-08 2.733518784e-07 5.882478738e-06 0 0 2.679248117e-06 5.882478738e-06 -1.700560052e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.218998873e-08 -3.301670184e-08 -2.777445353e-06 0 0 -3.301670184e-08 -2.986678027e-07 -1.199922771e-05 0 0 -2.777445353e-06 -1.199922771e-05 -2.526324402e-07 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004935451291 -0.0002626173811 -0.0438695903 -0.0005436407304 0.1232693273 -0.0002626173811 -0.0001691935971 -0.09876263126 -0.000493684726 -0.01642917381 -0.0438695903 -0.09876263126 -0.0001158617099 0.01080567334 0.0003859044301 -0.0005436407304 -0.000493684726 0.01080567334 -8.422407893e-05 0.04334847592 0.1232693273 -0.01642917381 0.0003859044301 0.04334847592 -0.00176584178 0.0001507537653 0.0002751292113 -0.02073763975 0.0009536566033 0.02729492054 0.0002751292113 -2.236220065e-05 -0.04024709306 -0.0002185180286 0.01301311038 -0.02073763975 -0.04024709306 -0.0001017073613 0.0170960126 -0.0004083281376 0.0009536566033 -0.0002185180286 0.0170960126 -0.002062231323 0.04793081622 0.02729492054 0.01301311038 -0.0004083281376 0.04793081622 0.0007258284525 -2.219823902e-05 1.711816261e-05 0.000515975276 0.0001107161205 0.01021647014 1.711816261e-05 0.0001020551318 -0.006999743575 0.0001384471195 -0.008771594182 0.000515975276 -0.006999743575 -1.241603372e-05 -0.000245580412 -9.690977802e-05 0.0001107161205 0.0001384471195 -0.000245580412 8.885513769e-06 -0.01171330311 0.01021647014 -0.008771594182 -9.690977802e-05 -0.01171330311 -9.465549634e-05 @@ -127,20 +127,20 @@ -0.0008780176304 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.349315699e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.617705277e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.591029701e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.08961234313 0.007880953153 -0.002625120747 0.007880953153 -0.1065799325 0.01084446012 -0.002625120747 0.01084446012 -0.0226984392 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0838613389 -0.003509560816 -0.0214580044 -0.003509560816 -0.06056361602 0.03722473949 -0.0214580044 0.03722473949 0.01499635181 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01224819703 0.003949135712 -0.009560505497 0.003949135712 -0.01511625002 0.01072757279 -0.009560505497 0.01072757279 0.05050054109 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.007764340416 0.01436501842 0.02033881254 0.01436501842 -0.01747403521 -0.02766091926 0.02033881254 -0.02766091926 -0.03406849845 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000154252015 0.0001265820121 0.0002011826192 0.0001265820121 8.937056026e-05 8.161895746e-05 0.0002011826192 8.161895746e-05 0.0002965259898 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001797653859 -0.0005903805628 -0.001178959404 -0.0005903805628 0.0001175055396 0.001321119313 -0.001178959404 0.001321119313 0.002209588052 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002542085007 0.0006268963082 0.000837822978 0.0006268963082 -0.0006478096798 -0.001189493589 0.000837822978 -0.001189493589 -0.001268021912 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.113228818e-05 -0.0001060230922 -0.0001887506979 -0.0001060230922 0.0001397444834 0.0002609396644 -0.0001887506979 0.0002609396644 0.0004615551894 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.109652413e-05 -2.495085784e-05 -2.955537758e-05 -2.495085784e-05 -3.740681345e-05 3.538291117e-05 -2.955537758e-05 3.538291117e-05 -3.887866605e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.498204381e-05 7.771096133e-05 0.0001018976568 7.771096133e-05 -5.93643745e-05 -0.0001488479078 0.0001018976568 -0.0001488479078 -0.0001281427342 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.056670074e-05 -3.567333008e-05 -5.918397552e-05 -3.567333008e-05 5.768072647e-05 9.942684268e-05 -5.918397552e-05 9.942684268e-05 0.0001685937146 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.224772459e-05 1.148799131e-05 2.23548857e-05 1.148799131e-05 -2.14028099e-05 -3.103678961e-05 2.23548857e-05 -3.103678961e-05 -6.242313709e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.224315876e-06 7.985709162e-06 9.206738462e-06 7.985709162e-06 4.203697168e-07 -1.116080582e-05 9.206738462e-06 -1.116080582e-05 3.937685794e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +1.591029703e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.08961234313 0.007880953153 -0.002625120747 0 0 0.007880953153 -0.1065799325 0.01084446012 0 0 -0.002625120747 0.01084446012 -0.0226984392 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0838613389 -0.003509560816 -0.0214580044 0 0 -0.003509560816 -0.06056361602 0.03722473949 0 0 -0.0214580044 0.03722473949 0.01499635181 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01224819703 0.003949135712 -0.009560505497 0 0 0.003949135712 -0.01511625002 0.01072757279 0 0 -0.009560505497 0.01072757279 0.05050054109 0 0 0 0 0 0 0 0 0 0 0 0 +-0.007764340416 0.01436501842 0.02033881254 0 0 0.01436501842 -0.01747403521 -0.02766091926 0 0 0.02033881254 -0.02766091926 -0.03406849845 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000154252015 0.0001265820121 0.0002011826192 0 0 0.0001265820121 8.937056026e-05 8.161895746e-05 0 0 0.0002011826192 8.161895746e-05 0.0002965259898 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001797653859 -0.0005903805628 -0.001178959404 0 0 -0.0005903805628 0.0001175055396 0.001321119313 0 0 -0.001178959404 0.001321119313 0.002209588052 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002542085007 0.0006268963082 0.000837822978 0 0 0.0006268963082 -0.0006478096798 -0.001189493589 0 0 0.000837822978 -0.001189493589 -0.001268021912 0 0 0 0 0 0 0 0 0 0 0 0 +7.113228818e-05 -0.0001060230922 -0.0001887506979 0 0 -0.0001060230922 0.0001397444834 0.0002609396644 0 0 -0.0001887506979 0.0002609396644 0.0004615551894 0 0 0 0 0 0 0 0 0 0 0 0 +-4.109652413e-05 -2.495085784e-05 -2.955537758e-05 0 0 -2.495085784e-05 -3.740681345e-05 3.538291117e-05 0 0 -2.955537758e-05 3.538291117e-05 -3.887866605e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.498204381e-05 7.771096133e-05 0.0001018976568 0 0 7.771096133e-05 -5.93643745e-05 -0.0001488479078 0 0 0.0001018976568 -0.0001488479078 -0.0001281427342 0 0 0 0 0 0 0 0 0 0 0 0 +2.056670074e-05 -3.567333008e-05 -5.918397552e-05 0 0 -3.567333008e-05 5.768072647e-05 9.942684268e-05 0 0 -5.918397552e-05 9.942684268e-05 0.0001685937146 0 0 0 0 0 0 0 0 0 0 0 0 +-1.224772459e-05 1.148799131e-05 2.23548857e-05 0 0 1.148799131e-05 -2.14028099e-05 -3.103678961e-05 0 0 2.23548857e-05 -3.103678961e-05 -6.242313709e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.224315876e-06 7.985709162e-06 9.206738462e-06 0 0 7.985709162e-06 4.203697168e-07 -1.116080582e-05 0 0 9.206738462e-06 -1.116080582e-05 3.937685794e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.008645325744 0.01458166876 -0.02052846556 0.08026822382 -0.01532512062 0.01458166876 -0.02471704076 0.01285076918 0.01528965635 -0.001183013325 -0.02052846556 0.01285076918 0.1036607475 0.003460721259 0.001418053174 0.08026822382 0.01528965635 0.003460721259 0.07635651149 0.01971110504 -0.01532512062 -0.001183013325 0.001418053174 0.01971110504 0.1109607386 -0.04826671408 0.02487756116 0.01792509842 -8.658476857e-05 0.02711443301 0.02487756116 -0.03453200498 -0.02078992261 0.01999527548 0.006037366733 0.01792509842 -0.02078992261 -0.01047173474 -0.02544665722 0.0007227417724 -8.658476857e-05 0.01999527548 -0.02544665722 -0.06441563357 0.006723595267 0.02711443301 0.006037366733 0.0007227417724 0.006723595267 -0.008248071943 -0.003885058787 0.01451667434 0.0241343011 0.009560375401 -0.008584846777 0.01451667434 -0.008302867573 -0.0006706670844 0.0189588906 -0.009022812947 0.0241343011 -0.0006706670844 0.0002876280395 0.01195958819 -0.02592787325 0.009560375401 0.0189588906 0.01195958819 -0.005540628546 -0.02760087304 -0.008584846777 -0.009022812947 -0.02592787325 -0.02760087304 0.01879998069 @@ -151,7 +151,7 @@ -0.0001626360697 -3.168936964e-05 -3.881572138e-05 -9.39770516e-05 0.0001957613876 -3.168936964e-05 -0.0001048045708 -0.0001604749242 -4.406968072e-05 0.0001713647579 -3.881572138e-05 -0.0001604749242 -0.000259984117 -0.0001257358998 0.0002247862261 -9.39770516e-05 -4.406968072e-05 -0.0001257358998 -0.0002138761004 0.0001055812111 0.0001957613876 0.0001713647579 0.0002247862261 0.0001055812111 -0.0004072449471 -0.0001040846656 -8.369020159e-05 -0.0001622843125 -0.0001073391538 0.0002031669301 -8.369020159e-05 -6.216018139e-05 -0.0001022288276 -9.322393289e-05 0.0001510039178 -0.0001622843125 -0.0001022288276 -0.0001670850999 -0.0001660769206 0.0002796759602 -0.0001073391538 -9.322393289e-05 -0.0001660769206 -0.0001077201808 0.0002512098579 0.0002031669301 0.0001510039178 0.0002796759602 0.0002512098579 -0.0003486618435 9.667458327e-05 3.022116028e-05 6.142009292e-05 9.942160957e-05 -0.0001316407416 3.022116028e-05 2.856614134e-05 5.605053047e-05 4.091496651e-05 -6.810322985e-05 6.142009292e-05 5.605053047e-05 0.0001177349069 0.0001112026139 -0.0001229343402 9.942160957e-05 4.091496651e-05 0.0001112026139 0.000171866082 -0.0001208736288 -0.0001316407416 -6.810322985e-05 -0.0001229343402 -0.0001208736288 0.0002252720504 --8.05082002e-06 6.914698668e-06 9.914340075e-06 9.629488293e-07 8.120373648e-08 6.914698668e-06 -4.327875871e-06 -4.117230092e-06 4.674859421e-06 -1.08215908e-06 9.914340075e-06 -4.117230092e-06 -6.435268955e-06 -4.803382072e-06 -7.270688202e-06 9.629488293e-07 4.674859421e-06 -4.803382072e-06 -2.198293398e-05 -6.051475104e-06 8.120373648e-08 -1.08215908e-06 -7.270688202e-06 -6.051475104e-06 4.972546325e-06 +-8.05082002e-06 6.914698668e-06 9.914340075e-06 9.629488293e-07 8.120373647e-08 6.914698668e-06 -4.327875871e-06 -4.117230092e-06 4.674859421e-06 -1.08215908e-06 9.914340075e-06 -4.117230092e-06 -6.435268955e-06 -4.803382072e-06 -7.270688202e-06 9.629488293e-07 4.674859421e-06 -4.803382072e-06 -2.198293398e-05 -6.051475104e-06 8.120373647e-08 -1.08215908e-06 -7.270688202e-06 -6.051475104e-06 4.972546325e-06 -1.023010606e-05 -1.423359903e-05 -2.839608698e-05 -1.124969075e-05 2.777324814e-05 -1.423359903e-05 -1.019144714e-05 -1.575026627e-05 -1.612510454e-05 2.502772118e-05 -2.839608698e-05 -1.575026627e-05 -2.258070116e-05 -2.546868275e-05 4.730452628e-05 -1.124969075e-05 -1.612510454e-05 -2.546868275e-05 -6.660799861e-06 4.181091667e-05 2.777324814e-05 2.502772118e-05 4.730452628e-05 4.181091667e-05 -4.930082874e-05 1.791704227e-05 3.820825928e-06 5.823059158e-06 1.847797672e-05 -2.180630187e-05 3.820825928e-06 5.064336869e-06 1.048440116e-05 5.161699775e-06 -1.099592608e-05 5.823059158e-06 1.048440116e-05 2.346444982e-05 1.605606335e-05 -1.742253426e-05 1.847797672e-05 5.161699775e-06 1.605606335e-05 3.223339006e-05 -1.403072493e-05 -2.180630187e-05 -1.099592608e-05 -1.742253426e-05 -1.403072493e-05 4.119451489e-05 0.0934278088 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -167,20 +167,20 @@ 0.0001325152756 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.612101536e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.198790921e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08866873231 -0.007239115394 -0.004356816154 -0.007239115394 0.1052432244 0.01265302506 -0.004356816154 0.01265302506 0.01962815418 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08853843728 0.004219744577 -0.02179478883 0.004219744577 0.06512144882 0.03690871407 -0.02179478883 0.03690871407 -0.0109128878 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01348208066 -0.001407955167 -0.01436555671 -0.001407955167 0.0140420923 0.0171060944 -0.01436555671 0.0171060944 -0.05935396469 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0079356514 -0.01466503815 0.01963190194 -0.01466503815 0.01776645208 -0.02669849026 0.01963190194 -0.02669849026 0.03000007662 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001053864902 -0.001137691535 0.001991855215 -0.001137691535 0.001384831181 -0.002225311167 0.001991855215 -0.002225311167 0.003964748552 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002277954058 0.0006070447232 -0.001182874625 0.0006070447232 -0.0001409175599 0.001252823169 -0.001182874625 0.001252823169 -0.001940347208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001328325358 -0.0004503180128 0.0004984131399 -0.0004503180128 0.0004031869154 -0.0007093984551 0.0004984131399 -0.0007093984551 0.0003264393531 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.402488112e-05 1.643069287e-05 -2.739837043e-05 1.643069287e-05 1.479901336e-06 4.200541958e-05 -2.739837043e-05 4.200541958e-05 -5.036245811e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.31089665e-05 -1.334391771e-05 3.763883591e-05 -1.334391771e-05 7.855949742e-05 -6.321948732e-05 3.763883591e-05 -6.321948732e-05 0.0001984903505 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.628174562e-05 -3.176123664e-05 1.965626309e-05 -3.176123664e-05 -8.497658686e-06 -2.929409714e-05 1.965626309e-05 -2.929409714e-05 -9.521937879e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.241969584e-06 2.456606581e-05 -3.847582761e-05 2.456606581e-05 -3.386527217e-05 6.866945203e-05 -3.847582761e-05 6.866945203e-05 -0.0001055095519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.62811962e-05 -2.098658802e-05 3.815263439e-05 -2.098658802e-05 3.138571829e-05 -5.30748968e-05 3.815263439e-05 -5.30748968e-05 9.581666383e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.756915341e-06 -1.396748732e-07 -4.641801905e-06 -1.396748732e-07 -1.209393686e-05 8.925911128e-06 -4.641801905e-06 8.925911128e-06 -4.121967696e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01163424825 -0.0140307047 -0.02324927695 -0.08285566898 -0.01678398135 -0.0140307047 0.02334162326 0.01480696894 -0.01467615318 -0.002216247202 -0.02324927695 0.01480696894 -0.1081530193 0.003742839366 -0.0005017476533 -0.08285566898 -0.01467615318 0.003742839366 -0.08312376311 0.02240717254 -0.01678398135 -0.002216247202 -0.0005017476533 0.02240717254 -0.116430133 +0.08866873231 -0.007239115394 -0.004356816154 0 0 -0.007239115394 0.1052432244 0.01265302506 0 0 -0.004356816154 0.01265302506 0.01962815418 0 0 0 0 0 0 0 0 0 0 0 0 +0.08853843728 0.004219744577 -0.02179478883 0 0 0.004219744577 0.06512144882 0.03690871407 0 0 -0.02179478883 0.03690871407 -0.0109128878 0 0 0 0 0 0 0 0 0 0 0 0 +0.01348208066 -0.001407955167 -0.01436555671 0 0 -0.001407955167 0.0140420923 0.0171060944 0 0 -0.01436555671 0.0171060944 -0.05935396469 0 0 0 0 0 0 0 0 0 0 0 0 +0.0079356514 -0.01466503815 0.01963190194 0 0 -0.01466503815 0.01776645208 -0.02669849026 0 0 0.01963190194 -0.02669849026 0.03000007662 0 0 0 0 0 0 0 0 0 0 0 0 +0.001053864902 -0.001137691535 0.001991855215 0 0 -0.001137691535 0.001384831181 -0.002225311167 0 0 0.001991855215 -0.002225311167 0.003964748552 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002277954058 0.0006070447232 -0.001182874625 0 0 0.0006070447232 -0.0001409175599 0.001252823169 0 0 -0.001182874625 0.001252823169 -0.001940347208 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001328325358 -0.0004503180128 0.0004984131399 0 0 -0.0004503180128 0.0004031869154 -0.0007093984551 0 0 0.0004984131399 -0.0007093984551 0.0003264393531 0 0 0 0 0 0 0 0 0 0 0 0 +1.402488112e-05 1.643069287e-05 -2.739837043e-05 0 0 1.643069287e-05 1.479901336e-06 4.200541958e-05 0 0 -2.739837043e-05 4.200541958e-05 -5.036245811e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.31089665e-05 -1.334391771e-05 3.763883591e-05 0 0 -1.334391771e-05 7.855949742e-05 -6.321948732e-05 0 0 3.763883591e-05 -6.321948732e-05 0.0001984903505 0 0 0 0 0 0 0 0 0 0 0 0 +-1.628174562e-05 -3.176123664e-05 1.965626309e-05 0 0 -3.176123664e-05 -8.497658686e-06 -2.929409714e-05 0 0 1.965626309e-05 -2.929409714e-05 -9.521937879e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-7.241969584e-06 2.456606581e-05 -3.847582761e-05 0 0 2.456606581e-05 -3.386527217e-05 6.866945203e-05 0 0 -3.847582761e-05 6.866945203e-05 -0.0001055095519 0 0 0 0 0 0 0 0 0 0 0 0 +1.62811962e-05 -2.098658802e-05 3.815263439e-05 0 0 -2.098658802e-05 3.138571829e-05 -5.30748968e-05 0 0 3.815263439e-05 -5.30748968e-05 9.581666383e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.756915341e-06 -1.396748732e-07 -4.641801905e-06 0 0 -1.396748732e-07 -1.209393686e-05 8.925911128e-06 0 0 -4.641801905e-06 8.925911128e-06 -4.121967696e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01163424825 -0.0140307047 -0.02324927695 -0.08285566898 -0.01678398135 -0.0140307047 0.02334162326 0.01480696894 -0.01467615318 -0.002216247202 -0.02324927695 0.01480696894 -0.1081530193 0.003742839366 -0.0005017476532 -0.08285566898 -0.01467615318 0.003742839366 -0.08312376311 0.02240717254 -0.01678398135 -0.002216247202 -0.0005017476532 0.02240717254 -0.116430133 0.04888775772 -0.02410780899 0.01503886636 -0.001962139189 0.02786273872 -0.02410780899 0.03471360192 -0.01984852717 -0.01873278163 0.006726901289 0.01503886636 -0.01984852717 0.005952784968 -0.02646859706 -0.00321955382 -0.001962139189 -0.01873278163 -0.02646859706 0.0608601719 0.009617608946 0.02786273872 0.006726901289 -0.00321955382 0.009617608946 0.006505605491 0.006586410348 -0.01524777319 0.02447393529 -0.008444641087 -0.006520743975 -0.01524777319 0.009101194057 -0.0009861429363 -0.01915803666 -0.009285953527 0.02447393529 -0.0009861429363 0.0004902051611 0.009745238358 0.02561248366 -0.008444641087 -0.01915803666 0.009745238358 0.009222138342 -0.02577293579 -0.006520743975 -0.009285953527 0.02561248366 -0.02577293579 -0.01757936954 -0.006838002441 -0.0001020438086 0.003115927279 -0.008415413658 -0.005384665187 -0.0001020438086 0.002468016662 -0.0005430748961 -0.003714291573 0.002021611078 0.003115927279 -0.0005430748961 -0.002770165514 0.009139642343 0.002653024635 -0.008415413658 -0.003714291573 0.009139642343 -0.01507162226 -0.01055365097 -0.005384665187 0.002021611078 0.002653024635 -0.01055365097 -0.001802590919 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_1_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_1_ref.dat index f6d74445f0..779ff0e0da 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_1_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_1_ref.dat @@ -11,19 +11,19 @@ -1.273829934e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.564054796e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.866338969e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002360371443 1.103582033e-05 -0.1369727276 1.103582033e-05 6.279435067e-06 -0.002623836231 -0.1369727276 -0.002623836231 -8.842609426e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007479521127 9.602894822e-06 -0.119336315 9.602894822e-06 2.016359577e-05 -0.001476223062 -0.119336315 -0.001476223062 -0.0009575808574 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006678518222 -8.121470567e-06 -0.04176670604 -8.121470567e-06 1.59227581e-05 -0.0003438840586 -0.04176670604 -0.0003438840586 -0.0004766680221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000288647044 -8.59880193e-06 -0.00478470245 -8.59880193e-06 5.582941702e-06 -2.655834063e-05 -0.00478470245 -2.655834063e-05 -6.650991879e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.552007106e-05 9.628251547e-08 0.0009417873957 9.628251547e-08 1.405812857e-06 1.647679145e-05 0.0009417873957 1.647679145e-05 6.764930279e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.314823571e-06 3.985881794e-08 0.001053838503 3.985881794e-08 1.457334886e-09 1.359003982e-05 0.001053838503 1.359003982e-05 7.693777942e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.206917327e-05 -4.533959634e-07 0.0003050579445 -4.533959634e-07 -2.553350827e-07 4.032017168e-06 0.0003050579445 4.032017168e-06 2.332117872e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.015087902e-06 -1.052993285e-07 7.247223666e-05 -1.052993285e-07 -7.419088848e-08 9.908928342e-08 7.247223666e-05 9.908928342e-08 7.209542447e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.959988199e-06 -3.19125294e-08 -0.0001039170321 -3.19125294e-08 -2.63639697e-08 -7.575436056e-07 -0.0001039170321 -7.575436056e-07 -9.64121364e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.880052773e-07 -7.043073833e-09 -1.682946524e-05 -7.043073833e-09 4.771216224e-09 -3.697640954e-07 -1.682946524e-05 -3.697640954e-07 -1.163297482e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.120347977e-07 1.516955674e-08 -2.470954265e-05 1.516955674e-08 7.35656588e-10 -2.700948559e-07 -2.470954265e-05 -2.700948559e-07 -1.755754672e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.820934759e-07 1.634201814e-09 6.529367623e-06 1.634201814e-09 1.682112442e-09 2.242340195e-08 6.529367623e-06 2.242340195e-08 9.42241639e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.307987958e-08 -7.77164192e-10 -2.912270638e-06 -7.77164192e-10 -1.062902229e-09 -7.755521118e-08 -2.912270638e-06 -7.755521118e-08 5.085331044e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002360371443 1.103582033e-05 -0.1369727276 0 0 1.103582033e-05 6.279435067e-06 -0.002623836231 0 0 -0.1369727276 -0.002623836231 -8.842609426e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007479521127 9.602894822e-06 -0.119336315 0 0 9.602894822e-06 2.016359577e-05 -0.001476223062 0 0 -0.119336315 -0.001476223062 -0.0009575808574 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006678518222 -8.121470567e-06 -0.04176670604 0 0 -8.121470567e-06 1.59227581e-05 -0.0003438840586 0 0 -0.04176670604 -0.0003438840586 -0.0004766680221 0 0 0 0 0 0 0 0 0 0 0 0 +0.000288647044 -8.59880193e-06 -0.00478470245 0 0 -8.59880193e-06 5.582941702e-06 -2.655834063e-05 0 0 -0.00478470245 -2.655834063e-05 -6.650991879e-05 0 0 0 0 0 0 0 0 0 0 0 0 +7.552007106e-05 9.628251547e-08 0.0009417873957 0 0 9.628251547e-08 1.405812857e-06 1.647679145e-05 0 0 0.0009417873957 1.647679145e-05 6.764930279e-06 0 0 0 0 0 0 0 0 0 0 0 0 +3.314823571e-06 3.985881794e-08 0.001053838503 0 0 3.985881794e-08 1.457334886e-09 1.359003982e-05 0 0 0.001053838503 1.359003982e-05 7.693777942e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.206917327e-05 -4.533959634e-07 0.0003050579445 0 0 -4.533959634e-07 -2.553350827e-07 4.032017168e-06 0 0 0.0003050579445 4.032017168e-06 2.332117872e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-8.015087902e-06 -1.052993285e-07 7.247223666e-05 0 0 -1.052993285e-07 -7.419088848e-08 9.908928342e-08 0 0 7.247223666e-05 9.908928342e-08 7.209542447e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.959988199e-06 -3.19125294e-08 -0.0001039170321 0 0 -3.19125294e-08 -2.63639697e-08 -7.575436056e-07 0 0 -0.0001039170321 -7.575436056e-07 -9.64121364e-07 0 0 0 0 0 0 0 0 0 0 0 0 +4.880052773e-07 -7.043073833e-09 -1.682946524e-05 0 0 -7.043073833e-09 4.771216224e-09 -3.697640954e-07 0 0 -1.682946524e-05 -3.697640954e-07 -1.163297482e-07 0 0 0 0 0 0 0 0 0 0 0 0 +9.120347977e-07 1.516955674e-08 -2.470954265e-05 0 0 1.516955674e-08 7.35656588e-10 -2.700948559e-07 0 0 -2.470954265e-05 -2.700948559e-07 -1.755754672e-07 0 0 0 0 0 0 0 0 0 0 0 0 +2.820934759e-07 1.634201814e-09 6.529367623e-06 0 0 1.634201814e-09 1.682112442e-09 2.242340195e-08 0 0 6.529367623e-06 2.242340195e-08 9.42241639e-08 0 0 0 0 0 0 0 0 0 0 0 0 +4.307987958e-08 -7.77164192e-10 -2.912270638e-06 0 0 -7.77164192e-10 -1.062902229e-09 -7.755521118e-08 0 0 -2.912270638e-06 -7.755521118e-08 5.085331044e-08 0 0 0 0 0 0 0 0 0 0 0 0 0.0001106608718 -2.414224146e-06 -0.02921937012 6.185648968e-05 -7.385164151e-05 -2.414224146e-06 -1.189650638e-06 -0.0008998642553 -4.529741274e-06 0.0004703794833 -0.02921937012 -0.0008998642553 -0.000311754715 -0.0003570550803 0.0001323775808 6.185648968e-05 -4.529741274e-06 -0.0003570550803 -2.098574021e-05 0.001399694395 -7.385164151e-05 0.0004703794833 0.0001323775808 0.001399694395 -1.489553846e-05 0.00024775155 4.874261347e-06 -0.04101038455 0.000102199792 0.0003402665655 4.874261347e-06 -3.942129561e-06 -0.001565861325 -9.598483333e-07 0.0006576557774 -0.04101038455 -0.001565861325 -0.0002110753591 -0.0008464260193 2.509621472e-05 0.000102199792 -9.598483333e-07 -0.0008464260193 -7.316567278e-06 0.00200382683 0.0003402665655 0.0006576557774 2.509621472e-05 0.00200382683 -7.763699813e-06 0.0002331839756 1.380132502e-05 -0.02306447769 7.689580632e-05 0.0004198925611 1.380132502e-05 -3.097814053e-06 -0.001040180782 3.418885209e-06 0.0002783504148 -0.02306447769 -0.001040180782 3.001881001e-06 -0.0005364584628 -5.426846535e-05 7.689580632e-05 3.418885209e-06 -0.0005364584628 1.119749675e-05 0.000884222436 0.0004198925611 0.0002783504148 -5.426846535e-05 0.000884222436 6.943313666e-06 @@ -50,19 +50,19 @@ 3.418715754e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.616586416e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.934641095e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.00234201856 0.001839772129 -0.1346662316 0.001839772129 -0.0003519346033 -0.06046597998 -0.1346662316 -0.06046597998 5.852721694e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.004322667207 -0.0009039432099 0.05012274525 -0.0009039432099 0.0005500309498 -0.03870060169 0.05012274525 -0.03870060169 -0.001680834465 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0004597638417 -0.0002618701377 -0.04200801423 -0.0002618701377 0.0002191772959 -0.00359973017 -0.04200801423 -0.00359973017 0.0001868127188 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.344999756e-05 1.862022131e-05 -0.03290212224 1.862022131e-05 5.213068604e-06 -0.0006102098193 -0.03290212224 -0.0006102098193 -0.0002620748722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001305911883 6.106270365e-06 -0.003683726807 6.106270365e-06 -3.718499898e-07 0.000160894703 -0.003683726807 0.000160894703 -3.239411615e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.722313868e-05 -1.293168075e-05 -0.000393063544 -1.293168075e-05 6.75528996e-06 0.0001302614213 -0.000393063544 0.0001302614213 2.544957359e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.537201904e-05 -7.184525739e-06 -0.0006027686898 -7.184525739e-06 1.399218269e-07 -2.762305893e-05 -0.0006027686898 -2.762305893e-05 7.594960674e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.253530152e-06 1.688723786e-06 -4.13403419e-05 1.688723786e-06 -7.756628224e-07 -4.286739405e-05 -4.13403419e-05 -4.286739405e-05 -4.635932918e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.23633882e-06 2.194082505e-06 -0.0002663677384 2.194082505e-06 -1.58158468e-06 2.154010725e-05 -0.0002663677384 2.154010725e-05 -1.517767653e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.626433693e-06 -2.450358514e-06 -7.997233806e-05 -2.450358514e-06 7.321267357e-07 8.190957338e-06 -7.997233806e-05 8.190957338e-06 4.338870964e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.480554156e-07 -7.942115724e-07 1.83884846e-05 -7.942115724e-07 6.531650426e-07 -4.346417994e-06 1.83884846e-05 -4.346417994e-06 2.525828242e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.660103746e-07 4.503422554e-07 -4.144292787e-05 4.503422554e-07 -3.278937039e-07 -5.219611679e-06 -4.144292787e-05 -5.219611679e-06 -3.045311758e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.480935386e-07 1.626734918e-07 -1.838404321e-05 1.626734918e-07 -1.2222473e-07 2.728737275e-06 -1.838404321e-05 2.728737275e-06 4.906053278e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00234201856 0.001839772129 -0.1346662316 0 0 0.001839772129 -0.0003519346033 -0.06046597998 0 0 -0.1346662316 -0.06046597998 5.852721694e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.004322667207 -0.0009039432099 0.05012274525 0 0 -0.0009039432099 0.0005500309498 -0.03870060169 0 0 0.05012274525 -0.03870060169 -0.001680834465 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004597638417 -0.0002618701377 -0.04200801423 0 0 -0.0002618701377 0.0002191772959 -0.00359973017 0 0 -0.04200801423 -0.00359973017 0.0001868127188 0 0 0 0 0 0 0 0 0 0 0 0 +-5.344999756e-05 1.862022131e-05 -0.03290212224 0 0 1.862022131e-05 5.213068604e-06 -0.0006102098193 0 0 -0.03290212224 -0.0006102098193 -0.0002620748722 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001305911883 6.106270365e-06 -0.003683726807 0 0 6.106270365e-06 -3.718499898e-07 0.000160894703 0 0 -0.003683726807 0.000160894703 -3.239411615e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.722313868e-05 -1.293168075e-05 -0.000393063544 0 0 -1.293168075e-05 6.75528996e-06 0.0001302614213 0 0 -0.000393063544 0.0001302614213 2.544957359e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.537201904e-05 -7.184525739e-06 -0.0006027686898 0 0 -7.184525739e-06 1.399218269e-07 -2.762305893e-05 0 0 -0.0006027686898 -2.762305893e-05 7.594960674e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.253530152e-06 1.688723786e-06 -4.13403419e-05 0 0 1.688723786e-06 -7.756628224e-07 -4.286739405e-05 0 0 -4.13403419e-05 -4.286739405e-05 -4.635932918e-06 0 0 0 0 0 0 0 0 0 0 0 0 +5.23633882e-06 2.194082505e-06 -0.0002663677384 0 0 2.194082505e-06 -1.58158468e-06 2.154010725e-05 0 0 -0.0002663677384 2.154010725e-05 -1.517767653e-06 0 0 0 0 0 0 0 0 0 0 0 0 +3.626433693e-06 -2.450358514e-06 -7.997233806e-05 0 0 -2.450358514e-06 7.321267357e-07 8.190957338e-06 0 0 -7.997233806e-05 8.190957338e-06 4.338870964e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-6.480554156e-07 -7.942115724e-07 1.83884846e-05 0 0 -7.942115724e-07 6.531650426e-07 -4.346417994e-06 0 0 1.83884846e-05 -4.346417994e-06 2.525828242e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.660103746e-07 4.503422554e-07 -4.144292787e-05 0 0 4.503422554e-07 -3.278937039e-07 -5.219611679e-06 0 0 -4.144292787e-05 -5.219611679e-06 -3.045311758e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-5.480935386e-07 1.626734918e-07 -1.838404321e-05 0 0 1.626734918e-07 -1.2222473e-07 2.728737275e-06 0 0 -1.838404321e-05 2.728737275e-06 4.906053278e-07 0 0 0 0 0 0 0 0 0 0 0 0 -0.0005024245446 0.001679135732 -0.01105285495 -0.0001145927502 -0.04416114819 0.001679135732 -0.0005155544007 -0.06726135343 0.001254937582 -0.2157796261 -0.01105285495 -0.06726135343 -0.0007233632093 0.206821515 -0.001301091295 -0.0001145927502 0.001254937582 0.206821515 0.0003416525023 -0.09492737851 -0.04416114819 -0.2157796261 -0.001301091295 -0.09492737851 -9.281644326e-05 0.003603255087 -0.001332188579 0.1130061154 0.0004701982986 -0.02471639641 -0.001332188579 0.0007518536778 -0.06617414803 -0.0007705427967 -0.07998479698 0.1130061154 -0.06617414803 -0.003251103563 0.08498196473 0.001392232113 0.0004701982986 -0.0007705427967 0.08498196473 -0.0008343910537 -0.02408776036 -0.02471639641 -0.07998479698 0.001392232113 -0.02408776036 -0.0007755259114 0.0002991068365 -0.0007515340268 0.03486457801 -0.000209610759 0.0008383750564 -0.0007515340268 0.0006150661497 -0.01181984311 -0.0001754569111 -0.0140000708 0.03486457801 -0.01181984311 0.001295939044 0.01492837813 9.836483208e-05 -0.000209610759 -0.0001754569111 0.01492837813 -0.00019333934 0.0003285882731 0.0008383750564 -0.0140000708 9.836483208e-05 0.0003285882731 -0.0001583189131 @@ -89,19 +89,19 @@ -2.817635409e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.140704265e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.246862525e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001777274242 0.0001153165197 -0.07292978054 0.0001153165197 6.809313366e-05 -0.02082048132 -0.07292978054 -0.02082048132 -7.680709907e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001127734751 4.829709573e-05 -0.005294733159 4.829709573e-05 -2.040827272e-06 -0.001312323875 -0.005294733159 -0.001312323875 -7.080996768e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.557538113e-07 3.455397026e-07 -0.0002764092431 3.455397026e-07 -2.709275493e-08 -0.001855286606 -0.0002764092431 -0.001855286606 3.336434281e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.79922352e-06 5.710961654e-06 -0.0003077475893 5.710961654e-06 5.16689693e-06 -0.0003022545828 -0.0003077475893 -0.0003022545828 -3.844440549e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.168918667e-07 -4.647336013e-07 -0.0001030047334 -4.647336013e-07 -5.120614722e-07 -0.0001087137927 -0.0001030047334 -0.0001087137927 7.354135226e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.180082063e-08 1.84652503e-07 -3.569278121e-06 1.84652503e-07 3.200123095e-07 7.007899171e-06 -3.569278121e-06 7.007899171e-06 4.004464914e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.548090915e-08 -5.25976394e-08 -9.241540681e-07 -5.25976394e-08 -1.220050964e-07 -2.773234002e-06 -9.241540681e-07 -2.773234002e-06 2.18988967e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.328667613e-07 1.327511406e-07 -7.390057479e-06 1.327511406e-07 1.298636034e-07 -6.15922335e-06 -7.390057479e-06 -6.15922335e-06 1.092060728e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.950453555e-08 -1.73752836e-08 -1.167970278e-05 -1.73752836e-08 -7.129338138e-09 4.890956456e-06 -1.167970278e-05 4.890956456e-06 5.914538757e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.976277989e-08 -7.008769209e-08 -5.946967514e-06 -7.008769209e-08 -6.362414886e-08 -2.046725488e-06 -5.946967514e-06 -2.046725488e-06 1.544105663e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.255453219e-09 -1.97470596e-08 -3.002879843e-06 -1.97470596e-08 -3.014357607e-08 -1.863967237e-07 -3.002879843e-06 -1.863967237e-07 1.299325719e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.696764727e-08 -4.037481586e-10 -3.499630227e-06 -4.037481586e-10 -1.344826802e-08 3.157896962e-07 -3.499630227e-06 3.157896962e-07 8.336903345e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.856636055e-09 -9.042411631e-09 -3.870192868e-06 -9.042411631e-09 -1.329579704e-08 -7.473193761e-07 -3.870192868e-06 -7.473193761e-07 6.220194125e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001777274242 0.0001153165197 -0.07292978054 0 0 0.0001153165197 6.809313366e-05 -0.02082048132 0 0 -0.07292978054 -0.02082048132 -7.680709907e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001127734751 4.829709573e-05 -0.005294733159 0 0 4.829709573e-05 -2.040827272e-06 -0.001312323875 0 0 -0.005294733159 -0.001312323875 -7.080996768e-05 0 0 0 0 0 0 0 0 0 0 0 0 +8.557538113e-07 3.455397026e-07 -0.0002764092431 0 0 3.455397026e-07 -2.709275493e-08 -0.001855286606 0 0 -0.0002764092431 -0.001855286606 3.336434281e-06 0 0 0 0 0 0 0 0 0 0 0 0 +6.79922352e-06 5.710961654e-06 -0.0003077475893 0 0 5.710961654e-06 5.16689693e-06 -0.0003022545828 0 0 -0.0003077475893 -0.0003022545828 -3.844440549e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-4.168918667e-07 -4.647336013e-07 -0.0001030047334 0 0 -4.647336013e-07 -5.120614722e-07 -0.0001087137927 0 0 -0.0001030047334 -0.0001087137927 7.354135226e-07 0 0 0 0 0 0 0 0 0 0 0 0 +5.180082063e-08 1.84652503e-07 -3.569278121e-06 0 0 1.84652503e-07 3.200123095e-07 7.007899171e-06 0 0 -3.569278121e-06 7.007899171e-06 4.004464914e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.548090915e-08 -5.25976394e-08 -9.241540681e-07 0 0 -5.25976394e-08 -1.220050964e-07 -2.773234002e-06 0 0 -9.241540681e-07 -2.773234002e-06 2.18988967e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.328667613e-07 1.327511406e-07 -7.390057479e-06 0 0 1.327511406e-07 1.298636034e-07 -6.15922335e-06 0 0 -7.390057479e-06 -6.15922335e-06 1.092060728e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.950453555e-08 -1.73752836e-08 -1.167970278e-05 0 0 -1.73752836e-08 -7.129338138e-09 4.890956456e-06 0 0 -1.167970278e-05 4.890956456e-06 5.914538757e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-7.976277989e-08 -7.008769209e-08 -5.946967514e-06 0 0 -7.008769209e-08 -6.362414886e-08 -2.046725488e-06 0 0 -5.946967514e-06 -2.046725488e-06 1.544105663e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-6.255453219e-09 -1.97470596e-08 -3.002879843e-06 0 0 -1.97470596e-08 -3.014357607e-08 -1.863967237e-07 0 0 -3.002879843e-06 -1.863967237e-07 1.299325719e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.696764727e-08 -4.037481586e-10 -3.499630227e-06 0 0 -4.037481586e-10 -1.344826802e-08 3.157896962e-07 0 0 -3.499630227e-06 3.157896962e-07 8.336903345e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-3.856636055e-09 -9.042411631e-09 -3.870192868e-06 0 0 -9.042411631e-09 -1.329579704e-08 -7.473193761e-07 0 0 -3.870192868e-06 -7.473193761e-07 6.220194125e-08 0 0 0 0 0 0 0 0 0 0 0 0 9.385913868e-05 0.0001568452397 -0.0359345507 9.702770821e-05 -0.02963731888 0.0001568452397 0.0001962609688 -0.08051320247 0.0002096045236 -0.06968268371 -0.0359345507 -0.08051320247 -0.000173727331 -0.01412746807 -0.0001319533576 9.702770821e-05 0.0002096045236 -0.01412746807 8.642089417e-05 -0.01162312392 -0.02963731888 -0.06968268371 -0.0001319533576 -0.01162312392 -0.0001313692328 6.159209598e-05 0.0001120946657 -0.0076405059 4.179320995e-05 -0.006099308857 0.0001120946657 0.0002069293354 -0.01856636694 8.57715497e-05 -0.01548197093 -0.0076405059 -0.01856636694 -4.013402094e-05 -0.002316982012 -0.0001298593194 4.179320995e-05 8.57715497e-05 -0.002316982012 1.094936091e-05 -0.001502727462 -0.006099308857 -0.01548197093 -0.0001298593194 -0.001502727462 -0.0001956801074 2.418968561e-06 7.283511747e-06 0.0006288235229 3.35786565e-07 0.0005874767666 7.283511747e-06 1.248283018e-05 0.0005125880895 -2.231384021e-06 0.0004646674827 0.0006288235229 0.0005125880895 9.139585189e-07 -0.0007025278413 6.507964518e-06 3.35786565e-07 -2.231384021e-06 -0.0007025278413 -1.269990193e-06 -0.000667809275 0.0005874767666 0.0004646674827 6.507964518e-06 -0.000667809275 1.079859569e-05 @@ -128,19 +128,19 @@ -1.666793876e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.071335723e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.891700068e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.07643501064 0.01878514014 -0.04214112146 0.01878514014 -0.004367810024 0.001960513302 -0.04214112146 0.001960513302 0.02123012117 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.05565034382 0.01245197537 0.01530461616 0.01245197537 -0.002104013528 -0.001524500465 0.01530461616 -0.001524500465 -0.002346083984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0006517072112 -0.0003032240956 -0.0005583866007 -0.0003032240956 0.0003266637993 0.001460547387 -0.0005583866007 0.001460547387 0.004136246055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.003255778876 0.00169217716 0.00264243537 0.00169217716 -0.0008634498835 -0.001284464516 0.00264243537 -0.001284464516 -0.001924868959 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002638807211 -9.124127404e-05 -0.0002407434814 -9.124127404e-05 3.797447523e-05 7.336766598e-05 -0.0002407434814 7.336766598e-05 0.0001799171815 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.688314799e-05 0.0001505433042 0.0002543182362 0.0001505433042 -0.0001032326113 -0.0001915005653 0.0002543182362 -0.0001915005653 -0.0003228553773 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.622673411e-05 1.573066091e-05 2.988067764e-05 1.573066091e-05 -3.379049051e-06 -7.302488913e-06 2.988067764e-05 -7.302488913e-06 -1.306508009e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.738738582e-05 1.674003746e-05 2.298648832e-05 1.674003746e-05 -5.825508093e-06 -9.674279825e-06 2.298648832e-05 -9.674279825e-06 -1.476468982e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.524775349e-05 -2.532324078e-06 -1.725013377e-05 -2.532324078e-06 -2.280030099e-06 -8.145953945e-06 -1.725013377e-05 -8.145953945e-06 -1.671525226e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.021474031e-05 -9.030891416e-06 -2.204671779e-05 -9.030891416e-06 3.26884493e-06 6.007682833e-06 -2.204671779e-05 6.007682833e-06 1.439283374e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.954554244e-06 5.195664243e-07 -1.580272277e-06 5.195664243e-07 3.056845725e-07 -5.070641508e-07 -1.580272277e-06 -5.070641508e-07 -8.551469237e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.503085204e-06 1.039834212e-06 -1.801660486e-06 1.039834212e-06 2.067245043e-07 -3.720799075e-07 -1.801660486e-06 -3.720799075e-07 -3.908102418e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.101368381e-06 -1.455296429e-06 -6.493401504e-06 -1.455296429e-06 5.213295043e-07 7.339981393e-07 -6.493401504e-06 7.339981393e-07 2.574034945e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.07643501064 0.01878514014 -0.04214112146 0 0 0.01878514014 -0.004367810024 0.001960513302 0 0 -0.04214112146 0.001960513302 0.02123012117 0 0 0 0 0 0 0 0 0 0 0 0 +-0.05565034382 0.01245197537 0.01530461616 0 0 0.01245197537 -0.002104013528 -0.001524500465 0 0 0.01530461616 -0.001524500465 -0.002346083984 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0006517072112 -0.0003032240956 -0.0005583866007 0 0 -0.0003032240956 0.0003266637993 0.001460547387 0 0 -0.0005583866007 0.001460547387 0.004136246055 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003255778876 0.00169217716 0.00264243537 0 0 0.00169217716 -0.0008634498835 -0.001284464516 0 0 0.00264243537 -0.001284464516 -0.001924868959 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002638807211 -9.124127404e-05 -0.0002407434814 0 0 -9.124127404e-05 3.797447523e-05 7.336766598e-05 0 0 -0.0002407434814 7.336766598e-05 0.0001799171815 0 0 0 0 0 0 0 0 0 0 0 0 +-3.688314799e-05 0.0001505433042 0.0002543182362 0 0 0.0001505433042 -0.0001032326113 -0.0001915005653 0 0 0.0002543182362 -0.0001915005653 -0.0003228553773 0 0 0 0 0 0 0 0 0 0 0 0 +-5.622673411e-05 1.573066091e-05 2.988067764e-05 0 0 1.573066091e-05 -3.379049051e-06 -7.302488913e-06 0 0 2.988067764e-05 -7.302488913e-06 -1.306508009e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.738738582e-05 1.674003746e-05 2.298648832e-05 0 0 1.674003746e-05 -5.825508093e-06 -9.674279825e-06 0 0 2.298648832e-05 -9.674279825e-06 -1.476468982e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.524775349e-05 -2.532324078e-06 -1.725013377e-05 0 0 -2.532324078e-06 -2.280030099e-06 -8.145953945e-06 0 0 -1.725013377e-05 -8.145953945e-06 -1.671525226e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.021474031e-05 -9.030891416e-06 -2.204671779e-05 0 0 -9.030891416e-06 3.26884493e-06 6.007682833e-06 0 0 -2.204671779e-05 6.007682833e-06 1.439283374e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.954554244e-06 5.195664243e-07 -1.580272277e-06 0 0 5.195664243e-07 3.056845725e-07 -5.070641508e-07 0 0 -1.580272277e-06 -5.070641508e-07 -8.551469237e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-5.503085204e-06 1.039834212e-06 -1.801660486e-06 0 0 1.039834212e-06 2.067245043e-07 -3.720799075e-07 0 0 -1.801660486e-06 -3.720799075e-07 -3.908102418e-07 0 0 0 0 0 0 0 0 0 0 0 0 +6.101368381e-06 -1.455296429e-06 -6.493401504e-06 0 0 -1.455296429e-06 5.213295043e-07 7.339981393e-07 0 0 -6.493401504e-06 7.339981393e-07 2.574034945e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.05260207807 0.03297227321 0.01821310024 -0.01989324419 0.003584303046 0.03297227321 -0.01692269638 0.008365447757 0.0221474652 -0.00613971664 0.01821310024 0.008365447757 0.08624396583 0.04625259409 -0.02178572173 -0.01989324419 0.0221474652 0.04625259409 0.009260025005 -0.006995358728 0.003584303046 -0.00613971664 -0.02178572173 -0.006995358728 0.005359156378 -0.0299520908 0.02458873406 0.03407498304 -0.001099081519 -0.005297694692 0.02458873406 -0.02011418187 -0.02499255125 0.002527861888 0.005113378306 0.03407498304 -0.02499255125 -0.02640520519 0.00400086884 0.006206144626 -0.001099081519 0.002527861888 0.00400086884 -8.879680975e-05 -0.0003282947217 -0.005297694692 0.005113378306 0.006206144626 -0.0003282947217 -0.001206748984 -0.002487537332 0.002299439635 0.004765572158 0.0006736863567 -0.0005790895136 0.002299439635 -0.00176690951 -0.003297642718 0.0001099624038 -0.0001687639939 0.004765572158 -0.003297642718 -0.006576075758 0.0001977167576 -0.0009191126969 0.0006736863567 0.0001099624038 0.0001977167576 0.0007483844791 -0.001338871814 -0.0005790895136 -0.0001687639939 -0.0009191126969 -0.001338871814 0.001591022152 @@ -151,7 +151,7 @@ -3.150495678e-05 1.276911288e-05 5.669369553e-06 -1.209752253e-05 6.741098588e-06 1.276911288e-05 -4.685885055e-06 -3.495464289e-06 4.526237153e-06 -3.335680476e-06 5.669369553e-06 -3.495464289e-06 3.754433826e-06 4.096429843e-06 3.193231559e-07 -1.209752253e-05 4.526237153e-06 4.096429843e-06 -4.157588894e-06 2.939614035e-06 6.741098588e-06 -3.335680476e-06 3.193231559e-07 2.939614035e-06 -7.532908365e-07 1.734605559e-05 -1.622879996e-05 -3.771432291e-05 -9.820077597e-06 8.925329922e-06 -1.622879996e-05 1.396945727e-05 3.06249578e-05 5.865281635e-06 -5.434504817e-06 -3.771432291e-05 3.06249578e-05 6.590614331e-05 1.13740921e-05 -8.884281777e-06 -9.820077597e-06 5.865281635e-06 1.13740921e-05 -4.576181726e-07 1.43411875e-06 8.925329922e-06 -5.434504817e-06 -8.884281777e-06 1.43411875e-06 -2.53434067e-06 3.092019022e-07 -1.884882939e-06 -4.627609987e-06 -2.271039759e-06 2.500085806e-06 -1.884882939e-06 3.371555436e-06 7.34366478e-06 2.664769422e-06 -3.384637702e-06 -4.627609987e-06 7.34366478e-06 1.571478164e-05 5.721378029e-06 -6.725197644e-06 -2.271039759e-06 2.664769422e-06 5.721378029e-06 1.744354285e-06 -2.180976842e-06 2.500085806e-06 -3.384637702e-06 -6.725197644e-06 -2.180976842e-06 2.61765572e-06 --7.169845356e-06 3.906990157e-06 4.26197817e-06 -1.435205908e-06 4.992162653e-07 3.906990157e-06 -2.2063033e-06 -2.878420392e-06 5.245470957e-07 -1.802419873e-07 4.26197817e-06 -2.878420392e-06 -2.997820554e-06 5.937624424e-07 6.75497847e-07 -1.435205908e-06 5.245470957e-07 5.937624424e-07 -4.672981435e-07 3.740924119e-07 4.992162653e-07 -1.802419873e-07 6.75497847e-07 3.740924119e-07 -1.972888672e-07 +-7.169845356e-06 3.906990157e-06 4.26197817e-06 -1.435205908e-06 4.992162653e-07 3.906990157e-06 -2.2063033e-06 -2.878420392e-06 5.245470957e-07 -1.802419873e-07 4.26197817e-06 -2.878420392e-06 -2.997820554e-06 5.937624424e-07 6.754978469e-07 -1.435205908e-06 5.245470957e-07 5.937624424e-07 -4.672981435e-07 3.740924119e-07 4.992162653e-07 -1.802419873e-07 6.754978469e-07 3.740924119e-07 -1.972888672e-07 -3.247778793e-06 1.522309161e-06 -5.261495708e-07 -2.012309917e-06 8.281084292e-07 1.522309161e-06 -5.456739442e-07 1.383088957e-06 1.393937441e-06 -5.626270242e-07 -5.261495708e-07 1.383088957e-06 7.030253807e-06 2.915166181e-06 -1.273676523e-06 -2.012309917e-06 1.393937441e-06 2.915166181e-06 1.899089476e-07 -1.825334821e-07 8.281084292e-07 -5.626270242e-07 -1.273676523e-06 -1.825334821e-07 -1.510186101e-07 5.382743167e-07 -1.314277981e-06 -4.585110275e-06 -2.081675525e-06 1.642061466e-06 -1.314277981e-06 1.665438581e-06 4.631434928e-06 1.582174256e-06 -1.360892424e-06 -4.585110275e-06 4.631434928e-06 1.149108668e-05 3.275755547e-06 -2.749903098e-06 -2.081675525e-06 1.582174256e-06 3.275755547e-06 4.476539515e-07 -5.097501743e-07 1.642061466e-06 -1.360892424e-06 -2.749903098e-06 -5.097501743e-07 3.556910063e-07 0.01243363614 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -167,19 +167,19 @@ 2.522802741e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.57341496e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.28655749e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.07601175384 -0.01821638151 -0.04492341794 -0.01821638151 0.004185228049 0.002245002201 -0.04492341794 0.002245002201 -0.02192166367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0595184128 -0.01306216669 0.01567298422 -0.01306216669 0.002254677757 -0.001747600357 0.01567298422 -0.001747600357 0.002701656753 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00102561006 0.0004365080122 -0.0006256928986 0.0004365080122 -0.0004655382471 0.00170258563 -0.0006256928986 0.00170258563 -0.004502660249 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003215087086 -0.001758381271 0.002727957195 -0.001758381271 0.0009097441367 -0.001321051904 0.002727957195 -0.001321051904 0.001884198528 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002488221566 6.343788698e-05 -0.0001714457452 6.343788698e-05 -1.963009183e-05 1.760476486e-05 -0.0001714457452 1.760476486e-05 -4.37438622e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.627862241e-05 -0.0001365185432 0.0002312817237 -0.0001365185432 9.178176505e-05 -0.0001671517052 0.0002312817237 -0.0001671517052 0.0002727988528 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.782286264e-05 -2.94614307e-05 5.417317768e-05 -2.94614307e-05 1.091200713e-05 -2.058927544e-05 5.417317768e-05 -2.058927544e-05 3.778278216e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.007433629e-05 -1.093516563e-05 1.218835833e-05 -1.093516563e-05 2.580883757e-06 -5.10714415e-06 1.218835833e-05 -5.10714415e-06 8.786769005e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.395952582e-05 3.239318871e-06 -1.878247282e-05 3.239318871e-06 2.591169677e-06 -8.438315792e-06 -1.878247282e-05 -8.438315792e-06 1.636925613e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.568324248e-05 8.270603633e-06 -1.969144211e-05 8.270603633e-06 -3.325752282e-06 6.026033707e-06 -1.969144211e-05 6.026033707e-06 -1.384486853e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.369369463e-06 -8.019854304e-07 -9.370452047e-07 -8.019854304e-07 -3.739391093e-07 -5.172218319e-07 -9.370452047e-07 -5.172218319e-07 1.394391197e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.455084957e-06 -9.115903613e-07 -2.294277696e-06 -9.115903613e-07 -1.512682648e-07 -3.174983852e-07 -2.294277696e-06 -3.174983852e-07 1.531655758e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.126947424e-06 1.671951895e-06 -6.718998486e-06 1.671951895e-06 -5.541663567e-07 7.804443141e-07 -6.718998486e-06 7.804443141e-07 -2.504743338e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.07601175384 -0.01821638151 -0.04492341794 0 0 -0.01821638151 0.004185228049 0.002245002201 0 0 -0.04492341794 0.002245002201 -0.02192166367 0 0 0 0 0 0 0 0 0 0 0 0 +0.0595184128 -0.01306216669 0.01567298422 0 0 -0.01306216669 0.002254677757 -0.001747600357 0 0 0.01567298422 -0.001747600357 0.002701656753 0 0 0 0 0 0 0 0 0 0 0 0 +0.00102561006 0.0004365080122 -0.0006256928986 0 0 0.0004365080122 -0.0004655382471 0.00170258563 0 0 -0.0006256928986 0.00170258563 -0.004502660249 0 0 0 0 0 0 0 0 0 0 0 0 +0.003215087086 -0.001758381271 0.002727957195 0 0 -0.001758381271 0.0009097441367 -0.001321051904 0 0 0.002727957195 -0.001321051904 0.001884198528 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002488221566 6.343788698e-05 -0.0001714457452 0 0 6.343788698e-05 -1.963009183e-05 1.760476486e-05 0 0 -0.0001714457452 1.760476486e-05 -4.37438622e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.627862241e-05 -0.0001365185432 0.0002312817237 0 0 -0.0001365185432 9.178176505e-05 -0.0001671517052 0 0 0.0002312817237 -0.0001671517052 0.0002727988528 0 0 0 0 0 0 0 0 0 0 0 0 +7.782286264e-05 -2.94614307e-05 5.417317768e-05 0 0 -2.94614307e-05 1.091200713e-05 -2.058927544e-05 0 0 5.417317768e-05 -2.058927544e-05 3.778278216e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.007433629e-05 -1.093516563e-05 1.218835833e-05 0 0 -1.093516563e-05 2.580883757e-06 -5.10714415e-06 0 0 1.218835833e-05 -5.10714415e-06 8.786769005e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-4.395952582e-05 3.239318871e-06 -1.878247282e-05 0 0 3.239318871e-06 2.591169677e-06 -8.438315792e-06 0 0 -1.878247282e-05 -8.438315792e-06 1.636925613e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.568324248e-05 8.270603633e-06 -1.969144211e-05 0 0 8.270603633e-06 -3.325752282e-06 6.026033707e-06 0 0 -1.969144211e-05 6.026033707e-06 -1.384486853e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.369369463e-06 -8.019854304e-07 -9.370452047e-07 0 0 -8.019854304e-07 -3.739391093e-07 -5.172218319e-07 0 0 -9.370452047e-07 -5.172218319e-07 1.394391197e-06 0 0 0 0 0 0 0 0 0 0 0 0 +4.455084957e-06 -9.115903613e-07 -2.294277696e-06 0 0 -9.115903613e-07 -1.512682648e-07 -3.174983852e-07 0 0 -2.294277696e-06 -3.174983852e-07 1.531655758e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-7.126947424e-06 1.671951895e-06 -6.718998486e-06 0 0 1.671951895e-06 -5.541663567e-07 7.804443141e-07 0 0 -6.718998486e-06 7.804443141e-07 -2.504743338e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.05270923805 -0.03217765005 0.01624096559 0.02011081782 0.003941525796 -0.03217765005 0.0159640552 0.009774344773 -0.02188109317 -0.006305335027 0.01624096559 0.009774344773 -0.08884812415 0.04598068157 0.02204178214 0.02011081782 -0.02188109317 0.04598068157 -0.009315606823 -0.006894332086 0.003941525796 -0.006305335027 0.02204178214 -0.006894332086 -0.005436386054 0.03191781886 -0.02545705535 0.03480166875 0.001312737311 -0.005147712658 -0.02545705535 0.02016737577 -0.02434255377 -0.002881667908 0.004854301853 0.03480166875 -0.02434255377 0.02372607046 0.004907100301 -0.005538354343 0.001312737311 -0.002881667908 0.004907100301 -0.0001745176766 -0.0003967081826 -0.005147712658 0.004854301853 -0.005538354343 -0.0003967081826 0.001116631975 0.003221332547 -0.002776585534 0.005582671201 -0.0006501419601 -0.000539970021 -0.002776585534 0.002134992366 -0.003935991047 -6.95560192e-05 -0.0001011722156 0.005582671201 -0.003935991047 0.007768573228 6.869793062e-06 0.0007303480062 -0.0006501419601 -6.95560192e-05 6.869793062e-06 -0.0006164550041 -0.001252563562 -0.000539970021 -0.0001011722156 0.0007303480062 -0.001252563562 -0.001530623431 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_2_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_2_ref.dat index 03f1c8e7f6..847278bea6 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_2_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_2_ref.dat @@ -11,19 +11,19 @@ -1.314968019e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.159332638e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.056783771e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.313221738e-06 1.074498206e-05 0.04588719765 1.074498206e-05 2.104359425e-05 0.1465591183 0.04588719765 0.1465591183 0.0001248966631 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.135751152e-06 1.168594731e-05 0.02622964166 1.168594731e-05 6.896793778e-05 0.0785111719 0.02622964166 0.0785111719 -0.000408577432 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.073062264e-06 1.228067155e-06 0.004779746198 1.228067155e-06 5.78020044e-05 0.01387684402 0.004779746198 0.01387684402 -0.0001270535099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.927718375e-06 -6.945599075e-07 -0.0008742384404 -6.945599075e-07 1.666654537e-05 -0.002336012033 -0.0008742384404 -0.002336012033 3.607724624e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.09313903e-07 8.633143365e-08 -0.0004549889899 8.633143365e-08 -8.639084994e-07 -0.001246265202 -0.0004549889899 -0.001246265202 1.296650165e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.69340196e-07 -4.411614579e-07 -0.0001607242647 -4.411614579e-07 -1.451575663e-06 -0.000473214537 -0.0001607242647 -0.000473214537 3.029225226e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.505508316e-07 -3.176939997e-07 8.64907736e-05 -3.176939997e-07 -6.606259215e-07 0.000270876625 8.64907736e-05 0.000270876625 -2.934230169e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.214584812e-09 1.435085018e-08 1.315713089e-05 1.435085018e-08 8.061813032e-08 3.223915587e-05 1.315713089e-05 3.223915587e-05 -5.078093883e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.645058241e-08 8.324185625e-08 2.618514298e-05 8.324185625e-08 2.70222546e-07 8.127838458e-05 2.618514298e-05 8.127838458e-05 -5.458483415e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.193222305e-09 1.172706084e-08 -1.161910887e-05 1.172706084e-08 1.013959931e-07 -3.25054128e-05 -1.161910887e-05 -3.25054128e-05 5.837522707e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.03372322e-09 -3.996234853e-09 3.627426796e-06 -3.996234853e-09 -1.964311186e-08 1.178529647e-05 3.627426796e-06 1.178529647e-05 -2.829759444e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.35285258e-09 -5.579076338e-09 -2.704944349e-06 -5.579076338e-09 -1.107880696e-08 -7.43784641e-06 -2.704944349e-06 -7.43784641e-06 9.235935521e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.360514988e-09 -3.764953797e-09 3.190040755e-06 -3.764953797e-09 -2.799810009e-09 1.056162359e-05 3.190040755e-06 1.056162359e-05 4.731559061e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +5.313221738e-06 1.074498206e-05 0.04588719765 0 0 1.074498206e-05 2.104359425e-05 0.1465591183 0 0 0.04588719765 0.1465591183 0.0001248966631 0 0 0 0 0 0 0 0 0 0 0 0 +2.135751152e-06 1.168594731e-05 0.02622964166 0 0 1.168594731e-05 6.896793778e-05 0.0785111719 0 0 0.02622964166 0.0785111719 -0.000408577432 0 0 0 0 0 0 0 0 0 0 0 0 +-4.073062264e-06 1.228067155e-06 0.004779746198 0 0 1.228067155e-06 5.78020044e-05 0.01387684402 0 0 0.004779746198 0.01387684402 -0.0001270535099 0 0 0 0 0 0 0 0 0 0 0 0 +-1.927718375e-06 -6.945599075e-07 -0.0008742384404 0 0 -6.945599075e-07 1.666654537e-05 -0.002336012033 0 0 -0.0008742384404 -0.002336012033 3.607724624e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.09313903e-07 8.633143365e-08 -0.0004549889899 0 0 8.633143365e-08 -8.639084994e-07 -0.001246265202 0 0 -0.0004549889899 -0.001246265202 1.296650165e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.69340196e-07 -4.411614579e-07 -0.0001607242647 0 0 -4.411614579e-07 -1.451575663e-06 -0.000473214537 0 0 -0.0001607242647 -0.000473214537 3.029225226e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.505508316e-07 -3.176939997e-07 8.64907736e-05 0 0 -3.176939997e-07 -6.606259215e-07 0.000270876625 0 0 8.64907736e-05 0.000270876625 -2.934230169e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.214584812e-09 1.435085018e-08 1.315713089e-05 0 0 1.435085018e-08 8.061813032e-08 3.223915587e-05 0 0 1.315713089e-05 3.223915587e-05 -5.078093883e-07 0 0 0 0 0 0 0 0 0 0 0 0 +2.645058241e-08 8.324185625e-08 2.618514298e-05 0 0 8.324185625e-08 2.70222546e-07 8.127838458e-05 0 0 2.618514298e-05 8.127838458e-05 -5.458483415e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.193222305e-09 1.172706084e-08 -1.161910887e-05 0 0 1.172706084e-08 1.013959931e-07 -3.25054128e-05 0 0 -1.161910887e-05 -3.25054128e-05 5.837522707e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.03372322e-09 -3.996234853e-09 3.627426796e-06 0 0 -3.996234853e-09 -1.964311186e-08 1.178529647e-05 0 0 3.627426796e-06 1.178529647e-05 -2.829759444e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-2.35285258e-09 -5.579076338e-09 -2.704944349e-06 0 0 -5.579076338e-09 -1.107880696e-08 -7.43784641e-06 0 0 -2.704944349e-06 -7.43784641e-06 9.235935521e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-2.360514988e-09 -3.764953797e-09 3.190040755e-06 0 0 -3.764953797e-09 -2.799810009e-09 1.056162359e-05 0 0 3.190040755e-06 1.056162359e-05 4.731559061e-08 0 0 0 0 0 0 0 0 0 0 0 0 -8.913270733e-06 -1.407500145e-06 -0.005199553481 -1.20641977e-05 -0.013688994 -1.407500145e-06 1.973520327e-08 0.00692367315 7.725331959e-07 0.02198012245 -0.005199553481 0.00692367315 4.457496302e-05 0.01043252102 4.644448009e-05 -1.20641977e-05 7.725331959e-07 0.01043252102 1.211461716e-06 0.03467102832 -0.013688994 0.02198012245 4.644448009e-05 0.03467102832 -0.0002841263701 -2.464388671e-06 -2.03503686e-06 -0.004893912357 -7.537188131e-06 -0.01240756391 -2.03503686e-06 2.971533617e-06 0.005643549498 7.559328223e-06 0.01887838433 -0.004893912357 0.005643549498 5.882834225e-06 0.008460902299 1.739484031e-05 -7.537188131e-06 7.559328223e-06 0.008460902299 1.527662166e-05 0.03023548483 -0.01240756391 0.01887838433 1.739484031e-05 0.03023548483 6.912768617e-06 -1.294270649e-06 7.216578025e-07 -0.001492236747 2.689045865e-06 -0.00397075548 7.216578025e-07 6.269736449e-06 0.001497513723 1.256870987e-05 0.00557495644 -0.001492236747 0.001497513723 -2.385752026e-06 0.002300336807 4.164687913e-06 2.689045865e-06 1.256870987e-05 0.002300336807 2.403989908e-05 0.009143551589 -0.00397075548 0.00557495644 4.164687913e-06 0.009143551589 9.578231493e-05 @@ -36,7 +36,7 @@ -5.088053179e-10 2.092982552e-09 -5.927524619e-08 4.698583877e-09 -1.446150802e-07 2.092982552e-09 8.046614435e-10 8.639856277e-08 2.598750311e-09 2.872778269e-07 -5.927524619e-08 8.639856277e-08 2.370198974e-08 1.210719579e-07 1.469373981e-08 4.698583877e-09 2.598750311e-09 1.210719579e-07 6.011837416e-09 4.23194215e-07 -1.446150802e-07 2.872778269e-07 1.469373981e-08 4.23194215e-07 -9.328650845e-08 -1.735957237e-09 -4.334672208e-10 -2.858661633e-08 -1.655392413e-09 -2.438018155e-07 -4.334672208e-10 1.301633828e-09 7.344880864e-08 1.414648716e-09 2.43199662e-07 -2.858661633e-08 7.344880864e-08 -9.036885831e-09 1.327943823e-07 -5.072283963e-09 -1.655392413e-09 1.414648716e-09 1.327943823e-07 1.32032683e-09 3.852228128e-07 -2.438018155e-07 2.43199662e-07 -5.072283963e-09 3.852228128e-07 3.262530884e-08 1.07123136e-09 -4.063912612e-11 -2.10034822e-07 2.749704244e-10 -7.056818695e-07 -4.063912612e-11 -1.024243182e-10 4.649042205e-07 5.958680122e-10 1.451145801e-06 -2.10034822e-07 4.649042205e-07 1.001158349e-08 7.106837292e-07 5.04863303e-09 2.749704244e-10 5.958680122e-10 7.106837292e-07 2.109752757e-09 2.175651173e-06 -7.056818695e-07 1.451145801e-06 5.04863303e-09 2.175651173e-06 -5.263387346e-08 -9.511674725e-11 6.458023261e-10 -1.074427657e-07 1.278122934e-09 -3.676260546e-07 6.458023261e-10 -5.427641832e-10 1.793879577e-07 -3.416757217e-10 5.447282966e-07 -1.074427657e-07 1.793879577e-07 7.740179221e-09 2.865191682e-07 5.458333029e-09 1.278122934e-09 -3.416757217e-10 2.865191682e-07 2.119721084e-10 8.488756089e-07 -3.676260546e-07 5.447282966e-07 5.458333029e-09 8.488756089e-07 -2.912055946e-08 +9.511674725e-11 6.458023261e-10 -1.074427657e-07 1.278122934e-09 -3.676260546e-07 6.458023261e-10 -5.427641832e-10 1.793879577e-07 -3.416757217e-10 5.447282966e-07 -1.074427657e-07 1.793879577e-07 7.74017922e-09 2.865191682e-07 5.458333029e-09 1.278122934e-09 -3.416757217e-10 2.865191682e-07 2.119721084e-10 8.488756089e-07 -3.676260546e-07 5.447282966e-07 5.458333029e-09 8.488756089e-07 -2.912055946e-08 -6.928341686e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.63213816e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.239832748e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -50,19 +50,19 @@ -1.716116153e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.3558949e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.954723028e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001270964879 -0.0001649243312 0.05363270954 -0.0001649243312 -0.0001923451775 0.08551252716 0.05363270954 0.08551252716 0.0001868238447 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.958870904e-05 -0.00010453632 0.002822097207 -0.00010453632 -0.0001220574444 0.005648315456 0.002822097207 0.005648315456 -5.423914371e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.758782284e-07 -2.021671248e-06 0.0009520075958 -2.021671248e-06 -2.766107391e-06 -0.001201345693 0.0009520075958 -0.001201345693 2.781289328e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.55678949e-05 -6.338620742e-06 0.0005387797791 -6.338620742e-06 -5.98282462e-08 1.468074784e-05 0.0005387797791 1.468074784e-05 3.149772261e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.066426247e-07 2.701654009e-07 -0.000105512671 2.701654009e-07 7.179104603e-07 0.0001423451584 -0.000105512671 0.0001423451584 1.411620541e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.043052873e-07 3.606012333e-07 1.954530205e-05 3.606012333e-07 8.560771431e-07 1.671938714e-05 1.954530205e-05 1.671938714e-05 4.394553087e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.692817888e-09 -8.158269017e-09 5.076107519e-06 -8.158269017e-09 -4.700312649e-09 1.859838715e-06 5.076107519e-06 1.859838715e-06 7.095457711e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.671201209e-08 -5.607710816e-08 -6.800650081e-06 -5.607710816e-08 -1.461400419e-07 1.593445887e-05 -6.800650081e-06 1.593445887e-05 -1.101040214e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.81296127e-09 3.383663989e-08 1.612078119e-05 3.383663989e-08 5.738786901e-08 2.150267962e-05 1.612078119e-05 2.150267962e-05 2.855530647e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.273130809e-08 6.571217515e-08 6.681927875e-06 6.571217515e-08 7.567272935e-08 6.835340998e-06 6.681927875e-06 6.835340998e-06 1.902865707e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.087592633e-09 6.716807134e-09 1.120607225e-06 6.716807134e-09 1.745416081e-08 6.225986605e-06 1.120607225e-06 6.225986605e-06 5.47843449e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.676081533e-08 -1.327730553e-08 4.803737549e-06 -1.327730553e-08 -9.502968989e-09 6.360342208e-06 4.803737549e-06 6.360342208e-06 7.579413957e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.045525998e-09 5.279416363e-09 3.192601504e-06 5.279416363e-09 1.332193721e-08 5.817141724e-06 3.192601504e-06 5.817141724e-06 8.525597828e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001270964879 -0.0001649243312 0.05363270954 0 0 -0.0001649243312 -0.0001923451775 0.08551252716 0 0 0.05363270954 0.08551252716 0.0001868238447 0 0 0 0 0 0 0 0 0 0 0 0 +-7.958870904e-05 -0.00010453632 0.002822097207 0 0 -0.00010453632 -0.0001220574444 0.005648315456 0 0 0.002822097207 0.005648315456 -5.423914371e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-9.758782284e-07 -2.021671248e-06 0.0009520075958 0 0 -2.021671248e-06 -2.766107391e-06 -0.001201345693 0 0 0.0009520075958 -0.001201345693 2.781289328e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.55678949e-05 -6.338620742e-06 0.0005387797791 0 0 -6.338620742e-06 -5.98282462e-08 1.468074784e-05 0 0 0.0005387797791 1.468074784e-05 3.149772261e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-4.066426247e-07 2.701654009e-07 -0.000105512671 0 0 2.701654009e-07 7.179104603e-07 0.0001423451584 0 0 -0.000105512671 0.0001423451584 1.411620541e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.043052873e-07 3.606012333e-07 1.954530205e-05 0 0 3.606012333e-07 8.560771431e-07 1.671938714e-05 0 0 1.954530205e-05 1.671938714e-05 4.394553087e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.692817888e-09 -8.158269017e-09 5.076107519e-06 0 0 -8.158269017e-09 -4.700312649e-09 1.859838715e-06 0 0 5.076107519e-06 1.859838715e-06 7.095457711e-08 0 0 0 0 0 0 0 0 0 0 0 0 +6.671201209e-08 -5.607710816e-08 -6.800650081e-06 0 0 -5.607710816e-08 -1.461400419e-07 1.593445887e-05 0 0 -6.800650081e-06 1.593445887e-05 -1.101040214e-08 0 0 0 0 0 0 0 0 0 0 0 0 +4.81296127e-09 3.383663989e-08 1.612078119e-05 0 0 3.383663989e-08 5.738786901e-08 2.150267962e-05 0 0 1.612078119e-05 2.150267962e-05 2.855530647e-07 0 0 0 0 0 0 0 0 0 0 0 0 +5.273130809e-08 6.571217515e-08 6.681927875e-06 0 0 6.571217515e-08 7.567272935e-08 6.835340998e-06 0 0 6.681927875e-06 6.835340998e-06 1.902865707e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-8.087592633e-09 6.716807134e-09 1.120607225e-06 0 0 6.716807134e-09 1.745416081e-08 6.225986605e-06 0 0 1.120607225e-06 6.225986605e-06 5.47843449e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-1.676081533e-08 -1.327730553e-08 4.803737549e-06 0 0 -1.327730553e-08 -9.502968989e-09 6.360342208e-06 0 0 4.803737549e-06 6.360342208e-06 7.579413957e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-5.045525998e-09 5.279416363e-09 3.192601504e-06 0 0 5.279416363e-09 1.332193721e-08 5.817141724e-06 0 0 3.192601504e-06 5.817141724e-06 8.525597828e-08 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001050061516 -0.0001871181391 0.03279960654 -0.0001093177263 0.02795726123 -0.0001871181391 -0.0002323158529 0.08681465419 -0.0002460865026 0.07518086534 0.03279960654 0.08681465419 0.0002935154523 0.01970960716 0.000263538347 -0.0001093177263 -0.0002460865026 0.01970960716 -0.0001038155267 0.01844715402 0.02795726123 0.07518086534 0.000263538347 0.01844715402 0.0002270939565 -6.171302906e-05 -0.0001152240102 0.006804832278 -4.281989845e-05 0.006139892266 -0.0001152240102 -0.0002236545798 0.01822770871 -9.702182624e-05 0.01665807311 0.006804832278 0.01822770871 -0.0001016062614 0.002097064322 1.265977705e-05 -4.281989845e-05 -9.702182624e-05 0.002097064322 -2.047942647e-05 0.002661095365 0.006139892266 0.01665807311 1.265977705e-05 0.002661095365 0.0001032097863 -9.022637637e-07 -5.348536941e-06 -5.51352256e-05 -2.20234026e-07 -2.179849135e-05 -5.348536941e-06 -2.56653664e-05 -0.001450206023 -2.29384701e-06 -0.001107961827 -5.51352256e-05 -0.001450206023 2.123064907e-05 4.303859495e-06 4.054224106e-06 -2.20234026e-07 -2.29384701e-06 4.303859495e-06 1.27158253e-07 8.310960783e-06 -2.179849135e-05 -0.001107961827 4.054224106e-06 8.310960783e-06 -9.464966989e-06 @@ -89,21 +89,21 @@ 3.323911568e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.290667329e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.244859586e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.387985347e-05 0.0005643632376 0.06776133067 0.0005643632376 -0.003467238133 0.08847301209 0.06776133067 0.08847301209 -0.0003898046352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001558249103 0.0001715102952 0.02668087258 0.0001715102952 0.004604332041 0.006798927848 0.02668087258 0.006798927848 -0.0005696074046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.807739469e-05 -0.0002532282523 0.01506074144 -0.0002532282523 -0.0009821367439 0.04619984928 0.01506074144 0.04619984928 -2.696156564e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.198912524e-06 -7.001427602e-06 0.003600428438 -7.001427602e-06 0.0001385329741 0.008296242547 0.003600428438 0.008296242547 -3.881771669e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.910117618e-06 -4.253978418e-06 0.0002824055412 -4.253978418e-06 -9.792206439e-05 0.0008145643348 0.0002824055412 0.0008145643348 -2.357269156e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.415142615e-07 -4.238585536e-06 3.428245092e-05 -4.238585536e-06 6.199904198e-07 0.0004862267113 3.428245092e-05 0.0004862267113 8.030167046e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.109102451e-07 -3.242038644e-07 0.0001482481089 -3.242038644e-07 4.232380852e-05 0.0006620462424 0.0001482481089 0.0006620462424 2.023486343e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.474275331e-07 3.058058435e-07 2.637361801e-05 3.058058435e-07 1.05508017e-05 4.64806608e-05 2.637361801e-05 4.64806608e-05 2.641366705e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.682861758e-08 9.879455141e-07 -4.811925672e-06 9.879455141e-07 -4.229300264e-06 -6.682873042e-05 -4.811925672e-06 -6.682873042e-05 -2.931772143e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.787168142e-08 6.623355059e-07 2.030234677e-05 6.623355059e-07 -2.980585532e-06 0.0001259580522 2.030234677e-05 0.0001259580522 2.988198366e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.994959856e-09 -2.000431223e-07 3.597469167e-06 -2.000431223e-07 4.456082357e-06 6.147774703e-05 3.597469167e-06 6.147774703e-05 3.690422896e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.526148093e-09 -5.235185132e-07 -2.307006982e-06 -5.235185132e-07 2.107720616e-06 4.497438731e-06 -2.307006982e-06 4.497438731e-06 2.540408096e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.139705606e-09 7.623744255e-09 4.928980271e-06 7.623744255e-09 6.395722854e-07 1.973319255e-05 4.928980271e-06 1.973319255e-05 9.45383193e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-7.387985347e-05 0.0005643632376 0.06776133067 0 0 0.0005643632376 -0.003467238133 0.08847301209 0 0 0.06776133067 0.08847301209 -0.0003898046352 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001558249103 0.0001715102952 0.02668087258 0 0 0.0001715102952 0.004604332041 0.006798927848 0 0 0.02668087258 0.006798927848 -0.0005696074046 0 0 0 0 0 0 0 0 0 0 0 0 +-2.807739469e-05 -0.0002532282523 0.01506074144 0 0 -0.0002532282523 -0.0009821367439 0.04619984928 0 0 0.01506074144 0.04619984928 -2.696156564e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.198912524e-06 -7.001427602e-06 0.003600428438 0 0 -7.001427602e-06 0.0001385329741 0.008296242547 0 0 0.003600428438 0.008296242547 -3.881771669e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.910117618e-06 -4.253978418e-06 0.0002824055412 0 0 -4.253978418e-06 -9.792206439e-05 0.0008145643348 0 0 0.0002824055412 0.0008145643348 -2.357269156e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.415142615e-07 -4.238585536e-06 3.428245092e-05 0 0 -4.238585536e-06 6.199904198e-07 0.0004862267113 0 0 3.428245092e-05 0.0004862267113 8.030167046e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.109102451e-07 -3.242038644e-07 0.0001482481089 0 0 -3.242038644e-07 4.232380852e-05 0.0006620462424 0 0 0.0001482481089 0.0006620462424 2.023486343e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.474275331e-07 3.058058435e-07 2.637361801e-05 0 0 3.058058435e-07 1.05508017e-05 4.64806608e-05 0 0 2.637361801e-05 4.64806608e-05 2.641366705e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-9.682861758e-08 9.879455141e-07 -4.811925672e-06 0 0 9.879455141e-07 -4.229300264e-06 -6.682873042e-05 0 0 -4.811925672e-06 -6.682873042e-05 -2.931772143e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.787168142e-08 6.623355059e-07 2.030234677e-05 0 0 6.623355059e-07 -2.980585532e-06 0.0001259580522 0 0 2.030234677e-05 0.0001259580522 2.988198366e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-9.994959856e-09 -2.000431223e-07 3.597469167e-06 0 0 -2.000431223e-07 4.456082357e-06 6.147774703e-05 0 0 3.597469167e-06 6.147774703e-05 3.690422896e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.526148093e-09 -5.235185132e-07 -2.307006982e-06 0 0 -5.235185132e-07 2.107720616e-06 4.497438731e-06 0 0 -2.307006982e-06 4.497438731e-06 2.540408096e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-9.139705606e-09 7.623744255e-09 4.928980271e-06 0 0 7.623744255e-09 6.395722854e-07 1.973319255e-05 0 0 4.928980271e-06 1.973319255e-05 9.45383193e-07 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001732568089 -0.000107681126 0.07892992829 0.001660194498 -0.1662854742 -0.000107681126 -0.0001054159478 0.1802370581 0.0008347770885 0.07111415026 0.07892992829 0.1802370581 0.0002218620755 -0.01662815636 -0.0008473428961 0.001660194498 0.0008347770885 -0.01662815636 -0.0008517762251 -0.1059161185 -0.1662854742 0.07111415026 -0.0008473428961 -0.1059161185 -0.001279433461 -3.849635137e-05 -0.0005716278149 0.03386941281 -0.002144833025 0.01530910885 -0.0005716278149 -0.0002327822923 0.05843916291 -9.158449478e-07 0.008190903679 0.03386941281 0.05843916291 0.0001670333572 -0.02382715935 0.000250123826 -0.002144833025 -9.158449478e-07 -0.02382715935 0.004070024801 -0.09701529477 0.01530910885 0.008190903679 0.000250123826 -0.09701529477 -0.00300717065 +3.849635137e-05 -0.0005716278149 0.03386941281 -0.002144833025 0.01530910885 -0.0005716278149 -0.0002327822923 0.05843916291 -9.15844948e-07 0.008190903679 0.03386941281 0.05843916291 0.0001670333572 -0.02382715935 0.000250123826 -0.002144833025 -9.15844948e-07 -0.02382715935 0.004070024801 -0.09701529477 0.01530910885 0.008190903679 0.000250123826 -0.09701529477 -0.00300717065 6.770001769e-05 0.0001099898011 -0.0005407473492 -9.505274469e-05 -0.008945507062 0.0001099898011 -0.0001120809132 0.006459627139 -0.0002887936834 0.01085503433 -0.0005407473492 0.006459627139 1.901835948e-05 0.001219048671 0.0001814091704 -9.505274469e-05 -0.0002887936834 0.001219048671 -7.006907416e-05 0.01312962549 -0.008945507062 0.01085503433 0.0001814091704 0.01312962549 0.0005252651418 -3.877411206e-05 4.163290498e-05 -0.00263228598 2.90194838e-05 -0.007211040414 4.163290498e-05 -2.505622977e-05 0.004444334269 -3.095390377e-05 0.01275860546 -0.00263228598 0.004444334269 -3.156106968e-06 0.006375559186 -2.590798848e-05 2.90194838e-05 -3.095390377e-05 0.006375559186 1.016500528e-05 0.01774455929 -0.007211040414 0.01275860546 -2.590798848e-05 0.01774455929 -0.0001781019177 -9.304506996e-06 3.030231221e-07 -0.0001716499264 1.104066242e-05 -0.0006041248429 3.030231221e-07 2.815775509e-06 0.0002734752221 4.146306852e-06 0.0006901256217 -0.0001716499264 0.0002734752221 -1.200688108e-07 0.0004121197128 2.508858215e-06 1.104066242e-05 4.146306852e-06 0.0004121197128 -2.674722513e-06 0.001073539273 -0.0006041248429 0.0006901256217 2.508858215e-06 0.001073539273 -2.305981244e-05 @@ -128,19 +128,19 @@ 1.425250205e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.268866085e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.341806956e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0004336344833 -0.007574473013 0.009324038819 -0.007574473013 -0.1013696633 0.04147754895 0.009324038819 0.04147754895 0.02621182425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002756221503 -0.00641758041 -0.003954408443 -0.00641758041 -0.03624123259 -0.008719601118 -0.003954408443 -0.008719601118 0.001249483265 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.991062841e-05 0.0008561881304 -6.77199561e-05 0.0008561881304 -0.0009930020503 -0.001788830267 -6.77199561e-05 -0.001788830267 0.0002403158326 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.47512538e-05 0.0003023458809 0.0001943025661 0.0003023458809 -0.002001006152 -0.00152971858 0.0001943025661 -0.00152971858 -0.001108596683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.052489575e-07 -4.984478219e-06 -1.187324279e-06 -4.984478219e-06 -0.0001914511249 4.960139861e-05 -1.187324279e-06 4.960139861e-05 8.061392978e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.777271732e-06 8.039165295e-05 7.522223056e-05 8.039165295e-05 0.0002308989466 1.376614522e-05 7.522223056e-05 1.376614522e-05 -0.0001500778077 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.794361143e-06 -1.056038176e-05 -9.9525598e-06 -1.056038176e-05 0.0001661953734 0.0001243445671 -9.9525598e-06 0.0001243445671 9.791878092e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.111779531e-07 -2.194183154e-07 7.442816985e-07 -2.194183154e-07 -2.779771988e-05 -7.500590937e-06 7.442816985e-07 -7.500590937e-06 -3.385224772e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.708867537e-07 -6.837291675e-06 2.568718746e-06 -6.837291675e-06 -3.940167678e-05 8.384379651e-06 2.568718746e-06 8.384379651e-06 -2.35948063e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.607566402e-07 -1.051673333e-07 -1.44280554e-07 -1.051673333e-07 2.960103332e-05 3.330774363e-05 -1.44280554e-07 3.330774363e-05 2.5756894e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.130717768e-07 1.752008387e-06 2.328639495e-06 1.752008387e-06 2.997410513e-05 2.189838335e-05 2.328639495e-06 2.189838335e-05 9.717460158e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.359549101e-07 5.688630924e-07 1.760198463e-06 5.688630924e-07 7.25417082e-06 9.815787764e-06 1.760198463e-06 9.815787764e-06 3.335102367e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.473786956e-07 -1.583791487e-07 7.147108247e-07 -1.583791487e-07 -6.634569827e-07 7.280439855e-06 7.147108247e-07 7.280439855e-06 4.845161204e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004336344833 -0.007574473013 0.009324038819 0 0 -0.007574473013 -0.1013696633 0.04147754895 0 0 0.009324038819 0.04147754895 0.02621182425 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002756221503 -0.00641758041 -0.003954408443 0 0 -0.00641758041 -0.03624123259 -0.008719601118 0 0 -0.003954408443 -0.008719601118 0.001249483265 0 0 0 0 0 0 0 0 0 0 0 0 +-3.991062841e-05 0.0008561881304 -6.77199561e-05 0 0 0.0008561881304 -0.0009930020503 -0.001788830267 0 0 -6.77199561e-05 -0.001788830267 0.0002403158326 0 0 0 0 0 0 0 0 0 0 0 0 +-4.47512538e-05 0.0003023458809 0.0001943025661 0 0 0.0003023458809 -0.002001006152 -0.00152971858 0 0 0.0001943025661 -0.00152971858 -0.001108596683 0 0 0 0 0 0 0 0 0 0 0 0 +-6.052489575e-07 -4.984478219e-06 -1.187324279e-06 0 0 -4.984478219e-06 -0.0001914511249 4.960139861e-05 0 0 -1.187324279e-06 4.960139861e-05 8.061392978e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.777271732e-06 8.039165295e-05 7.522223056e-05 0 0 8.039165295e-05 0.0002308989466 1.376614522e-05 0 0 7.522223056e-05 1.376614522e-05 -0.0001500778077 0 0 0 0 0 0 0 0 0 0 0 0 +1.794361143e-06 -1.056038176e-05 -9.9525598e-06 0 0 -1.056038176e-05 0.0001661953734 0.0001243445671 0 0 -9.9525598e-06 0.0001243445671 9.791878092e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.111779531e-07 -2.194183154e-07 7.442816985e-07 0 0 -2.194183154e-07 -2.779771988e-05 -7.500590937e-06 0 0 7.442816985e-07 -7.500590937e-06 -3.385224772e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.708867537e-07 -6.837291675e-06 2.568718746e-06 0 0 -6.837291675e-06 -3.940167678e-05 8.384379651e-06 0 0 2.568718746e-06 8.384379651e-06 -2.35948063e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.607566402e-07 -1.051673333e-07 -1.44280554e-07 0 0 -1.051673333e-07 2.960103332e-05 3.330774363e-05 0 0 -1.44280554e-07 3.330774363e-05 2.5756894e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.130717768e-07 1.752008387e-06 2.328639495e-06 0 0 1.752008387e-06 2.997410513e-05 2.189838335e-05 0 0 2.328639495e-06 2.189838335e-05 9.717460158e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.359549101e-07 5.688630924e-07 1.760198463e-06 0 0 5.688630924e-07 7.25417082e-06 9.815787764e-06 0 0 1.760198463e-06 9.815787764e-06 3.335102367e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.473786956e-07 -1.583791487e-07 7.147108247e-07 0 0 -1.583791487e-07 -6.634569827e-07 7.280439855e-06 0 0 7.147108247e-07 7.280439855e-06 4.845161204e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.005739984026 0.0003792183875 -0.0006823856942 0.03639573007 -0.03325438376 0.0003792183875 -0.0008902310112 -0.0001169296618 0.008409621828 -0.004683609649 -0.0006823856942 -0.0001169296618 0.0004713995598 -0.01135035837 0.007538725919 0.03639573007 0.008409621828 -0.01135035837 -0.08248769318 -0.03606097817 -0.03325438376 -0.004683609649 0.007538725919 -0.03606097817 0.09999550478 -0.01345599706 -0.001786494479 0.003754319199 0.01746539587 0.01989916217 -0.001786494479 -0.0008388982843 -0.0004340380822 0.003415906828 0.002568657627 0.003754319199 -0.0004340380822 -0.0001553702935 -0.00532705406 -0.004133473478 0.01746539587 0.003415906828 -0.00532705406 -0.02296923738 -0.02638466288 0.01989916217 0.002568657627 -0.004133473478 -0.02638466288 -0.02716556442 -0.0004179178727 -8.730937509e-05 0.0006228462342 0.00060169747 0.0009002230961 -8.730937509e-05 -1.444785379e-05 -1.408078182e-05 8.904368628e-05 0.0001911067833 0.0006228462342 -1.408078182e-05 1.817993047e-05 0.0005079286478 -0.001412526687 0.00060169747 8.904368628e-05 0.0005079286478 0.0007855048965 -0.001431358168 0.0009002230961 0.0001911067833 -0.001412526687 -0.001431358168 -0.002016754158 @@ -148,7 +148,7 @@ 5.766380977e-05 -1.380667305e-05 -9.85768623e-06 -6.374860689e-05 -9.250584945e-05 -1.380667305e-05 2.101897852e-07 -5.329440213e-07 -3.298731911e-05 4.704039465e-05 -9.85768623e-06 -5.329440213e-07 -2.117957803e-06 -4.897623993e-05 4.660062718e-05 -6.374860689e-05 -3.298731911e-05 -4.897623993e-05 -0.0001588135374 0.0001930723761 -9.250584945e-05 4.704039465e-05 4.660062718e-05 0.0001930723761 0.0001193653648 9.707428444e-05 3.915357294e-06 -6.746570442e-05 -0.0001413832722 -0.0001721642698 3.915357294e-06 2.004968963e-06 -8.447705728e-07 -5.597176117e-06 -8.915805892e-06 -6.746570442e-05 -8.447705728e-07 -1.907645433e-06 4.560867776e-05 0.0001074531053 -0.0001413832722 -5.597176117e-06 4.560867776e-05 0.0001536952676 0.0002352890802 -0.0001721642698 -8.915805892e-06 0.0001074531053 0.0002352890802 0.0003028629215 1.692275206e-05 6.058054966e-06 1.07502136e-05 2.491618873e-06 -3.039480799e-05 6.058054966e-06 7.015292982e-07 6.513573688e-07 -3.201443534e-06 -1.073515067e-05 1.07502136e-05 6.513573688e-07 -4.058863058e-08 -6.943011376e-06 -1.871678699e-05 2.491618873e-06 -3.201443534e-06 -6.943011376e-06 -1.026782405e-05 -3.703319154e-06 -3.039480799e-05 -1.073515067e-05 -1.871678699e-05 -3.703319154e-06 5.440537326e-05 --9.695781792e-06 1.823028036e-06 5.836676387e-06 1.930928647e-05 1.097390798e-05 1.823028036e-06 1.302859489e-07 2.053131332e-07 -3.376258335e-06 -1.113826016e-06 5.836676387e-06 2.053131332e-07 6.323040155e-08 -1.098282111e-05 -4.33987402e-06 1.930928647e-05 -3.376258335e-06 -1.098282111e-05 -4.457207765e-05 -1.942014504e-05 1.097390798e-05 -1.113826016e-06 -4.33987402e-06 -1.942014504e-05 -1.277551872e-05 +-9.695781792e-06 1.823028036e-06 5.836676387e-06 1.930928647e-05 1.097390798e-05 1.823028036e-06 1.302859489e-07 2.053131332e-07 -3.376258335e-06 -1.113826016e-06 5.836676387e-06 2.053131332e-07 6.323040156e-08 -1.098282111e-05 -4.33987402e-06 1.930928647e-05 -3.376258335e-06 -1.098282111e-05 -4.457207765e-05 -1.942014504e-05 1.097390798e-05 -1.113826016e-06 -4.33987402e-06 -1.942014504e-05 -1.277551872e-05 1.298674855e-06 -5.795691215e-08 -3.565577692e-07 9.48307099e-06 -9.576065453e-06 -5.795691215e-08 2.277366931e-08 1.696541715e-08 1.200952856e-06 -6.252609441e-07 -3.565577692e-07 1.696541715e-08 -2.220594167e-07 -4.563099221e-06 3.6379264e-06 9.48307099e-06 1.200952856e-06 -4.563099221e-06 -3.034915968e-05 -6.755933986e-06 -9.576065453e-06 -6.252609441e-07 3.6379264e-06 -6.755933986e-06 2.865125933e-05 1.728187656e-05 2.255306707e-06 1.77721362e-06 -6.046254489e-06 -3.240752082e-05 2.255306707e-06 1.583643532e-07 1.158348497e-07 -1.21663849e-07 -4.642098603e-06 1.77721362e-06 1.158348497e-07 1.466780716e-09 -7.633996815e-08 -3.646992427e-06 -6.046254489e-06 -1.21663849e-07 -7.633996815e-08 1.252861914e-07 1.172610249e-05 -3.240752082e-05 -4.642098603e-06 -3.646992427e-06 1.172610249e-05 6.040782809e-05 6.685571885e-06 -1.361527783e-08 -1.796052347e-06 -5.347238628e-06 -1.215262841e-05 -1.361527783e-08 2.20952352e-08 -3.450047561e-08 -1.291160759e-07 4.325044965e-08 -1.796052347e-06 -3.450047561e-08 -1.134656173e-07 -1.434575074e-07 3.81920576e-06 -5.347238628e-06 -1.291160759e-07 -1.434575074e-07 -4.828600675e-07 1.081887165e-05 -1.215262841e-05 4.325044965e-08 3.81920576e-06 1.081887165e-05 2.167219615e-05 @@ -167,19 +167,19 @@ -1.251704872e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.43873454e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.435530386e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0005050028515 0.007765580644 0.009901602161 0.007765580644 0.1003511996 0.04518604975 0.009901602161 0.04518604975 -0.0274152918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000370287519 0.006825542572 -0.003841467665 0.006825542572 0.04018173452 -0.00967753624 -0.003841467665 -0.00967753624 -0.0004418213558 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.39978245e-05 -0.0007136829709 -0.0002415105473 -0.0007136829709 0.0007729623541 -0.00151729462 -0.0002415105473 -0.00151729462 -0.0006962631552 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.76697287e-05 -0.0004008635534 0.0002342265167 -0.0004008635534 0.002147481186 -0.001730163237 0.0002342265167 -0.001730163237 0.001223029189 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.036929422e-08 1.695689428e-05 3.607282008e-06 1.695689428e-05 8.335423722e-05 0.0001177097318 3.607282008e-06 0.0001177097318 -7.931659415e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.00213614e-06 -8.780443603e-05 7.494006268e-05 -8.780443603e-05 -0.0002444194625 5.311880863e-06 7.494006268e-05 5.311880863e-06 0.0001487959516 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.679611737e-06 1.3396282e-05 -1.173556469e-05 1.3396282e-05 -0.0001330206486 0.0001073311981 -1.173556469e-05 0.0001073311981 -8.951888889e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.935232996e-08 2.184277965e-06 6.548149056e-07 2.184277965e-06 3.368465577e-05 -7.43682172e-06 6.548149056e-07 -7.43682172e-06 5.070400677e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.173959855e-07 5.539706309e-06 3.34512702e-06 5.539706309e-06 3.439171037e-05 1.078062368e-05 3.34512702e-06 1.078062368e-05 1.636693785e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.631681739e-07 4.619746352e-07 -7.423980869e-07 4.619746352e-07 -3.755595693e-05 3.677533358e-05 -7.423980869e-07 3.677533358e-05 -2.808894846e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.051825945e-07 -2.179568148e-06 2.789935206e-06 -2.179568148e-06 -2.594862779e-05 1.784849141e-05 2.789935206e-06 1.784849141e-05 -5.635325314e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.459651464e-07 -1.794885703e-07 1.434369529e-06 -1.794885703e-07 -3.551997651e-06 8.450975901e-06 1.434369529e-06 8.450975901e-06 -3.154455471e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.407891008e-07 1.745721848e-07 6.789284746e-07 1.745721848e-07 1.028145261e-06 7.047233991e-06 6.789284746e-07 7.047233991e-06 -4.622738169e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0005050028515 0.007765580644 0.009901602161 0 0 0.007765580644 0.1003511996 0.04518604975 0 0 0.009901602161 0.04518604975 -0.0274152918 0 0 0 0 0 0 0 0 0 0 0 0 +0.000370287519 0.006825542572 -0.003841467665 0 0 0.006825542572 0.04018173452 -0.00967753624 0 0 -0.003841467665 -0.00967753624 -0.0004418213558 0 0 0 0 0 0 0 0 0 0 0 0 +2.39978245e-05 -0.0007136829709 -0.0002415105473 0 0 -0.0007136829709 0.0007729623541 -0.00151729462 0 0 -0.0002415105473 -0.00151729462 -0.0006962631552 0 0 0 0 0 0 0 0 0 0 0 0 +4.76697287e-05 -0.0004008635534 0.0002342265167 0 0 -0.0004008635534 0.002147481186 -0.001730163237 0 0 0.0002342265167 -0.001730163237 0.001223029189 0 0 0 0 0 0 0 0 0 0 0 0 +-3.036929422e-08 1.695689428e-05 3.607282008e-06 0 0 1.695689428e-05 8.335423722e-05 0.0001177097318 0 0 3.607282008e-06 0.0001177097318 -7.931659415e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.00213614e-06 -8.780443603e-05 7.494006268e-05 0 0 -8.780443603e-05 -0.0002444194625 5.311880863e-06 0 0 7.494006268e-05 5.311880863e-06 0.0001487959516 0 0 0 0 0 0 0 0 0 0 0 0 +-1.679611737e-06 1.3396282e-05 -1.173556469e-05 0 0 1.3396282e-05 -0.0001330206486 0.0001073311981 0 0 -1.173556469e-05 0.0001073311981 -8.951888889e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.935232996e-08 2.184277965e-06 6.548149056e-07 0 0 2.184277965e-06 3.368465577e-05 -7.43682172e-06 0 0 6.548149056e-07 -7.43682172e-06 5.070400677e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.173959855e-07 5.539706309e-06 3.34512702e-06 0 0 5.539706309e-06 3.439171037e-05 1.078062368e-05 0 0 3.34512702e-06 1.078062368e-05 1.636693785e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.631681739e-07 4.619746352e-07 -7.423980869e-07 0 0 4.619746352e-07 -3.755595693e-05 3.677533358e-05 0 0 -7.423980869e-07 3.677533358e-05 -2.808894846e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.051825945e-07 -2.179568148e-06 2.789935206e-06 0 0 -2.179568148e-06 -2.594862779e-05 1.784849141e-05 0 0 2.789935206e-06 1.784849141e-05 -5.635325314e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.459651464e-07 -1.794885703e-07 1.434369529e-06 0 0 -1.794885703e-07 -3.551997651e-06 8.450975901e-06 0 0 1.434369529e-06 8.450975901e-06 -3.154455471e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.407891008e-07 1.745721848e-07 6.789284746e-07 0 0 1.745721848e-07 1.028145261e-06 7.047233991e-06 0 0 6.789284746e-07 7.047233991e-06 -4.622738169e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.006483181038 -0.0005865506956 -0.0008960999305 -0.0355376634 -0.03518520118 -0.0005865506956 0.000806272639 -0.0001508911871 -0.008014479577 -0.005098476524 -0.0008960999305 -0.0001508911871 -0.0005821126317 -0.01101121036 -0.008005879019 -0.0355376634 -0.008014479577 -0.01101121036 0.08199884159 -0.0331900446 -0.03518520118 -0.005098476524 -0.008005879019 -0.0331900446 -0.104067741 0.01387408509 0.001729157913 0.003665250364 -0.01855968616 0.0197823616 0.001729157913 0.0008299441049 -0.0004928210232 -0.003569562047 0.002322032948 0.003665250364 -0.0004928210232 0.0001786637666 -0.005655333051 0.003739453845 -0.01855968616 -0.003569562047 -0.005655333051 0.02472363747 -0.027374351 0.0197823616 0.002322032948 0.003739453845 -0.027374351 0.02557397797 0.0006171996506 0.0001083132406 0.0007981725085 -0.0008000378804 0.001271309771 0.0001083132406 2.381648198e-05 -2.20685301e-05 -0.0001064347555 0.0002397606074 0.0007981725085 -2.20685301e-05 1.184229427e-06 0.0003270760166 0.001672442818 -0.0008000378804 -0.0001064347555 0.0003270760166 -0.0004193736856 -0.001780031713 0.001271309771 0.0002397606074 0.001672442818 -0.001780031713 0.002675812246 @@ -191,5 +191,5 @@ -5.650720946e-06 -3.132146313e-07 -9.505957325e-07 -5.489226479e-06 -1.71314724e-05 -3.132146313e-07 -6.242412989e-08 8.932895944e-09 -1.501512953e-06 -1.696173634e-06 -9.505957325e-07 8.932895944e-09 1.925263177e-07 -2.389323846e-06 -3.525850364e-06 -5.489226479e-06 -1.501512953e-06 -2.389323846e-06 2.287301434e-05 -1.394801274e-06 -1.71314724e-05 -1.696173634e-06 -3.525850364e-06 -1.394801274e-06 -4.212695685e-05 -1.624791506e-05 -1.988347054e-06 1.756241846e-06 7.023436898e-06 -2.990309887e-05 -1.988347054e-06 -1.20229852e-07 8.531314853e-08 3.682387639e-07 -3.975768255e-06 1.756241846e-06 8.531314853e-08 1.436347459e-08 -3.160137966e-07 3.467518799e-06 7.023436898e-06 3.682387639e-07 -3.160137966e-07 -1.372526497e-06 1.308330736e-05 -2.990309887e-05 -3.975768255e-06 3.467518799e-06 1.308330736e-05 -5.484114884e-05 -5.079496416e-06 1.411263854e-07 -1.747111981e-06 4.308259073e-06 -9.426769475e-06 1.411263854e-07 -1.872379354e-08 -2.267529683e-08 8.605758099e-08 3.005317648e-07 -1.747111981e-06 -2.267529683e-08 8.172781718e-08 -2.517780944e-07 -3.866722254e-06 4.308259073e-06 8.605758099e-08 -2.517780944e-07 1.382553222e-06 9.193305063e-06 -9.426769475e-06 3.005317648e-07 -3.866722254e-06 9.193305063e-06 -1.702136667e-05 --8.633491724e-07 -6.782896096e-08 -6.099157144e-08 -2.44610439e-06 -3.737582904e-06 -6.782896096e-08 -3.716972139e-10 -2.691549176e-08 -4.431854651e-07 -4.271113162e-07 -6.099157144e-08 -2.691549176e-08 1.116924056e-07 -7.287225731e-07 -6.616152128e-07 -2.44610439e-06 -4.431854651e-07 -7.287225731e-07 7.177923997e-06 -1.808297842e-06 -3.737582904e-06 -4.271113162e-07 -6.616152128e-07 -1.808297842e-06 -1.005594956e-05 +-8.633491724e-07 -6.782896096e-08 -6.099157144e-08 -2.44610439e-06 -3.737582904e-06 -6.782896096e-08 -3.716972139e-10 -2.691549176e-08 -4.431854652e-07 -4.271113162e-07 -6.099157144e-08 -2.691549176e-08 1.116924056e-07 -7.287225731e-07 -6.616152128e-07 -2.44610439e-06 -4.431854652e-07 -7.287225731e-07 7.177923997e-06 -1.808297842e-06 -3.737582904e-06 -4.271113162e-07 -6.616152128e-07 -1.808297842e-06 -1.005594956e-05 -1.751743373e-06 -1.086137231e-07 -1.266639988e-07 -1.303060668e-06 -4.944212279e-06 -1.086137231e-07 -3.075370268e-09 -1.685159486e-08 -2.957421438e-07 -4.195994719e-07 -1.266639988e-07 -1.685159486e-08 7.538825052e-08 -4.320925392e-07 -5.874357106e-07 -1.303060668e-06 -2.957421438e-07 -4.320925392e-07 5.743394449e-06 -1.106932137e-07 -4.944212279e-06 -4.195994719e-07 -5.874357106e-07 -1.106932137e-07 -1.159402869e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_3_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_3_ref.dat index cacebf65fa..7c21d0f244 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_3_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_3_ref.dat @@ -11,19 +11,19 @@ 1.666648737e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.222962835e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.25335398e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01373929401 -0.01674154868 0.02031195805 -0.01674154868 0.02467306483 -0.02931165241 0.02031195805 -0.02931165241 -0.1719460539 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.03506613061 -0.03913740285 -0.03778887141 -0.03913740285 0.0567421387 0.05071606726 -0.03778887141 0.05071606726 0.02087161869 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02343069752 -0.02499609964 -0.03776387701 -0.02499609964 0.03552875905 0.04883498734 -0.03776387701 0.04883498734 0.07554380672 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00639241823 -0.006662091154 -0.01266368818 -0.006662091154 0.009247496061 0.01584451788 -0.01266368818 0.01584451788 0.03107002834 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002581701067 -0.0003663160621 -0.00121505797 -0.0003663160621 0.0004906440985 0.001553863574 -0.00121505797 0.001553863574 0.003997841589 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.00076160582 0.0008486666496 0.001285685515 0.0008486666496 -0.001181135316 -0.001652032782 0.001285685515 -0.001652032782 -0.002526407843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0005605833981 0.0006727481114 0.001260565902 0.0006727481114 -0.0009459297329 -0.001671796786 0.001260565902 -0.001671796786 -0.003179461871 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.552584655e-05 7.314324423e-05 0.000150167724 7.314324423e-05 -9.543512302e-05 -0.0001930212948 0.000150167724 -0.0001930212948 -0.0003878496788 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.237037453e-05 -0.00011689372 -0.0001728309797 -0.00011689372 0.0001534389303 0.0002237113437 -0.0001728309797 0.0002237113437 0.0003173663489 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.117351994e-05 -5.99418641e-05 -0.0001190046549 -5.99418641e-05 7.630296819e-05 0.0001463661941 -0.0001190046549 0.0001463661941 0.0002914414354 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.064592966e-06 -9.033684629e-06 -1.297978375e-05 -9.033684629e-06 1.094129518e-05 1.653452353e-05 -1.297978375e-05 1.653452353e-05 2.137795432e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.957872218e-06 5.19781264e-06 6.098563003e-06 5.19781264e-06 -6.155872968e-06 -7.72853984e-06 6.098563003e-06 -7.72853984e-06 -6.81895674e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.269368155e-06 7.744709216e-06 1.65160242e-05 7.744709216e-06 -1.109394247e-05 -2.272387696e-05 1.65160242e-05 -2.272387696e-05 -4.761568371e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.01373929401 -0.01674154868 0.02031195805 0 0 -0.01674154868 0.02467306483 -0.02931165241 0 0 0.02031195805 -0.02931165241 -0.1719460539 0 0 0 0 0 0 0 0 0 0 0 0 +0.03506613061 -0.03913740285 -0.03778887141 0 0 -0.03913740285 0.0567421387 0.05071606726 0 0 -0.03778887141 0.05071606726 0.02087161869 0 0 0 0 0 0 0 0 0 0 0 0 +0.02343069752 -0.02499609964 -0.03776387701 0 0 -0.02499609964 0.03552875905 0.04883498734 0 0 -0.03776387701 0.04883498734 0.07554380672 0 0 0 0 0 0 0 0 0 0 0 0 +0.00639241823 -0.006662091154 -0.01266368818 0 0 -0.006662091154 0.009247496061 0.01584451788 0 0 -0.01266368818 0.01584451788 0.03107002834 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002581701067 -0.0003663160621 -0.00121505797 0 0 -0.0003663160621 0.0004906440985 0.001553863574 0 0 -0.00121505797 0.001553863574 0.003997841589 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00076160582 0.0008486666496 0.001285685515 0 0 0.0008486666496 -0.001181135316 -0.001652032782 0 0 0.001285685515 -0.001652032782 -0.002526407843 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005605833981 0.0006727481114 0.001260565902 0 0 0.0006727481114 -0.0009459297329 -0.001671796786 0 0 0.001260565902 -0.001671796786 -0.003179461871 0 0 0 0 0 0 0 0 0 0 0 0 +-5.552584655e-05 7.314324423e-05 0.000150167724 0 0 7.314324423e-05 -9.543512302e-05 -0.0001930212948 0 0 0.000150167724 -0.0001930212948 -0.0003878496788 0 0 0 0 0 0 0 0 0 0 0 0 +9.237037453e-05 -0.00011689372 -0.0001728309797 0 0 -0.00011689372 0.0001534389303 0.0002237113437 0 0 -0.0001728309797 0.0002237113437 0.0003173663489 0 0 0 0 0 0 0 0 0 0 0 0 +5.117351994e-05 -5.99418641e-05 -0.0001190046549 0 0 -5.99418641e-05 7.630296819e-05 0.0001463661941 0 0 -0.0001190046549 0.0001463661941 0.0002914414354 0 0 0 0 0 0 0 0 0 0 0 0 +6.064592966e-06 -9.033684629e-06 -1.297978375e-05 0 0 -9.033684629e-06 1.094129518e-05 1.653452353e-05 0 0 -1.297978375e-05 1.653452353e-05 2.137795432e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.957872218e-06 5.19781264e-06 6.098563003e-06 0 0 5.19781264e-06 -6.155872968e-06 -7.72853984e-06 0 0 6.098563003e-06 -7.72853984e-06 -6.81895674e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-6.269368155e-06 7.744709216e-06 1.65160242e-05 0 0 7.744709216e-06 -1.109394247e-05 -2.272387696e-05 0 0 1.65160242e-05 -2.272387696e-05 -4.761568371e-05 0 0 0 0 0 0 0 0 0 0 0 0 -0.009662524366 -0.003479023379 -0.01073660447 -0.01513458608 0.01415381044 -0.003479023379 0.001550246779 -0.001249929039 -0.006988445471 0.001886183673 -0.01073660447 -0.001249929039 -0.008412621853 -0.01787431617 0.01143952404 -0.01513458608 -0.006988445471 -0.01787431617 -0.02434551138 0.02477109831 0.01415381044 0.001886183673 0.01143952404 0.02477109831 -0.01555702939 -0.007059031951 0.000308303926 -0.004530675367 -0.01045271817 0.006326493478 0.000308303926 0.004338005252 0.003478085165 -0.002766635996 -0.004839443788 -0.004530675367 0.003478085165 0.0005636178534 -0.01007534386 -0.0007680985163 -0.01045271817 -0.002766635996 -0.01007534386 -0.01797537035 0.01392042581 0.006326493478 -0.004839443788 -0.0007680985163 0.01392042581 0.001046834231 -0.0007575823722 0.002454315506 0.002549504475 -0.0009264026862 -0.002770532241 0.002454315506 0.003185502529 0.003954468675 0.001303583307 -0.005714887677 0.002549504475 0.003954468675 0.00539906394 0.0008363955885 -0.007482613893 -0.0009264026862 0.001303583307 0.0008363955885 -0.003274704867 -0.001382719081 -0.002770532241 -0.005714887677 -0.007482613893 -0.001382719081 0.01036281026 @@ -50,19 +50,19 @@ 2.806513653e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.701147125e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.623206955e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.05482955297 -0.02877066862 0.004583450251 -0.02877066862 0.01478517394 -0.01543864046 0.004583450251 -0.01543864046 -0.0975039858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.03325342451 -0.02012175074 -0.03248084384 -0.02012175074 0.01122906224 0.01500483473 -0.03248084384 0.01500483473 0.02199471748 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003944446119 -0.0005909721517 -0.0001621874546 -0.0005909721517 0.0004928539812 0.001470100946 -0.0001621874546 0.001470100946 0.003762857968 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005158989274 -0.0008674250019 -0.0009501172595 -0.0008674250019 -3.697514616e-06 2.181316789e-05 -0.0009501172595 2.181316789e-05 4.924541875e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.508112241e-05 9.014841258e-05 2.474125496e-05 9.014841258e-05 -7.841637814e-05 -0.0001864290037 2.474125496e-05 -0.0001864290037 -0.0004245909555 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.289256782e-05 6.259264562e-05 0.0001218132404 6.259264562e-05 -5.062313821e-05 -8.041493414e-05 0.0001218132404 -8.041493414e-05 -0.0001471384594 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.330853185e-05 -1.946831974e-05 -3.197254247e-05 -1.946831974e-05 2.632338611e-06 4.450065947e-06 -3.197254247e-05 4.450065947e-06 7.42019279e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.613292689e-05 -1.141898946e-05 -2.596740157e-05 -1.141898946e-05 1.199719494e-05 1.280564316e-05 -2.596740157e-05 1.280564316e-05 8.51625396e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.990762958e-05 1.571351737e-05 4.21441401e-05 1.571351737e-05 -8.539767483e-06 -2.271202966e-05 4.21441401e-05 -2.271202966e-05 -5.594763675e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.53724573e-05 9.919981403e-06 2.17696359e-05 9.919981403e-06 -4.325140507e-06 -9.391470507e-06 2.17696359e-05 -9.391470507e-06 -2.003678446e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.70686609e-07 -1.138293886e-06 -1.304959399e-06 -1.138293886e-06 5.357127773e-07 -1.294366684e-06 -1.304959399e-06 -1.294366684e-06 -6.658914714e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.143163932e-06 -2.504860985e-06 1.002250045e-07 -2.504860985e-06 9.010045522e-07 -8.323101048e-07 1.002250045e-07 -8.323101048e-07 -6.294998285e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.697620588e-06 2.13660332e-06 6.319736204e-06 2.13660332e-06 -1.303843667e-06 -4.368655884e-06 6.319736204e-06 -4.368655884e-06 -1.175936602e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05482955297 -0.02877066862 0.004583450251 0 0 -0.02877066862 0.01478517394 -0.01543864046 0 0 0.004583450251 -0.01543864046 -0.0975039858 0 0 0 0 0 0 0 0 0 0 0 0 +0.03325342451 -0.02012175074 -0.03248084384 0 0 -0.02012175074 0.01122906224 0.01500483473 0 0 -0.03248084384 0.01500483473 0.02199471748 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003944446119 -0.0005909721517 -0.0001621874546 0 0 -0.0005909721517 0.0004928539812 0.001470100946 0 0 -0.0001621874546 0.001470100946 0.003762857968 0 0 0 0 0 0 0 0 0 0 0 0 +0.005158989274 -0.0008674250019 -0.0009501172595 0 0 -0.0008674250019 -3.697514616e-06 2.181316789e-05 0 0 -0.0009501172595 2.181316789e-05 4.924541875e-05 0 0 0 0 0 0 0 0 0 0 0 0 +8.508112241e-05 9.014841258e-05 2.474125496e-05 0 0 9.014841258e-05 -7.841637814e-05 -0.0001864290037 0 0 2.474125496e-05 -0.0001864290037 -0.0004245909555 0 0 0 0 0 0 0 0 0 0 0 0 +-1.289256782e-05 6.259264562e-05 0.0001218132404 0 0 6.259264562e-05 -5.062313821e-05 -8.041493414e-05 0 0 0.0001218132404 -8.041493414e-05 -0.0001471384594 0 0 0 0 0 0 0 0 0 0 0 0 +8.330853185e-05 -1.946831974e-05 -3.197254247e-05 0 0 -1.946831974e-05 2.632338611e-06 4.450065947e-06 0 0 -3.197254247e-05 4.450065947e-06 7.42019279e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.613292689e-05 -1.141898946e-05 -2.596740157e-05 0 0 -1.141898946e-05 1.199719494e-05 1.280564316e-05 0 0 -2.596740157e-05 1.280564316e-05 8.51625396e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.990762958e-05 1.571351737e-05 4.21441401e-05 0 0 1.571351737e-05 -8.539767483e-06 -2.271202966e-05 0 0 4.21441401e-05 -2.271202966e-05 -5.594763675e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.53724573e-05 9.919981403e-06 2.17696359e-05 0 0 9.919981403e-06 -4.325140507e-06 -9.391470507e-06 0 0 2.17696359e-05 -9.391470507e-06 -2.003678446e-05 0 0 0 0 0 0 0 0 0 0 0 0 +7.70686609e-07 -1.138293886e-06 -1.304959399e-06 0 0 -1.138293886e-06 5.357127773e-07 -1.294366684e-06 0 0 -1.304959399e-06 -1.294366684e-06 -6.658914714e-06 0 0 0 0 0 0 0 0 0 0 0 0 +5.143163932e-06 -2.504860985e-06 1.002250045e-07 0 0 -2.504860985e-06 9.010045522e-07 -8.323101048e-07 0 0 1.002250045e-07 -8.323101048e-07 -6.294998285e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.697620588e-06 2.13660332e-06 6.319736204e-06 0 0 2.13660332e-06 -1.303843667e-06 -4.368655884e-06 0 0 6.319736204e-06 -4.368655884e-06 -1.175936602e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.05015691454 -0.03368961866 -0.02145584837 0.01701121325 -0.0001831491362 -0.03368961866 0.0180788716 -0.01185704842 -0.0228765016 0.007608528511 -0.02145584837 -0.01185704842 -0.09488266651 -0.05208152161 0.02625357125 0.01701121325 -0.0228765016 -0.05208152161 -0.01253492911 0.01129391075 -0.0001831491362 0.007608528511 0.02625357125 0.01129391075 -0.006572477772 0.0303374611 -0.02405260684 -0.03426058135 0.0009109160349 0.005430134751 -0.02405260684 0.02069588671 0.02393447701 -0.002061053629 -0.004532224899 -0.03426058135 0.02393447701 0.02673483655 -0.004788449244 -0.006406805326 0.0009109160349 -0.002061053629 -0.004788449244 -0.001231514824 0.0002971358271 0.005430134751 -0.004532224899 -0.006406805326 0.0002971358271 0.001147994125 0.001022061837 -0.001995270312 -0.003787097558 -0.0002599146774 0.0002936392686 -0.001995270312 0.003247916796 0.005929411043 0.0008516516277 -0.001205400604 -0.003787097558 0.005929411043 0.01228094065 0.001889544384 -0.002025218004 -0.0002599146774 0.0008516516277 0.001889544384 -3.255998759e-06 4.769201004e-05 0.0002936392686 -0.001205400604 -0.002025218004 4.769201004e-05 -0.0001089193297 @@ -89,19 +89,19 @@ -1.305555622e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.429789133e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.67036151e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007791547741 -0.009446117126 0.01048828174 -0.009446117126 0.06822492098 -0.003543714501 0.01048828174 -0.003543714501 -0.07604475042 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004810750334 -0.006569047712 -0.003295223593 -0.006569047712 0.01544651299 0.01737382765 -0.003295223593 0.01737382765 0.01440569915 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.516567759e-05 0.0007222608619 -0.0002223625316 0.0007222608619 0.00336470984 -0.0005602210974 -0.0002223625316 -0.0005602210974 0.0002522723119 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.315369503e-05 0.000111376067 4.501719343e-05 0.000111376067 0.002411311233 0.001009961739 4.501719343e-05 0.001009961739 0.0004299796526 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.199118157e-06 1.207887151e-05 -3.298254747e-06 1.207887151e-05 0.0002883193543 -2.962499801e-05 -3.298254747e-06 -2.962499801e-05 -0.000100227656 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.178001423e-07 7.69763395e-05 6.190324582e-05 7.69763395e-05 7.05658695e-05 -8.280403806e-05 6.190324582e-05 -8.280403806e-05 -0.0001965809982 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.510522997e-06 3.250281482e-06 1.223417325e-06 3.250281482e-06 -0.0001412942446 -9.75696494e-05 1.223417325e-06 -9.75696494e-05 -6.512670284e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.540734792e-07 6.928496077e-07 2.702464311e-07 6.928496077e-07 3.454948692e-05 1.015926721e-05 2.702464311e-07 1.015926721e-05 8.071821657e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.365862054e-08 -7.540091256e-06 1.91145146e-06 -7.540091256e-06 1.36287427e-05 1.552511792e-05 1.91145146e-06 1.552511792e-05 -9.553056556e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.037325335e-07 1.434912201e-06 2.191735068e-06 1.434912201e-06 -2.137708049e-05 -2.775451234e-05 2.191735068e-06 -2.775451234e-05 -3.086010634e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.209416018e-07 1.743447024e-06 1.965859635e-06 1.743447024e-06 -2.389036559e-05 -2.305200073e-05 1.965859635e-06 -2.305200073e-05 -2.283165743e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.541096866e-07 6.87025538e-07 1.760572112e-06 6.87025538e-07 -3.726354865e-06 -6.684183592e-06 1.760572112e-06 -6.684183592e-06 -1.17993403e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.450260903e-07 -2.000438766e-07 9.085151037e-07 -2.000438766e-07 1.077064053e-06 -3.833579001e-06 9.085151037e-07 -3.833579001e-06 -8.822602383e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007791547741 -0.009446117126 0.01048828174 0 0 -0.009446117126 0.06822492098 -0.003543714501 0 0 0.01048828174 -0.003543714501 -0.07604475042 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004810750334 -0.006569047712 -0.003295223593 0 0 -0.006569047712 0.01544651299 0.01737382765 0 0 -0.003295223593 0.01737382765 0.01440569915 0 0 0 0 0 0 0 0 0 0 0 0 +1.516567759e-05 0.0007222608619 -0.0002223625316 0 0 0.0007222608619 0.00336470984 -0.0005602210974 0 0 -0.0002223625316 -0.0005602210974 0.0002522723119 0 0 0 0 0 0 0 0 0 0 0 0 +3.315369503e-05 0.000111376067 4.501719343e-05 0 0 0.000111376067 0.002411311233 0.001009961739 0 0 4.501719343e-05 0.001009961739 0.0004299796526 0 0 0 0 0 0 0 0 0 0 0 0 +1.199118157e-06 1.207887151e-05 -3.298254747e-06 0 0 1.207887151e-05 0.0002883193543 -2.962499801e-05 0 0 -3.298254747e-06 -2.962499801e-05 -0.000100227656 0 0 0 0 0 0 0 0 0 0 0 0 +-3.178001423e-07 7.69763395e-05 6.190324582e-05 0 0 7.69763395e-05 7.05658695e-05 -8.280403806e-05 0 0 6.190324582e-05 -8.280403806e-05 -0.0001965809982 0 0 0 0 0 0 0 0 0 0 0 0 +-1.510522997e-06 3.250281482e-06 1.223417325e-06 0 0 3.250281482e-06 -0.0001412942446 -9.75696494e-05 0 0 1.223417325e-06 -9.75696494e-05 -6.512670284e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.540734792e-07 6.928496077e-07 2.702464311e-07 0 0 6.928496077e-07 3.454948692e-05 1.015926721e-05 0 0 2.702464311e-07 1.015926721e-05 8.071821657e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.365862054e-08 -7.540091256e-06 1.91145146e-06 0 0 -7.540091256e-06 1.36287427e-05 1.552511792e-05 0 0 1.91145146e-06 1.552511792e-05 -9.553056556e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.037325335e-07 1.434912201e-06 2.191735068e-06 0 0 1.434912201e-06 -2.137708049e-05 -2.775451234e-05 0 0 2.191735068e-06 -2.775451234e-05 -3.086010634e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.209416018e-07 1.743447024e-06 1.965859635e-06 0 0 1.743447024e-06 -2.389036559e-05 -2.305200073e-05 0 0 1.965859635e-06 -2.305200073e-05 -2.283165743e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.541096866e-07 6.87025538e-07 1.760572112e-06 0 0 6.87025538e-07 -3.726354865e-06 -6.684183592e-06 0 0 1.760572112e-06 -6.684183592e-06 -1.17993403e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.450260903e-07 -2.000438766e-07 9.085151037e-07 0 0 -2.000438766e-07 1.077064053e-06 -3.833579001e-06 0 0 9.085151037e-07 -3.833579001e-06 -8.822602383e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.005567869518 -0.0003126363762 0.0003394971514 -0.03585228686 0.03555293841 -0.0003126363762 0.001468300715 -0.0004939609573 -0.009399422713 0.007294659024 0.0003394971514 -0.0004939609573 5.02654832e-05 0.01008890692 -0.007341101769 -0.03585228686 -0.009399422713 0.01008890692 0.07541031598 0.03860028774 0.03555293841 0.007294659024 -0.007341101769 0.03860028774 -0.1033648214 0.01236353105 0.003353175022 -0.002765720424 -0.01598002787 -0.01854456478 0.003353175022 0.001249515558 0.0001812391779 -0.004592096434 -0.003158542717 -0.002765720424 0.0001812391779 -9.829697349e-06 0.004394031144 0.00314016545 -0.01598002787 -0.004592096434 0.004394031144 0.01972846234 0.02480554064 -0.01854456478 -0.003158542717 0.00314016545 0.02480554064 0.02696616073 0.0002641839769 0.0004376778824 -0.0002728343123 -0.0001195289237 -0.000835631501 0.0004376778824 9.345939283e-06 1.422134895e-05 0.0003548221847 -0.001181053178 -0.0002728343123 1.422134895e-05 6.720148385e-06 -0.0001720584954 0.0007021144968 -0.0001195289237 0.0003548221847 -0.0001720584954 0.0005590228836 -0.0004282039397 -0.000835631501 -0.001181053178 0.0007021144968 -0.0004282039397 0.002891239426 @@ -128,19 +128,19 @@ 6.202309933e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.066540798e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.218356263e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.16759028 -0.01840459237 0.03911974898 -0.01840459237 0.2130928102 -0.05893185008 0.03911974898 -0.05893185008 0.02733632035 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1405383742 -0.001582988945 0.02698024922 -0.001582988945 0.09883708345 -0.04673722355 0.02698024922 -0.04673722355 0.06687248185 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01298355441 -0.00460260962 0.009860292413 -0.00460260962 0.01588875244 -0.00993568057 0.009860292413 -0.00993568057 -0.05272818618 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01117248418 -0.01644379346 -0.02403850785 -0.01644379346 0.02047811371 0.03172206459 -0.02403850785 0.03172206459 0.04517674985 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001093480977 -3.030434271e-05 5.478406082e-05 -3.030434271e-05 6.344842707e-05 -0.0002069252905 5.478406082e-05 -0.0002069252905 -0.0008730797175 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001347581798 0.0003435933193 0.0005799548603 0.0003435933193 -0.0002367053737 -0.0007386224035 0.0005799548603 -0.0007386224035 -0.001650191457 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003056026359 -0.0006304114076 -0.0008349819167 -0.0006304114076 0.0004799530321 0.001043768386 -0.0008349819167 0.001043768386 0.000904013611 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.396172379e-05 8.95188047e-05 0.0001655065001 8.95188047e-05 -0.0001062796043 -0.0002452646955 0.0001655065001 -0.0002452646955 -0.0003430326859 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.181210376e-06 3.402109362e-05 4.703850699e-05 3.402109362e-05 7.861261458e-05 -3.849430585e-05 4.703850699e-05 -3.849430585e-05 6.901195981e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.610842563e-05 -6.852698508e-05 -8.034860697e-05 -6.852698508e-05 2.54554347e-05 0.0001146977902 -8.034860697e-05 0.0001146977902 -4.950590777e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.799036282e-05 3.317133712e-05 5.3537554e-05 3.317133712e-05 -8.833404605e-05 -0.0001121296901 5.3537554e-05 -0.0001121296901 -0.0002304586964 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.73344115e-05 -1.324076009e-05 -2.289405623e-05 -1.324076009e-05 1.359854723e-05 2.282811158e-05 -2.289405623e-05 2.282811158e-05 5.334141592e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.778462293e-06 -6.432058537e-06 -3.853627341e-06 -6.432058537e-06 -7.001177924e-07 4.246653055e-06 -3.853627341e-06 4.246653055e-06 -2.099889008e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.16759028 -0.01840459237 0.03911974898 0 0 -0.01840459237 0.2130928102 -0.05893185008 0 0 0.03911974898 -0.05893185008 0.02733632035 0 0 0 0 0 0 0 0 0 0 0 0 +0.1405383742 -0.001582988945 0.02698024922 0 0 -0.001582988945 0.09883708345 -0.04673722355 0 0 0.02698024922 -0.04673722355 0.06687248185 0 0 0 0 0 0 0 0 0 0 0 0 +0.01298355441 -0.00460260962 0.009860292413 0 0 -0.00460260962 0.01588875244 -0.00993568057 0 0 0.009860292413 -0.00993568057 -0.05272818618 0 0 0 0 0 0 0 0 0 0 0 0 +0.01117248418 -0.01644379346 -0.02403850785 0 0 -0.01644379346 0.02047811371 0.03172206459 0 0 -0.02403850785 0.03172206459 0.04517674985 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001093480977 -3.030434271e-05 5.478406082e-05 0 0 -3.030434271e-05 6.344842707e-05 -0.0002069252905 0 0 5.478406082e-05 -0.0002069252905 -0.0008730797175 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001347581798 0.0003435933193 0.0005799548603 0 0 0.0003435933193 -0.0002367053737 -0.0007386224035 0 0 0.0005799548603 -0.0007386224035 -0.001650191457 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003056026359 -0.0006304114076 -0.0008349819167 0 0 -0.0006304114076 0.0004799530321 0.001043768386 0 0 -0.0008349819167 0.001043768386 0.000904013611 0 0 0 0 0 0 0 0 0 0 0 0 +-2.396172379e-05 8.95188047e-05 0.0001655065001 0 0 8.95188047e-05 -0.0001062796043 -0.0002452646955 0 0 0.0001655065001 -0.0002452646955 -0.0003430326859 0 0 0 0 0 0 0 0 0 0 0 0 +5.181210376e-06 3.402109362e-05 4.703850699e-05 0 0 3.402109362e-05 7.861261458e-05 -3.849430585e-05 0 0 4.703850699e-05 -3.849430585e-05 6.901195981e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.610842563e-05 -6.852698508e-05 -8.034860697e-05 0 0 -6.852698508e-05 2.54554347e-05 0.0001146977902 0 0 -8.034860697e-05 0.0001146977902 -4.950590777e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.799036282e-05 3.317133712e-05 5.3537554e-05 0 0 3.317133712e-05 -8.833404605e-05 -0.0001121296901 0 0 5.3537554e-05 -0.0001121296901 -0.0002304586964 0 0 0 0 0 0 0 0 0 0 0 0 +1.73344115e-05 -1.324076009e-05 -2.289405623e-05 0 0 -1.324076009e-05 1.359854723e-05 2.282811158e-05 0 0 -2.289405623e-05 2.282811158e-05 5.334141592e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-9.778462293e-06 -6.432058537e-06 -3.853627341e-06 0 0 -6.432058537e-06 -7.001177924e-07 4.246653055e-06 0 0 -3.853627341e-06 4.246653055e-06 -2.099889008e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.02298305435 -0.04519982573 0.003324874797 -0.1252002547 0.04344199249 -0.04519982573 0.04253663348 -0.02089229498 -0.04109773612 0.01206437372 0.003324874797 -0.02089229498 -0.1891347467 -0.03681626797 0.01289579452 -0.1252002547 -0.04109773612 -0.03681626797 -0.05581982077 0.02150192178 0.04344199249 0.01206437372 0.01289579452 0.02150192178 -0.2149988023 0.1214450674 -0.05579383904 -0.05749497093 0.0386644895 -0.04224317938 -0.05579383904 0.05548857358 0.04646879952 -0.03997511146 -0.01334866946 -0.05749497093 0.04646879952 0.03932838028 0.02554950489 -0.002222755941 0.0386644895 -0.03997511146 0.02554950489 0.1885691841 0.02023767425 -0.04224317938 -0.01334866946 -0.002222755941 0.02023767425 0.03828453746 0.008333536112 -0.01856456777 -0.03057420585 -0.007355426525 0.00934194378 -0.01856456777 0.01008341239 0.00394304654 -0.02233592647 0.009110731776 -0.03057420585 0.00394304654 0.00632645989 -0.01432445283 0.02855087052 -0.007355426525 -0.02233592647 -0.01432445283 0.01143639696 0.03227051495 0.00934194378 0.009110731776 0.02855087052 0.03227051495 -0.01852672505 @@ -151,7 +151,7 @@ 0.0002259994464 7.769346986e-06 1.426181292e-05 0.0001299418546 -0.0001972645326 7.769346986e-06 0.0001093555092 0.0001635813949 2.677347568e-05 -0.0001662893696 1.426181292e-05 0.0001635813949 0.0002558010232 0.0001110673745 -0.0002188967488 0.0001299418546 2.677347568e-05 0.0001110673745 0.0003457042483 -6.069516195e-05 -0.0001972645326 -0.0001662893696 -0.0002188967488 -6.069516195e-05 0.0004189826371 6.431018771e-05 0.000105031271 0.0002031003516 6.607394266e-05 -0.0002070230914 0.000105031271 4.816728353e-05 7.159964756e-05 9.490941293e-05 -0.0001450377261 0.0002031003516 7.159964756e-05 0.0001012867751 0.0001638189632 -0.0002745669458 6.607394266e-05 9.490941293e-05 0.0001638189632 5.778485948e-05 -0.0002537700092 -0.0002070230914 -0.0001450377261 -0.0002745669458 -0.0002537700092 0.0003225182629 -0.000145765803 -3.16814264e-05 -6.440846789e-05 -0.0001481794558 0.0001678197287 -3.16814264e-05 -3.20984465e-05 -6.358376145e-05 -4.534546947e-05 7.621074047e-05 -6.440846789e-05 -6.358376145e-05 -0.0001338307735 -0.000127120125 0.0001336450189 -0.0001481794558 -4.534546947e-05 -0.000127120125 -0.0002769644025 0.0001220121148 0.0001678197287 7.621074047e-05 0.0001336450189 0.0001220121148 -0.0002890660188 -2.860906828e-06 -9.00412781e-06 -1.086263974e-05 -5.692081616e-06 9.191966117e-06 -9.00412781e-06 6.512259777e-06 7.046625018e-06 -1.946867805e-06 1.181431622e-06 -1.086263974e-05 7.046625018e-06 9.571304371e-06 6.957548781e-06 2.716893713e-06 -5.692081616e-06 -1.946867805e-06 6.957548781e-06 7.34716372e-08 -9.239703357e-06 9.191966117e-06 1.181431622e-06 2.716893713e-06 -9.239703357e-06 -2.635612284e-05 +2.860906828e-06 -9.00412781e-06 -1.086263974e-05 -5.692081616e-06 9.191966117e-06 -9.00412781e-06 6.512259777e-06 7.046625018e-06 -1.946867805e-06 1.181431622e-06 -1.086263974e-05 7.046625018e-06 9.571304371e-06 6.957548781e-06 2.716893713e-06 -5.692081616e-06 -1.946867805e-06 6.957548781e-06 7.347163717e-08 -9.239703357e-06 9.191966117e-06 1.181431622e-06 2.716893713e-06 -9.239703357e-06 -2.635612284e-05 1.201241996e-05 1.262614643e-05 2.913852568e-05 1.193212384e-05 -2.38827365e-05 1.262614643e-05 1.072982942e-05 1.440353659e-05 1.445122679e-05 -2.400800918e-05 2.913852568e-05 1.440353659e-05 1.578088318e-05 2.356452663e-05 -4.699092437e-05 1.193212384e-05 1.445122679e-05 2.356452663e-05 1.318936865e-05 -4.167522446e-05 -2.38827365e-05 -2.400800918e-05 -4.699092437e-05 -4.167522446e-05 3.773760663e-05 -2.431701378e-05 -2.124576542e-06 -1.122999026e-06 -2.62218115e-05 2.46046815e-05 -2.124576542e-06 -6.734250165e-06 -1.508463098e-05 -6.26335722e-06 1.282169758e-05 -1.122999026e-06 -1.508463098e-05 -3.479445663e-05 -1.874161851e-05 1.968908932e-05 -2.62218115e-05 -6.26335722e-06 -1.874161851e-05 -4.191175071e-05 1.485605459e-05 2.46046815e-05 1.282169758e-05 1.968908932e-05 1.485605459e-05 -5.298114592e-05 0.04174727629 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -167,19 +167,19 @@ -1.862761841e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.111990947e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.696523188e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001424944012 0.000113525248 -0.004712897528 0.000113525248 0.001707289978 0.006725062346 -0.004712897528 0.006725062346 0.05310786449 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00109687986 0.0004665087893 -0.01787685077 0.0004665087893 0.0007016532862 0.02140958093 -0.01787685077 0.02140958093 0.08461132099 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.179079427e-05 -7.43706181e-05 0.0002926740745 -7.43706181e-05 5.773464366e-05 -0.0004020523036 0.0002926740745 -0.0004020523036 0.002205003703 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.674524667e-05 -6.955264203e-05 0.001002989632 -6.955264203e-05 0.0001063304562 -0.001372074513 0.001002989632 -0.001372074513 0.008029469161 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.522033792e-07 -6.592513646e-07 -1.701868419e-05 -6.592513646e-07 3.744508711e-07 4.384397976e-06 -1.701868419e-05 4.384397976e-06 -0.0003527803208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.660877919e-07 -8.318843431e-06 0.0002663598746 -8.318843431e-06 -4.09608604e-06 -0.0003947779716 0.0002663598746 -0.0003947779716 -6.868390831e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.778572752e-06 1.506890791e-06 -2.749132583e-05 1.506890791e-06 -4.235390206e-06 3.429595908e-05 -2.749132583e-05 3.429595908e-05 -0.0002944552239 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.282887068e-08 -1.546055117e-07 -6.359805596e-06 -1.546055117e-07 1.348680338e-07 9.590012999e-06 -6.359805596e-06 9.590012999e-06 8.33265161e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.818947925e-07 -4.995735796e-07 -2.534071112e-06 -4.995735796e-07 -1.35800246e-07 2.571541712e-06 -2.534071112e-06 2.571541712e-06 1.130268971e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.910836274e-07 1.308877269e-07 -3.67524501e-07 1.308877269e-07 -1.149972945e-06 -4.322706154e-06 -3.67524501e-07 -4.322706154e-06 -0.0001445168055 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.962850725e-07 -1.400415402e-07 6.561064934e-06 -1.400415402e-07 -5.226855704e-07 -1.08516853e-05 6.561064934e-06 -1.08516853e-05 -5.167676179e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.83199081e-07 -1.364914073e-07 6.076818863e-07 -1.364914073e-07 -3.301006035e-07 -1.257037236e-06 6.076818863e-07 -1.257037236e-06 -7.73204305e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.893790774e-07 -5.901948162e-08 4.813047403e-07 -5.901948162e-08 -4.041392763e-07 -1.190462635e-06 4.813047403e-07 -1.190462635e-06 -1.07789331e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.001424944012 0.000113525248 -0.004712897528 0 0 0.000113525248 0.001707289978 0.006725062346 0 0 -0.004712897528 0.006725062346 0.05310786449 0 0 0 0 0 0 0 0 0 0 0 0 +0.00109687986 0.0004665087893 -0.01787685077 0 0 0.0004665087893 0.0007016532862 0.02140958093 0 0 -0.01787685077 0.02140958093 0.08461132099 0 0 0 0 0 0 0 0 0 0 0 0 +2.179079427e-05 -7.43706181e-05 0.0002926740745 0 0 -7.43706181e-05 5.773464366e-05 -0.0004020523036 0 0 0.0002926740745 -0.0004020523036 0.002205003703 0 0 0 0 0 0 0 0 0 0 0 0 +9.674524667e-05 -6.955264203e-05 0.001002989632 0 0 -6.955264203e-05 0.0001063304562 -0.001372074513 0 0 0.001002989632 -0.001372074513 0.008029469161 0 0 0 0 0 0 0 0 0 0 0 0 +1.522033792e-07 -6.592513646e-07 -1.701868419e-05 0 0 -6.592513646e-07 3.744508711e-07 4.384397976e-06 0 0 -1.701868419e-05 4.384397976e-06 -0.0003527803208 0 0 0 0 0 0 0 0 0 0 0 0 +9.660877919e-07 -8.318843431e-06 0.0002663598746 0 0 -8.318843431e-06 -4.09608604e-06 -0.0003947779716 0 0 0.0002663598746 -0.0003947779716 -6.868390831e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.778572752e-06 1.506890791e-06 -2.749132583e-05 0 0 1.506890791e-06 -4.235390206e-06 3.429595908e-05 0 0 -2.749132583e-05 3.429595908e-05 -0.0002944552239 0 0 0 0 0 0 0 0 0 0 0 0 +-1.282887068e-08 -1.546055117e-07 -6.359805596e-06 0 0 -1.546055117e-07 1.348680338e-07 9.590012999e-06 0 0 -6.359805596e-06 9.590012999e-06 8.33265161e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.818947925e-07 -4.995735796e-07 -2.534071112e-06 0 0 -4.995735796e-07 -1.35800246e-07 2.571541712e-06 0 0 -2.534071112e-06 2.571541712e-06 1.130268971e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.910836274e-07 1.308877269e-07 -3.67524501e-07 0 0 1.308877269e-07 -1.149972945e-06 -4.322706154e-06 0 0 -3.67524501e-07 -4.322706154e-06 -0.0001445168055 0 0 0 0 0 0 0 0 0 0 0 0 +-2.962850725e-07 -1.400415402e-07 6.561064934e-06 0 0 -1.400415402e-07 -5.226855704e-07 -1.08516853e-05 0 0 6.561064934e-06 -1.08516853e-05 -5.167676179e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.83199081e-07 -1.364914073e-07 6.076818863e-07 0 0 -1.364914073e-07 -3.301006035e-07 -1.257037236e-06 0 0 6.076818863e-07 -1.257037236e-06 -7.73204305e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.893790774e-07 -5.901948162e-08 4.813047403e-07 0 0 -5.901948162e-08 -4.041392763e-07 -1.190462635e-06 0 0 4.813047403e-07 -1.190462635e-06 -1.07789331e-05 0 0 0 0 0 0 0 0 0 0 0 0 -0.01548252669 0.002713847107 -0.0001520145547 -0.02875702906 0.001217457774 0.002713847107 -9.958378755e-06 -0.0002525311589 0.004690061217 8.776653086e-05 -0.0001520145547 -0.0002525311589 0.001215673442 -0.001155771299 4.520934997e-05 -0.02875702906 0.004690061217 -0.001155771299 -0.05326171408 0.001235536645 0.001217457774 8.776653086e-05 4.520934997e-05 0.001235536645 0.001290014764 0.03010307254 -0.008191500173 0.002159131422 0.0556016557 -0.0005973893523 -0.008191500173 -8.475582405e-06 -0.000496078993 -0.01420121162 0.0001720837983 0.002159131422 -0.000496078993 0.0024454662 0.0020498177 0.0003810479739 0.0556016557 -0.01420121162 0.0020498177 0.1022220118 -0.002405750768 -0.0005973893523 0.0001720837983 0.0003810479739 -0.002405750768 0.001877763223 0.001833081943 -0.001899967006 0.001028455986 0.003988835927 -0.001042801479 -0.001899967006 2.050437475e-07 -7.650917794e-06 -0.003291929402 -1.835454759e-05 0.001028455986 -7.650917794e-06 0.0001267389847 0.001627551615 0.0002129185463 0.003988835927 -0.003291929402 0.001627551615 0.008315211501 -0.001887665316 -0.001042801479 -1.835454759e-05 0.0002129185463 -0.001887665316 -2.206095376e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_4_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_4_ref.dat index a443c85a3f..acf3416a0e 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_4_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmy_4_ref.dat @@ -11,19 +11,19 @@ -1.06213943e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.405087493e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.998015211e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01298584602 0.015600054 0.0216649415 0.015600054 -0.02299408328 -0.031227342 0.0216649415 -0.031227342 0.1738098985 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03490329222 0.03847502937 -0.03443623069 0.03847502937 -0.05564941354 0.04592647364 -0.03443623069 0.04592647364 -0.008437609489 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0247053872 0.02613485928 -0.03835107636 0.02613485928 -0.03702083342 0.04932164908 -0.03835107636 0.04932164908 -0.0735738848 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.007423818205 0.007694075945 -0.01419580515 0.007694075945 -0.01062396417 0.01768838994 -0.01419580515 0.01768838994 -0.0337170818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000689398263 0.0008224803466 -0.002048261223 0.0008224803466 -0.001114559562 0.002588811348 -0.002048261223 0.002588811348 -0.005922760801 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006749999171 -0.0007412692534 0.001053175929 -0.0007412692534 0.001032843306 -0.001347639709 0.001053175929 -0.001347639709 0.00189417352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006036443188 -0.0007161935959 0.001308506234 -0.0007161935959 0.001004540542 -0.001724996045 0.001308506234 -0.001724996045 0.003215314931 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001148406192 -0.0001438336484 0.0002756422863 -0.0001438336484 0.0001895315098 -0.000353101188 0.0002756422863 -0.000353101188 0.0006749941619 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.880024016e-05 8.679848727e-05 -0.0001139441517 8.679848727e-05 -0.0001129575715 0.0001464053634 -0.0001139441517 0.0001464053634 -0.0001679563182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.718072915e-05 6.697370587e-05 -0.0001283728209 6.697370587e-05 -8.481862657e-05 0.0001575922937 -0.0001283728209 0.0001575922937 -0.0003034874216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.530133238e-05 2.043748074e-05 -3.320347416e-05 2.043748074e-05 -2.577206208e-05 4.234273505e-05 -3.320347416e-05 4.234273505e-05 -6.746730121e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.133675374e-06 -2.945404776e-06 1.809094942e-06 -2.945404776e-06 3.350518229e-06 -2.43032751e-06 1.809094942e-06 -2.43032751e-06 -3.053289392e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.257877362e-06 -7.715199582e-06 1.5969073e-05 -7.715199582e-06 1.097515425e-05 -2.189023516e-05 1.5969073e-05 -2.189023516e-05 4.509687548e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01298584602 0.015600054 0.0216649415 0 0 0.015600054 -0.02299408328 -0.031227342 0 0 0.0216649415 -0.031227342 0.1738098985 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03490329222 0.03847502937 -0.03443623069 0 0 0.03847502937 -0.05564941354 0.04592647364 0 0 -0.03443623069 0.04592647364 -0.008437609489 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0247053872 0.02613485928 -0.03835107636 0 0 0.02613485928 -0.03702083342 0.04932164908 0 0 -0.03835107636 0.04932164908 -0.0735738848 0 0 0 0 0 0 0 0 0 0 0 0 +-0.007423818205 0.007694075945 -0.01419580515 0 0 0.007694075945 -0.01062396417 0.01768838994 0 0 -0.01419580515 0.01768838994 -0.0337170818 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000689398263 0.0008224803466 -0.002048261223 0 0 0.0008224803466 -0.001114559562 0.002588811348 0 0 -0.002048261223 0.002588811348 -0.005922760801 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006749999171 -0.0007412692534 0.001053175929 0 0 -0.0007412692534 0.001032843306 -0.001347639709 0 0 0.001053175929 -0.001347639709 0.00189417352 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006036443188 -0.0007161935959 0.001308506234 0 0 -0.0007161935959 0.001004540542 -0.001724996045 0 0 0.001308506234 -0.001724996045 0.003215314931 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001148406192 -0.0001438336484 0.0002756422863 0 0 -0.0001438336484 0.0001895315098 -0.000353101188 0 0 0.0002756422863 -0.000353101188 0.0006749941619 0 0 0 0 0 0 0 0 0 0 0 0 +-6.880024016e-05 8.679848727e-05 -0.0001139441517 0 0 8.679848727e-05 -0.0001129575715 0.0001464053634 0 0 -0.0001139441517 0.0001464053634 -0.0001679563182 0 0 0 0 0 0 0 0 0 0 0 0 +-5.718072915e-05 6.697370587e-05 -0.0001283728209 0 0 6.697370587e-05 -8.481862657e-05 0.0001575922937 0 0 -0.0001283728209 0.0001575922937 -0.0003034874216 0 0 0 0 0 0 0 0 0 0 0 0 +-1.530133238e-05 2.043748074e-05 -3.320347416e-05 0 0 2.043748074e-05 -2.577206208e-05 4.234273505e-05 0 0 -3.320347416e-05 4.234273505e-05 -6.746730121e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.133675374e-06 -2.945404776e-06 1.809094942e-06 0 0 -2.945404776e-06 3.350518229e-06 -2.43032751e-06 0 0 1.809094942e-06 -2.43032751e-06 -3.053289392e-06 0 0 0 0 0 0 0 0 0 0 0 0 +6.257877362e-06 -7.715199582e-06 1.5969073e-05 0 0 -7.715199582e-06 1.097515425e-05 -2.189023516e-05 0 0 1.5969073e-05 -2.189023516e-05 4.509687548e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.009043825895 0.00337488386 -0.0103899472 0.014192223 0.01355037256 0.00337488386 -0.001397501309 -0.001329562404 0.006693337524 0.001988131525 -0.0103899472 -0.001329562404 0.008306693178 -0.01721063347 -0.0112072216 0.014192223 0.006693337524 -0.01721063347 0.02298848925 0.023740912 0.01355037256 0.001988131525 -0.0112072216 0.023740912 0.01511672732 0.007518301168 5.484439928e-05 -0.005311143876 0.01101716528 0.0072616323 5.484439928e-05 -0.004146389152 0.003054010375 0.003190632733 -0.004204626481 -0.005311143876 0.003054010375 0.0003303328726 -0.01100022244 -0.0004451950112 0.01101716528 0.003190632733 -0.01100022244 0.01874119259 0.01512213682 0.0072616323 -0.004204626481 -0.0004451950112 0.01512213682 0.0005998939278 0.00124465718 -0.002349484215 0.002110845713 0.00154239378 -0.002161774606 -0.002349484215 -0.00329556479 0.00397570925 -0.001104938703 -0.005687574131 0.002110845713 0.00397570925 -0.005161696326 0.0002169756095 0.007083995254 0.00154239378 -0.001104938703 0.0002169756095 0.004142406835 -0.0005017007126 -0.002161774606 -0.005687574131 0.007083995254 -0.0005017007126 -0.00971659384 @@ -50,19 +50,19 @@ -3.167633015e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.007603488e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.770019075e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.05272367775 0.02734656374 0.006235498896 0.02734656374 -0.01388206601 -0.01645363989 0.006235498896 -0.01645363989 0.09863800006 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03518261767 0.02067102784 -0.03263744611 0.02067102784 -0.01125497658 0.01445164866 -0.03263744611 0.01445164866 -0.02014449537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0008245419106 0.0006892267035 -0.0002925166944 0.0006892267035 -0.0006078010872 0.001658620931 -0.0002925166944 0.001658620931 -0.004066400037 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.005350696064 0.0008861842319 -0.0009091323484 0.0008861842319 -2.536631139e-06 3.564167494e-05 -0.0009091323484 3.564167494e-05 -6.19895203e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002084673479 -7.778343881e-05 -1.121865034e-05 -7.778343881e-05 8.352683736e-05 -0.000185098219 -1.121865034e-05 -0.000185098219 0.0004141124397 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.584202265e-05 -4.869730888e-05 9.835119674e-05 -4.869730888e-05 4.320277922e-05 -6.531720293e-05 9.835119674e-05 -6.531720293e-05 0.0001188950595 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001169880695 2.563087773e-05 -4.442515685e-05 2.563087773e-05 -3.099121049e-06 5.507015708e-06 -4.442515685e-05 5.507015708e-06 -9.867823654e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.649593307e-05 9.747466385e-06 -2.354343527e-05 9.747466385e-06 -1.044742103e-05 1.004926754e-05 -2.354343527e-05 1.004926754e-05 -3.431975154e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.546922213e-05 -1.835059732e-05 4.552750411e-05 -1.835059732e-05 9.737603023e-06 -2.38232279e-05 4.552750411e-05 -2.38232279e-05 5.71337899e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.066826177e-05 -7.875522104e-06 1.729569631e-05 -7.875522104e-06 3.451202712e-06 -7.437439831e-06 1.729569631e-05 -7.437439831e-06 1.626806822e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.015617397e-06 2.003706877e-06 -3.084363834e-06 2.003706877e-06 -1.117516548e-06 -6.172950827e-08 -3.084363834e-06 -6.172950827e-08 4.229670796e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.188222095e-06 1.986189921e-06 7.157806756e-07 1.986189921e-06 -6.361112192e-07 -1.11104452e-06 7.157806756e-07 -1.11104452e-06 6.631872026e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.922621777e-06 -2.337873354e-06 6.256355568e-06 -2.337873354e-06 1.407950415e-06 -4.298431581e-06 6.256355568e-06 -4.298431581e-06 1.137739575e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.05272367775 0.02734656374 0.006235498896 0 0 0.02734656374 -0.01388206601 -0.01645363989 0 0 0.006235498896 -0.01645363989 0.09863800006 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03518261767 0.02067102784 -0.03263744611 0 0 0.02067102784 -0.01125497658 0.01445164866 0 0 -0.03263744611 0.01445164866 -0.02014449537 0 0 0 0 0 0 0 0 0 0 0 0 +0.0008245419106 0.0006892267035 -0.0002925166944 0 0 0.0006892267035 -0.0006078010872 0.001658620931 0 0 -0.0002925166944 0.001658620931 -0.004066400037 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005350696064 0.0008861842319 -0.0009091323484 0 0 0.0008861842319 -2.536631139e-06 3.564167494e-05 0 0 -0.0009091323484 3.564167494e-05 -6.19895203e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002084673479 -7.778343881e-05 -1.121865034e-05 0 0 -7.778343881e-05 8.352683736e-05 -0.000185098219 0 0 -1.121865034e-05 -0.000185098219 0.0004141124397 0 0 0 0 0 0 0 0 0 0 0 0 +-1.584202265e-05 -4.869730888e-05 9.835119674e-05 0 0 -4.869730888e-05 4.320277922e-05 -6.531720293e-05 0 0 9.835119674e-05 -6.531720293e-05 0.0001188950595 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001169880695 2.563087773e-05 -4.442515685e-05 0 0 2.563087773e-05 -3.099121049e-06 5.507015708e-06 0 0 -4.442515685e-05 5.507015708e-06 -9.867823654e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.649593307e-05 9.747466385e-06 -2.354343527e-05 0 0 9.747466385e-06 -1.044742103e-05 1.004926754e-05 0 0 -2.354343527e-05 1.004926754e-05 -3.431975154e-06 0 0 0 0 0 0 0 0 0 0 0 0 +3.546922213e-05 -1.835059732e-05 4.552750411e-05 0 0 -1.835059732e-05 9.737603023e-06 -2.38232279e-05 0 0 4.552750411e-05 -2.38232279e-05 5.71337899e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.066826177e-05 -7.875522104e-06 1.729569631e-05 0 0 -7.875522104e-06 3.451202712e-06 -7.437439831e-06 0 0 1.729569631e-05 -7.437439831e-06 1.626806822e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.015617397e-06 2.003706877e-06 -3.084363834e-06 0 0 2.003706877e-06 -1.117516548e-06 -6.172950827e-08 0 0 -3.084363834e-06 -6.172950827e-08 4.229670796e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-4.188222095e-06 1.986189921e-06 7.157806756e-07 0 0 1.986189921e-06 -6.361112192e-07 -1.11104452e-06 0 0 7.157806756e-07 -1.11104452e-06 6.631872026e-06 0 0 0 0 0 0 0 0 0 0 0 0 +3.922621777e-06 -2.337873354e-06 6.256355568e-06 0 0 -2.337873354e-06 1.407950415e-06 -4.298431581e-06 0 0 6.256355568e-06 -4.298431581e-06 1.137739575e-05 0 0 0 0 0 0 0 0 0 0 0 0 -0.04955419151 0.03258877312 -0.01967086232 -0.01693313509 -0.0005188261521 0.03258877312 -0.01701340818 -0.0132224828 0.0224298222 0.007783978023 -0.01967086232 -0.0132224828 0.09702807499 -0.05157041127 -0.02627111812 -0.01693313509 0.0224298222 -0.05157041127 0.01238375549 0.01107676351 -0.0005188261521 0.007783978023 -0.02627111812 0.01107676351 0.006466582903 -0.03216603308 0.02487051302 -0.03476151674 -0.00117876798 0.005350836718 0.02487051302 -0.02070040523 0.02290779499 0.002505145925 -0.004172448624 -0.03476151674 0.02290779499 -0.02335329652 -0.005887064495 0.005519486886 -0.00117876798 0.002505145925 -0.005887064495 0.001489704031 0.0004843297658 0.005350836718 -0.004172448624 0.005519486886 0.0004843297658 -0.0009998846042 -0.001167775461 0.002326681074 -0.004340434536 0.0002979095706 0.0003265482814 0.002326681074 -0.003597150299 0.00638460269 -0.0008774205314 -0.001285562366 -0.004340434536 0.00638460269 -0.01291878169 0.00193913041 0.002142178627 0.0002979095706 -0.0008774205314 0.00193913041 -4.455269695e-05 4.537518228e-07 0.0003265482814 -0.001285562366 0.002142178627 4.537518228e-07 6.040263471e-05 @@ -89,19 +89,19 @@ 1.139407183e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.257424688e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9.676688679e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0007008326517 0.008861222892 0.01089437032 0.008861222892 -0.06544487136 -0.005924391807 0.01089437032 -0.005924391807 0.07779521973 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0004388472929 0.006638122048 -0.00297714782 0.006638122048 -0.01764583434 0.01805926433 -0.00297714782 0.01805926433 -0.01362597919 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.791995554e-05 -0.000597847591 -0.0003310295257 -0.000597847591 -0.002869491948 -0.0007469890457 -0.0003310295257 -0.0007469890457 -0.0003225002139 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.65498009e-05 -0.0001348093313 5.299216042e-05 -0.0001348093313 -0.002727116351 0.001088963483 5.299216042e-05 0.001088963483 -0.0004395972327 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.612604148e-07 -1.087414071e-05 -5.909957917e-06 -1.087414071e-05 -0.0001954505124 -8.223216049e-05 -5.909957917e-06 -8.223216049e-05 0.0001260927704 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.022018311e-07 -8.403715839e-05 6.093727391e-05 -8.403715839e-05 -0.0001328460109 -5.980536171e-05 6.093727391e-05 -5.980536171e-05 0.0001787510731 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.371763689e-06 -9.550467256e-07 -5.076447868e-07 -9.550467256e-07 0.0001126229583 -7.464661208e-05 -5.076447868e-07 -7.464661208e-05 4.791228008e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.173858839e-07 -1.423880372e-06 5.894134842e-07 -1.423880372e-06 -4.565551294e-05 1.522544466e-05 5.894134842e-07 1.522544466e-05 -3.107506883e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.278645382e-08 6.285635994e-06 2.693136914e-06 6.285635994e-06 -1.053516499e-05 1.206932689e-05 2.693136914e-06 1.206932689e-05 1.275482804e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.08688657e-07 -1.761491997e-06 2.13712282e-06 -1.761491997e-06 2.642228761e-05 -2.96603402e-05 2.13712282e-06 -2.96603402e-05 3.10913856e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.00878528e-07 -1.461432673e-06 1.619723351e-06 -1.461432673e-06 2.019283551e-05 -1.93484479e-05 1.619723351e-06 -1.93484479e-05 1.96006314e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.373919559e-07 -2.147914705e-07 1.366816981e-06 -2.147914705e-07 1.358730639e-06 -4.011523574e-06 1.366816981e-06 -4.011523574e-06 9.345619176e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.458324432e-07 2.344792458e-07 8.101428468e-07 2.344792458e-07 -1.404672738e-06 -3.15306646e-06 8.101428468e-07 -3.15306646e-06 8.067649689e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007008326517 0.008861222892 0.01089437032 0 0 0.008861222892 -0.06544487136 -0.005924391807 0 0 0.01089437032 -0.005924391807 0.07779521973 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004388472929 0.006638122048 -0.00297714782 0 0 0.006638122048 -0.01764583434 0.01805926433 0 0 -0.00297714782 0.01805926433 -0.01362597919 0 0 0 0 0 0 0 0 0 0 0 0 +-1.791995554e-05 -0.000597847591 -0.0003310295257 0 0 -0.000597847591 -0.002869491948 -0.0007469890457 0 0 -0.0003310295257 -0.0007469890457 -0.0003225002139 0 0 0 0 0 0 0 0 0 0 0 0 +-3.65498009e-05 -0.0001348093313 5.299216042e-05 0 0 -0.0001348093313 -0.002727116351 0.001088963483 0 0 5.299216042e-05 0.001088963483 -0.0004395972327 0 0 0 0 0 0 0 0 0 0 0 0 +-6.612604148e-07 -1.087414071e-05 -5.909957917e-06 0 0 -1.087414071e-05 -0.0001954505124 -8.223216049e-05 0 0 -5.909957917e-06 -8.223216049e-05 0.0001260927704 0 0 0 0 0 0 0 0 0 0 0 0 +-3.022018311e-07 -8.403715839e-05 6.093727391e-05 0 0 -8.403715839e-05 -0.0001328460109 -5.980536171e-05 0 0 6.093727391e-05 -5.980536171e-05 0.0001787510731 0 0 0 0 0 0 0 0 0 0 0 0 +1.371763689e-06 -9.550467256e-07 -5.076447868e-07 0 0 -9.550467256e-07 0.0001126229583 -7.464661208e-05 0 0 -5.076447868e-07 -7.464661208e-05 4.791228008e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.173858839e-07 -1.423880372e-06 5.894134842e-07 0 0 -1.423880372e-06 -4.565551294e-05 1.522544466e-05 0 0 5.894134842e-07 1.522544466e-05 -3.107506883e-06 0 0 0 0 0 0 0 0 0 0 0 0 +5.278645382e-08 6.285635994e-06 2.693136914e-06 0 0 6.285635994e-06 -1.053516499e-05 1.206932689e-05 0 0 2.693136914e-06 1.206932689e-05 1.275482804e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.08688657e-07 -1.761491997e-06 2.13712282e-06 0 0 -1.761491997e-06 2.642228761e-05 -2.96603402e-05 0 0 2.13712282e-06 -2.96603402e-05 3.10913856e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.00878528e-07 -1.461432673e-06 1.619723351e-06 0 0 -1.461432673e-06 2.019283551e-05 -1.93484479e-05 0 0 1.619723351e-06 -1.93484479e-05 1.96006314e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.373919559e-07 -2.147914705e-07 1.366816981e-06 0 0 -2.147914705e-07 1.358730639e-06 -4.011523574e-06 0 0 1.366816981e-06 -4.011523574e-06 9.345619176e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.458324432e-07 2.344792458e-07 8.101428468e-07 0 0 2.344792458e-07 -1.404672738e-06 -3.15306646e-06 0 0 8.101428468e-07 -3.15306646e-06 8.067649689e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.006140812317 0.0005260896435 0.0005347155606 0.03463870538 0.03710052734 0.0005260896435 -0.001389952139 -0.0004672634052 0.008848725826 0.007703048242 0.0005347155606 -0.0004672634052 1.746148216e-05 0.009861044165 0.007934493593 0.03463870538 0.008848725826 0.009861044165 -0.07456073657 0.03559047875 0.03710052734 0.007703048242 0.007934493593 0.03559047875 0.1065414659 -0.01261437326 -0.003168771085 -0.00272554673 0.01712941108 -0.01796015576 -0.003168771085 -0.0012013004 0.000193057909 0.004725758758 -0.002563500408 -0.00272554673 0.000193057909 -1.536227754e-05 0.00465409762 -0.002852101819 0.01712941108 0.004725758758 0.00465409762 -0.02174720518 0.02578166537 -0.01796015576 -0.002563500408 -0.002852101819 0.02578166537 -0.02448913843 -0.0003121047242 -0.0005720693578 -0.0003312171375 0.0001035297614 -0.001022808339 -0.0005720693578 -1.180298803e-05 1.330699703e-05 -0.0002022442367 -0.001367054452 -0.0003312171375 1.330699703e-05 -1.423643266e-05 -9.888192241e-05 -0.0007931218537 0.0001035297614 -0.0002022442367 -9.888192241e-05 -0.0004965693331 -0.0003203091654 -0.001022808339 -0.001367054452 -0.0007931218537 -0.0003203091654 -0.003332647667 @@ -128,19 +128,19 @@ 1.888434949e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6.5266227e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.33933422e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.00110929176 -0.0006870279114 -0.003677545585 -0.0006870279114 -0.0007754044308 0.004649327709 -0.003677545585 0.004649327709 -0.05207982658 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0007510693414 -0.0009418451974 -0.01687245253 -0.0009418451974 7.177869613e-05 0.01975658564 -0.01687245253 0.01975658564 -0.08077223294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.373953992e-05 0.000100509873 0.0003263196408 0.000100509873 -0.0001061641753 -0.0004636093351 0.0003263196408 -0.0004636093351 -0.0021489168 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001076136386 8.425199693e-05 0.000862957372 8.425199693e-05 -0.0001396224714 -0.001246962232 0.000862957372 -0.001246962232 -0.008074785752 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.246405884e-07 -5.191715053e-08 -1.403587435e-05 -5.191715053e-08 6.576623324e-07 2.337268467e-06 -1.403587435e-05 2.337268467e-06 0.0003160226164 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.346786428e-06 1.585228646e-05 0.0002694640774 1.585228646e-05 -8.466501243e-06 -0.0004047624891 0.0002694640774 -0.0004047624891 -8.646341e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.038237821e-06 -1.655179738e-06 -2.276917906e-05 -1.655179738e-06 5.040323257e-06 2.868312535e-05 -2.276917906e-05 2.868312535e-05 0.0002791545998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.056434804e-07 -1.63316645e-08 -4.865721764e-07 -1.63316645e-08 1.583488381e-07 1.499901904e-06 -4.865721764e-07 1.499901904e-06 -0.0001003725889 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.966735117e-07 2.993799653e-07 -2.801714387e-06 2.993799653e-07 4.759057513e-07 2.872968971e-06 -2.801714387e-06 2.872968971e-06 -1.105856087e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.149724912e-07 -4.79174997e-08 6.419484735e-07 -4.79174997e-08 1.039061551e-06 -5.165308826e-06 6.419484735e-07 -5.165308826e-06 0.0001374989142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.651445491e-07 2.30418153e-07 4.898054299e-06 2.30418153e-07 3.735298831e-07 -8.688471796e-06 4.898054299e-06 -8.688471796e-06 5.300266864e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.804433827e-07 1.440714812e-07 5.806325516e-07 1.440714812e-07 3.433673519e-07 -1.235029827e-06 5.806325516e-07 -1.235029827e-06 6.137429049e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.053993405e-07 6.002495275e-08 4.25579559e-07 6.002495275e-08 4.218755539e-07 -1.100285228e-06 4.25579559e-07 -1.100285228e-06 9.642008137e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00110929176 -0.0006870279114 -0.003677545585 0 0 -0.0006870279114 -0.0007754044308 0.004649327709 0 0 -0.003677545585 0.004649327709 -0.05207982658 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007510693414 -0.0009418451974 -0.01687245253 0 0 -0.0009418451974 7.177869613e-05 0.01975658564 0 0 -0.01687245253 0.01975658564 -0.08077223294 0 0 0 0 0 0 0 0 0 0 0 0 +-4.373953992e-05 0.000100509873 0.0003263196408 0 0 0.000100509873 -0.0001061641753 -0.0004636093351 0 0 0.0003263196408 -0.0004636093351 -0.0021489168 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001076136386 8.425199693e-05 0.000862957372 0 0 8.425199693e-05 -0.0001396224714 -0.001246962232 0 0 0.000862957372 -0.001246962232 -0.008074785752 0 0 0 0 0 0 0 0 0 0 0 0 +3.246405884e-07 -5.191715053e-08 -1.403587435e-05 0 0 -5.191715053e-08 6.576623324e-07 2.337268467e-06 0 0 -1.403587435e-05 2.337268467e-06 0.0003160226164 0 0 0 0 0 0 0 0 0 0 0 0 +-5.346786428e-06 1.585228646e-05 0.0002694640774 0 0 1.585228646e-05 -8.466501243e-06 -0.0004047624891 0 0 0.0002694640774 -0.0004047624891 -8.646341e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.038237821e-06 -1.655179738e-06 -2.276917906e-05 0 0 -1.655179738e-06 5.040323257e-06 2.868312535e-05 0 0 -2.276917906e-05 2.868312535e-05 0.0002791545998 0 0 0 0 0 0 0 0 0 0 0 0 +1.056434804e-07 -1.63316645e-08 -4.865721764e-07 0 0 -1.63316645e-08 1.583488381e-07 1.499901904e-06 0 0 -4.865721764e-07 1.499901904e-06 -0.0001003725889 0 0 0 0 0 0 0 0 0 0 0 0 +3.966735117e-07 2.993799653e-07 -2.801714387e-06 0 0 2.993799653e-07 4.759057513e-07 2.872968971e-06 0 0 -2.801714387e-06 2.872968971e-06 -1.105856087e-05 0 0 0 0 0 0 0 0 0 0 0 0 +6.149724912e-07 -4.79174997e-08 6.419484735e-07 0 0 -4.79174997e-08 1.039061551e-06 -5.165308826e-06 0 0 6.419484735e-07 -5.165308826e-06 0.0001374989142 0 0 0 0 0 0 0 0 0 0 0 0 +2.651445491e-07 2.30418153e-07 4.898054299e-06 0 0 2.30418153e-07 3.735298831e-07 -8.688471796e-06 0 0 4.898054299e-06 -8.688471796e-06 5.300266864e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.804433827e-07 1.440714812e-07 5.806325516e-07 0 0 1.440714812e-07 3.433673519e-07 -1.235029827e-06 0 0 5.806325516e-07 -1.235029827e-06 6.137429049e-06 0 0 0 0 0 0 0 0 0 0 0 0 +3.053993405e-07 6.002495275e-08 4.25579559e-07 0 0 6.002495275e-08 4.218755539e-07 -1.100285228e-06 0 0 4.25579559e-07 -1.100285228e-06 9.642008137e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.01523371396 -0.002733334623 -0.0003271237916 0.02842954502 0.001553208849 -0.002733334623 -6.665335651e-06 -0.000206992297 -0.004749007269 -5.803410128e-05 -0.0003271237916 -0.000206992297 -0.001241366215 -0.001546689007 -6.68518885e-05 0.02842954502 -0.004749007269 -0.001546689007 0.05269097746 0.001843310081 0.001553208849 -5.803410128e-05 -6.68518885e-05 0.001843310081 -0.001316597457 -0.02977026544 0.008114038303 0.001740570271 -0.05494421908 0.0005272788895 0.008114038303 -3.488439799e-06 -0.0002522875866 0.01403606727 -0.0003707332087 0.001740570271 -0.0002522875866 -0.002296070047 0.001223337546 -0.000572656979 -0.05494421908 0.01403606727 0.001223337546 -0.1010955163 -0.0002483119108 0.0005272788895 -0.0003707332087 -0.000572656979 -0.0002483119108 -0.001664152108 -0.00154302212 0.00183576317 0.001051486359 -0.003480332703 -0.001078230586 0.00183576317 8.125509658e-07 3.934404449e-05 0.003178029783 -0.0001102616187 0.001051486359 3.934404449e-05 -5.619210165e-05 0.001659219239 -0.0002913578896 -0.003480332703 0.003178029783 0.001659219239 -0.007429657791 -0.001899411922 -0.001078230586 -0.0001102616187 -0.0002913578896 -0.001899411922 0.0001524763656 @@ -167,19 +167,19 @@ -0.0001038934113 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.927631367e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.856929814e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.166610433 0.01757639101 0.04409152946 0.01757639101 -0.211486942 -0.06680913936 0.04409152946 -0.06680913936 -0.0233990632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.1495240175 0.001550370747 0.02784012304 0.001550370747 -0.1082595144 -0.04689315841 0.02784012304 -0.04689315841 -0.07595826858 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01455347934 0.001759500744 0.01494008608 0.001759500744 -0.01440725105 -0.01688933311 0.01494008608 -0.01688933311 0.06234788439 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01129515346 0.01689383562 -0.02359707528 0.01689383562 -0.02093000786 0.03112177991 -0.02359707528 0.03112177991 -0.0411367735 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000805164579 0.001057956005 -0.001806998068 0.001057956005 -0.001448929778 0.002085612272 -0.001806998068 0.002085612272 -0.003488907775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001985485595 -0.0003744029006 0.0006102929635 -0.0003744029006 0.0002976513434 -0.0006962053732 0.0006102929635 -0.0006962053732 0.001587436312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000206197214 0.0004648762708 -0.000513359427 0.0004648762708 -0.0002768428837 0.0005883605734 -0.000513359427 0.0005883605734 1.975197749e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.39970362e-05 -7.5251997e-06 2.091500279e-05 -7.5251997e-06 -3.78803089e-05 -3.905146671e-05 2.091500279e-05 -3.905146671e-05 -4.682122768e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.650149903e-06 5.064466107e-06 -1.9667419e-05 5.064466107e-06 -0.0001154065772 5.830563772e-05 -1.9667419e-05 5.830563772e-05 -0.0002277989902 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.281923991e-05 2.289777064e-05 1.145101605e-06 2.289777064e-05 5.052934085e-05 -9.18456399e-06 1.145101605e-06 -9.18456399e-06 0.0002816700012 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.274067788e-06 -2.144447069e-05 3.006187268e-05 -2.144447069e-05 6.071052464e-05 -7.51490363e-05 3.006187268e-05 -7.51490363e-05 0.0001614272478 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.030711693e-05 2.221415836e-05 -3.790040811e-05 2.221415836e-05 -2.735235177e-05 4.619845652e-05 -3.790040811e-05 4.619845652e-05 -8.508333089e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.631403094e-05 -1.647829725e-06 1.020056718e-05 -1.647829725e-06 1.202409723e-05 -1.55631268e-05 1.020056718e-05 -1.55631268e-05 5.912609156e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.166610433 0.01757639101 0.04409152946 0 0 0.01757639101 -0.211486942 -0.06680913936 0 0 0.04409152946 -0.06680913936 -0.0233990632 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1495240175 0.001550370747 0.02784012304 0 0 0.001550370747 -0.1082595144 -0.04689315841 0 0 0.02784012304 -0.04689315841 -0.07595826858 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01455347934 0.001759500744 0.01494008608 0 0 0.001759500744 -0.01440725105 -0.01688933311 0 0 0.01494008608 -0.01688933311 0.06234788439 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01129515346 0.01689383562 -0.02359707528 0 0 0.01689383562 -0.02093000786 0.03112177991 0 0 -0.02359707528 0.03112177991 -0.0411367735 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000805164579 0.001057956005 -0.001806998068 0 0 0.001057956005 -0.001448929778 0.002085612272 0 0 -0.001806998068 0.002085612272 -0.003488907775 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001985485595 -0.0003744029006 0.0006102929635 0 0 -0.0003744029006 0.0002976513434 -0.0006962053732 0 0 0.0006102929635 -0.0006962053732 0.001587436312 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000206197214 0.0004648762708 -0.000513359427 0 0 0.0004648762708 -0.0002768428837 0.0005883605734 0 0 -0.000513359427 0.0005883605734 1.975197749e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.39970362e-05 -7.5251997e-06 2.091500279e-05 0 0 -7.5251997e-06 -3.78803089e-05 -3.905146671e-05 0 0 2.091500279e-05 -3.905146671e-05 -4.682122768e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.650149903e-06 5.064466107e-06 -1.9667419e-05 0 0 5.064466107e-06 -0.0001154065772 5.830563772e-05 0 0 -1.9667419e-05 5.830563772e-05 -0.0002277989902 0 0 0 0 0 0 0 0 0 0 0 0 +4.281923991e-05 2.289777064e-05 1.145101605e-06 0 0 2.289777064e-05 5.052934085e-05 -9.18456399e-06 0 0 1.145101605e-06 -9.18456399e-06 0.0002816700012 0 0 0 0 0 0 0 0 0 0 0 0 +2.274067788e-06 -2.144447069e-05 3.006187268e-05 0 0 -2.144447069e-05 6.071052464e-05 -7.51490363e-05 0 0 3.006187268e-05 -7.51490363e-05 0.0001614272478 0 0 0 0 0 0 0 0 0 0 0 0 +-2.030711693e-05 2.221415836e-05 -3.790040811e-05 0 0 2.221415836e-05 -2.735235177e-05 4.619845652e-05 0 0 -3.790040811e-05 4.619845652e-05 -8.508333089e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.631403094e-05 -1.647829725e-06 1.020056718e-05 0 0 -1.647829725e-06 1.202409723e-05 -1.55631268e-05 0 0 1.020056718e-05 -1.55631268e-05 5.912609156e-05 0 0 0 0 0 0 0 0 0 0 0 0 -0.01910928207 0.04408105834 0.008056425844 0.1270395436 0.04681019896 0.04408105834 -0.04010199272 -0.02417789137 0.03988166471 0.01353229222 0.008056425844 -0.02417789137 0.1963675826 -0.03755653928 -0.01357936482 0.1270395436 0.03988166471 -0.03755653928 0.06370224242 0.0164416675 0.04681019896 0.01353229222 -0.01357936482 0.0164416675 0.2246442454 -0.1247827342 0.0560272066 -0.05566491689 -0.03639256766 -0.04189999831 0.0560272066 -0.05570244621 0.04517998095 0.0393852232 -0.01407531989 -0.05566491689 0.04517998095 -0.0323029854 0.02516701211 0.004637406344 -0.03639256766 0.0393852232 0.02516701211 -0.1876313035 0.020559201 -0.04189999831 -0.01407531989 0.004637406344 0.020559201 -0.03507397866 -0.01225802449 0.01981601249 -0.03188323499 0.005905985001 0.006832205705 0.01981601249 -0.01126020795 0.004951853431 0.02262595684 0.009165719682 -0.03188323499 0.004951853431 -0.008386701603 -0.01170673578 -0.02822819303 0.005905985001 0.02262595684 -0.01170673578 -0.01650152115 0.03069319638 0.006832205705 0.009165719682 -0.02822819303 0.03069319638 0.01645624168 @@ -190,6 +190,6 @@ -0.0002178423987 2.921829788e-05 -5.285149356e-05 -8.937789955e-05 -0.0001463405818 2.921829788e-05 -0.0001074664825 0.0001472865505 1.942052611e-05 -0.0001317649901 -5.285149356e-05 0.0001472865505 -0.0002178470474 5.666792471e-05 0.0001292845974 -8.937789955e-05 1.942052611e-05 5.666792471e-05 -0.0003546295492 4.955991424e-05 -0.0001463405818 -0.0001317649901 0.0001292845974 4.955991424e-05 -0.0003330055613 -6.564496103e-05 -0.0001457635457 0.0002693069743 -8.881359379e-05 -0.0002554290118 -0.0001457635457 -6.913979926e-05 0.0001099695898 -0.0001370822361 -0.0002066997485 0.0002693069743 0.0001099695898 -0.0001599008896 0.0002056274191 0.0003878146277 -8.881359379e-05 -0.0001370822361 0.0002056274191 -2.604141138e-05 -0.0003438967823 -0.0002554290118 -0.0002066997485 0.0003878146277 -0.0003438967823 -0.0004323754395 0.000146224617 4.310912332e-05 -8.259812651e-05 0.000150850131 0.0001780934964 4.310912332e-05 3.607570805e-05 -6.891066357e-05 5.291119951e-05 9.032600043e-05 -8.259812651e-05 -6.891066357e-05 0.0001367503767 -0.0001286233419 -0.000158318014 0.000150850131 5.291119951e-05 -0.0001286233419 0.0002633757444 0.0001350432778 0.0001780934964 9.032600043e-05 -0.000158318014 0.0001350432778 0.0003099324817 --9.658650332e-06 1.064194126e-05 -1.33380015e-05 6.347515848e-06 3.078665912e-06 1.064194126e-05 -7.415479959e-06 7.542749373e-06 4.154390036e-06 1.423617863e-06 -1.33380015e-05 7.542749373e-06 -1.009813129e-05 6.427702396e-06 -5.131249098e-06 6.347515848e-06 4.154390036e-06 6.427702396e-06 -2.965115865e-06 -5.860222116e-06 3.078665912e-06 1.423617863e-06 -5.131249098e-06 -5.860222116e-06 1.968695709e-05 +-9.658650333e-06 1.064194126e-05 -1.33380015e-05 6.347515848e-06 3.078665912e-06 1.064194126e-05 -7.415479959e-06 7.542749373e-06 4.154390036e-06 1.423617863e-06 -1.33380015e-05 7.542749373e-06 -1.009813129e-05 6.427702396e-06 -5.131249098e-06 6.347515848e-06 4.154390036e-06 6.427702396e-06 -2.965115865e-06 -5.860222116e-06 3.078665912e-06 1.423617863e-06 -5.131249098e-06 -5.860222116e-06 1.968695709e-05 -7.833002265e-06 -1.626426183e-05 3.440256489e-05 -8.815920269e-06 -2.509898872e-05 -1.626426183e-05 -1.078315899e-05 1.450843966e-05 -1.698110565e-05 -2.693931355e-05 3.440256489e-05 1.450843966e-05 -1.436046867e-05 2.333540865e-05 5.192144364e-05 -8.815920269e-06 -1.698110565e-05 2.333540865e-05 -4.300153778e-06 -4.346728669e-05 -2.509898872e-05 -2.693931355e-05 5.192144364e-05 -4.346728669e-05 -4.225644699e-05 2.474870287e-05 3.766262254e-06 -3.820077353e-06 2.668970522e-05 2.620266601e-05 3.766262254e-06 7.298705604e-06 -1.571251776e-05 7.499294432e-06 1.48740531e-05 -3.820077353e-06 -1.571251776e-05 3.460973055e-05 -1.902372967e-05 -2.33959142e-05 2.668970522e-05 7.499294432e-06 -1.902372967e-05 4.045968399e-05 1.657099519e-05 2.620266601e-05 1.48740531e-05 -2.33959142e-05 1.657099519e-05 5.635982951e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_0_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_0_ref.dat index 105087e75f..d7d2ee5e33 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_0_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_0_ref.dat @@ -11,19 +11,19 @@ -5.914022705e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.30519137e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.847775615e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08660026992 0.006583507236 -0.0007995069156 0.006583507236 -0.06003459141 -0.001059484772 -0.0007995069156 -0.001059484772 -0.05780331733 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1650704472 -0.001429940935 0.00436269709 -0.001429940935 -0.1286446785 -0.0004793135183 0.00436269709 -0.0004793135183 -0.1352054918 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1528614751 0.001909544916 0.00226883152 0.001909544916 -0.07437308786 0.001184611649 0.00226883152 0.001184611649 -0.08646309045 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.07305888783 0.002335439483 0.000187415549 0.002335439483 -0.01688423027 0.0009742160041 0.000187415549 0.0009742160041 -0.02323866874 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02439674955 0.001246719577 -0.0002596902328 0.001246719577 0.0005827601291 0.0004241355733 -0.0002596902328 0.0004241355733 -0.001570554061 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002801796306 0.0002376009059 -0.0001358637853 0.0002376009059 0.003015996062 9.765656829e-05 -0.0001358637853 9.765656829e-05 0.002832197783 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.002806072616 -0.0001121699661 -3.640203071e-05 -0.0001121699661 0.001902329344 -4.573957538e-05 -3.640203071e-05 -4.573957538e-05 0.002420559801 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.002522296256 -0.0001704776574 3.900911785e-05 -0.0001704776574 -1.282706911e-05 -6.817789914e-05 3.900911785e-05 -6.817789914e-05 0.0003541954352 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001135239603 -5.687663094e-05 2.553611907e-05 -5.687663094e-05 -0.0004311326811 -2.851587374e-05 2.553611907e-05 -2.851587374e-05 -0.000366683846 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.704050266e-05 1.265183232e-05 1.372774993e-06 1.265183232e-05 -0.0001492281279 6.788906837e-06 1.372774993e-06 6.788906837e-06 -0.0002161161072 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002887725238 2.810657863e-05 -7.381239377e-06 2.810657863e-05 9.87127479e-06 1.089648424e-05 -7.381239377e-06 1.089648424e-05 -4.982034498e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.628185322e-05 3.562072332e-06 -1.375169413e-06 3.562072332e-06 1.906034435e-05 2.047429346e-06 -1.375169413e-06 2.047429346e-06 1.398900624e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.178120404e-05 6.756835846e-07 -1.003295311e-06 6.756835846e-07 2.11186583e-05 -1.283721155e-08 -1.003295311e-06 -1.283721155e-08 2.767980234e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.08660026992 0.006583507236 -0.0007995069156 0 0 0.006583507236 -0.06003459141 -0.001059484772 0 0 -0.0007995069156 -0.001059484772 -0.05780331733 0 0 0 0 0 0 0 0 0 0 0 0 +0.1650704472 -0.001429940935 0.00436269709 0 0 -0.001429940935 -0.1286446785 -0.0004793135183 0 0 0.00436269709 -0.0004793135183 -0.1352054918 0 0 0 0 0 0 0 0 0 0 0 0 +0.1528614751 0.001909544916 0.00226883152 0 0 0.001909544916 -0.07437308786 0.001184611649 0 0 0.00226883152 0.001184611649 -0.08646309045 0 0 0 0 0 0 0 0 0 0 0 0 +0.07305888783 0.002335439483 0.000187415549 0 0 0.002335439483 -0.01688423027 0.0009742160041 0 0 0.000187415549 0.0009742160041 -0.02323866874 0 0 0 0 0 0 0 0 0 0 0 0 +0.02439674955 0.001246719577 -0.0002596902328 0 0 0.001246719577 0.0005827601291 0.0004241355733 0 0 -0.0002596902328 0.0004241355733 -0.001570554061 0 0 0 0 0 0 0 0 0 0 0 0 +0.002801796306 0.0002376009059 -0.0001358637853 0 0 0.0002376009059 0.003015996062 9.765656829e-05 0 0 -0.0001358637853 9.765656829e-05 0.002832197783 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002806072616 -0.0001121699661 -3.640203071e-05 0 0 -0.0001121699661 0.001902329344 -4.573957538e-05 0 0 -3.640203071e-05 -4.573957538e-05 0.002420559801 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002522296256 -0.0001704776574 3.900911785e-05 0 0 -0.0001704776574 -1.282706911e-05 -6.817789914e-05 0 0 3.900911785e-05 -6.817789914e-05 0.0003541954352 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001135239603 -5.687663094e-05 2.553611907e-05 0 0 -5.687663094e-05 -0.0004311326811 -2.851587374e-05 0 0 2.553611907e-05 -2.851587374e-05 -0.000366683846 0 0 0 0 0 0 0 0 0 0 0 0 +1.704050266e-05 1.265183232e-05 1.372774993e-06 0 0 1.265183232e-05 -0.0001492281279 6.788906837e-06 0 0 1.372774993e-06 6.788906837e-06 -0.0002161161072 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002887725238 2.810657863e-05 -7.381239377e-06 0 0 2.810657863e-05 9.87127479e-06 1.089648424e-05 0 0 -7.381239377e-06 1.089648424e-05 -4.982034498e-05 0 0 0 0 0 0 0 0 0 0 0 0 +9.628185322e-05 3.562072332e-06 -1.375169413e-06 0 0 3.562072332e-06 1.906034435e-05 2.047429346e-06 0 0 -1.375169413e-06 2.047429346e-06 1.398900624e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.178120404e-05 6.756835846e-07 -1.003295311e-06 0 0 6.756835846e-07 2.11186583e-05 -1.283721155e-08 0 0 -1.003295311e-06 -1.283721155e-08 2.767980234e-05 0 0 0 0 0 0 0 0 0 0 0 0 -0.0892142892 -0.004916297527 0.0001653289109 0.0005552038973 0.0007434116166 -0.004916297527 0.06211622343 0.000978483449 0.04510726771 -0.0006839832128 0.0001653289109 0.000978483449 0.0608035052 0.0007158602647 -0.03920061875 0.0005552038973 0.04510726771 0.0007158602647 -0.007933709426 0.000234987152 0.0007434116166 -0.0006839832128 -0.03920061875 0.000234987152 -0.006349161268 -0.08791606301 -0.003463443164 -4.572409636e-05 -0.001263117472 0.0001274053657 -0.003463443164 0.04899350391 -0.0003202928595 0.0310957182 0.0002620235187 -4.572409636e-05 -0.0003202928595 0.05395253294 -0.0003061541913 -0.03051975883 -0.001263117472 0.0310957182 -0.0003061541913 -0.02076022873 0.0003000620542 0.0001274053657 0.0002620235187 -0.03051975883 0.0003000620542 -0.01852739221 -0.01821349614 -0.000449003619 6.715769715e-05 -0.001871586629 -0.0004663368824 -0.000449003619 0.01125569711 -0.0005786793513 0.004304527321 0.0003525399059 6.715769715e-05 -0.0005786793513 0.01460180402 -0.0003823075218 -0.005169542047 -0.001871586629 0.004304527321 -0.0003823075218 -0.01410278638 -0.0001689196761 -0.0004663368824 0.0003525399059 -0.005169542047 -0.0001689196761 -0.01457043999 @@ -50,19 +50,19 @@ 0.0002276780322 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0003250901248 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.506797656e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.004132276857 0.0001205709262 -0.0006351433828 0.0001205709262 0.1114780524 0.0005472751401 -0.0006351433828 0.0005472751401 0.1079666927 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01591946603 -0.006990870532 0.001281174139 -0.006990870532 0.1245879624 -0.0008179185689 0.001281174139 -0.0008179185689 0.1301837633 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.133360984 -0.002862647928 -0.0002018215074 -0.002862647928 0.03288508336 -0.0003149952091 -0.0002018215074 -0.0003149952091 0.03432736454 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01206743101 0.001697363467 -0.0001165973839 0.001697363467 -0.0003451410928 6.319487433e-05 -0.0001165973839 6.319487433e-05 -0.0009591839672 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.03650358297 0.0007327439604 0.0001197568596 0.0007327439604 0.001795290831 3.982641064e-05 0.0001197568596 3.982641064e-05 0.001593549501 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01069752013 0.0003524161667 -2.280140606e-05 0.0003524161667 5.928034172e-05 8.369806626e-07 -2.280140606e-05 8.369806626e-07 4.227447156e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.005769543919 -0.0001059892279 -1.18841072e-05 -0.0001059892279 -0.0001090599402 -1.693722462e-06 -1.18841072e-05 -1.693722462e-06 -9.249608068e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001502395143 4.816515368e-06 -1.090387151e-06 4.816515368e-06 0.0002208878155 4.397345071e-09 -1.090387151e-06 4.397345071e-09 0.0002241317949 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00235620513 6.197769611e-05 2.574814032e-06 6.197769611e-05 -0.0001077188345 -1.224111333e-06 2.574814032e-06 -1.224111333e-06 -0.0001022543356 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0008718006601 -3.180536881e-05 3.626360964e-06 -3.180536881e-05 -2.16865899e-05 -5.27903155e-07 3.626360964e-06 -5.27903155e-07 -1.708597129e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.49053054e-05 -1.576772977e-07 -5.932341001e-07 -1.576772977e-07 3.042348339e-05 1.906576987e-07 -5.932341001e-07 1.906576987e-07 2.885054441e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001658103322 4.470944893e-06 5.781315994e-07 4.470944893e-06 -2.407844343e-05 -1.997775555e-07 5.781315994e-07 -1.997775555e-07 -2.30072101e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001413191286 -5.038978934e-06 6.285435727e-07 -5.038978934e-06 -1.699906232e-06 -3.139423438e-08 6.285435727e-07 -3.139423438e-08 -1.334175518e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.004132276858 0.0001205709262 -0.0006351433828 0 0 0.0001205709262 0.1114780524 0.0005472751401 0 0 -0.0006351433828 0.0005472751401 0.1079666927 0 0 0 0 0 0 0 0 0 0 0 0 +0.01591946603 -0.006990870532 0.001281174139 0 0 -0.006990870532 0.1245879624 -0.0008179185689 0 0 0.001281174139 -0.0008179185689 0.1301837633 0 0 0 0 0 0 0 0 0 0 0 0 +-0.133360984 -0.002862647928 -0.0002018215074 0 0 -0.002862647928 0.03288508336 -0.0003149952091 0 0 -0.0002018215074 -0.0003149952091 0.03432736454 0 0 0 0 0 0 0 0 0 0 0 0 +0.01206743101 0.001697363467 -0.0001165973839 0 0 0.001697363467 -0.0003451410928 6.319487433e-05 0 0 -0.0001165973839 6.319487433e-05 -0.0009591839672 0 0 0 0 0 0 0 0 0 0 0 0 +0.03650358297 0.0007327439604 0.0001197568596 0 0 0.0007327439604 0.001795290831 3.982641064e-05 0 0 0.0001197568596 3.982641064e-05 0.001593549501 0 0 0 0 0 0 0 0 0 0 0 0 +0.01069752013 0.0003524161667 -2.280140606e-05 0 0 0.0003524161667 5.928034172e-05 8.369806626e-07 0 0 -2.280140606e-05 8.369806626e-07 4.227447156e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005769543919 -0.0001059892279 -1.18841072e-05 0 0 -0.0001059892279 -0.0001090599402 -1.693722462e-06 0 0 -1.18841072e-05 -1.693722462e-06 -9.249608068e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001502395143 4.816515368e-06 -1.090387151e-06 0 0 4.816515368e-06 0.0002208878155 4.397345071e-09 0 0 -1.090387151e-06 4.397345071e-09 0.0002241317949 0 0 0 0 0 0 0 0 0 0 0 0 +0.00235620513 6.197769611e-05 2.574814032e-06 0 0 6.197769611e-05 -0.0001077188345 -1.224111333e-06 0 0 2.574814032e-06 -1.224111333e-06 -0.0001022543356 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0008718006601 -3.180536881e-05 3.626360964e-06 0 0 -3.180536881e-05 -2.16865899e-05 -5.27903155e-07 0 0 3.626360964e-06 -5.27903155e-07 -1.708597129e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.49053054e-05 -1.576772977e-07 -5.932341001e-07 0 0 -1.576772977e-07 3.042348339e-05 1.906576987e-07 0 0 -5.932341001e-07 1.906576987e-07 2.885054441e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001658103322 4.470944893e-06 5.781315994e-07 0 0 4.470944893e-06 -2.407844343e-05 -1.997775555e-07 0 0 5.781315994e-07 -1.997775555e-07 -2.30072101e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001413191286 -5.038978934e-06 6.285435727e-07 0 0 -5.038978934e-06 -1.699906232e-06 -3.139423438e-08 0 0 6.285435727e-07 -3.139423438e-08 -1.334175518e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.1556995082 -0.001196010408 0.0006298914347 -0.0004075914356 -0.000316111125 -0.001196010408 -0.1508224863 -0.0006627394419 -0.01596974717 0.0001740093113 0.0006298914347 -0.0006627394419 -0.1479659886 -0.0001806283797 0.01345899395 -0.0004075914356 -0.01596974717 -0.0001806283797 0.001216537121 6.955906407e-05 -0.000316111125 0.0001740093113 0.01345899395 6.955906407e-05 0.0002340980454 0.06005185874 -0.0008204651553 0.0004829332793 -0.0007652230675 -2.692607147e-05 -0.0008204651553 0.02207958614 -0.0001130368762 0.005385810931 0.0002986224382 0.0004829332793 -0.0001130368762 0.02345187088 -0.0003487829056 -0.001922780422 -0.0007652230675 0.005385810931 -0.0003487829056 0.001163561689 8.980773986e-05 -2.692607147e-05 0.0002986224382 -0.001922780422 8.980773986e-05 0.0001239092815 -0.02209495901 -0.004545987801 0.0002220259047 -0.0004241255962 -0.0001285975622 -0.004545987801 0.04401211699 -0.0005830675754 0.001487197992 0.0002520723873 0.0002220259047 -0.0005830675754 0.04753400359 -0.0003041611355 0.000452053689 -0.0004241255962 0.001487197992 -0.0003041611355 -1.995716594e-06 6.893347351e-06 -0.0001285975622 0.0002520723873 0.000452053689 6.893347351e-06 1.438383625e-06 @@ -73,9 +73,9 @@ -0.00145504521 -7.422070966e-05 -8.076869984e-06 -6.351470814e-06 5.095534083e-08 -7.422070966e-05 0.0004849854686 -1.139729108e-06 6.691807646e-05 1.087834956e-06 -8.076869984e-06 -1.139729108e-06 0.0005056701628 -1.20100485e-06 -4.391994342e-05 -6.351470814e-06 6.691807646e-05 -1.20100485e-06 3.563435406e-06 3.942088925e-07 5.095534083e-08 1.087834956e-06 -4.391994342e-05 3.942088925e-07 -1.918291301e-06 0.0001645664713 2.800843177e-05 1.775447741e-06 5.937221469e-06 1.181204073e-06 2.800843177e-05 -0.000255078906 -6.368534642e-06 -4.611011999e-05 7.197699986e-07 1.775447741e-06 -6.368534642e-06 -0.0002213127856 -9.624566509e-07 2.828677541e-05 5.937221469e-06 -4.611011999e-05 -9.624566509e-07 -1.822399047e-06 -1.899434539e-07 1.181204073e-06 7.197699986e-07 2.828677541e-05 -1.899434539e-07 9.20067443e-07 0.0003030183947 -2.718823185e-06 5.019596887e-06 -5.25101238e-06 -1.307636203e-06 -2.718823185e-06 3.302683694e-05 7.783729669e-07 6.111139791e-06 -7.254819526e-08 5.019596887e-06 7.783729669e-07 2.888607654e-05 4.517307633e-08 -3.851495341e-06 -5.25101238e-06 6.111139791e-06 4.517307633e-08 2.92097822e-07 3.231511095e-08 -1.307636203e-06 -7.254819526e-08 -3.851495341e-06 3.231511095e-08 -1.709289991e-07 -0.0001905968077 5.737120022e-06 1.229192455e-06 -1.538590256e-07 3.709713214e-08 5.737120022e-06 -3.617750065e-06 -1.272630712e-07 -3.002691683e-07 4.239944825e-08 1.229192455e-06 -1.272630712e-07 -2.716893513e-06 -4.631310957e-08 4.573558246e-07 -1.538590256e-07 -3.002691683e-07 -4.631310957e-08 9.496035052e-08 1.212373308e-08 3.709713214e-08 4.239944825e-08 4.573558246e-07 1.212373308e-08 -7.345807789e-08 +0.0001905968077 5.737120022e-06 1.229192455e-06 -1.538590256e-07 3.709713214e-08 5.737120022e-06 -3.617750064e-06 -1.272630712e-07 -3.002691683e-07 4.239944825e-08 1.229192455e-06 -1.272630712e-07 -2.716893513e-06 -4.631310957e-08 4.573558246e-07 -1.538590256e-07 -3.002691683e-07 -4.631310957e-08 9.496035052e-08 1.212373308e-08 3.709713214e-08 4.239944825e-08 4.573558246e-07 1.212373308e-08 -7.345807789e-08 -0.0001667793064 -4.605875643e-06 1.270207175e-07 -1.513379419e-08 -2.186115728e-07 -4.605875643e-06 -4.611570351e-05 -5.342663328e-07 -8.013428573e-06 8.095366512e-09 1.270207175e-07 -5.342663328e-07 -4.377484435e-05 -3.327695729e-08 5.699085542e-06 -1.513379419e-08 -8.013428573e-06 -3.327695729e-08 -2.758380977e-07 -3.013035684e-08 -2.186115728e-07 8.095366512e-09 5.699085542e-06 -3.013035684e-08 1.467696271e-07 --1.564510701e-05 -2.084468008e-06 3.589558707e-07 -5.507479926e-07 -1.696372761e-07 -2.084468008e-06 4.135593322e-06 -2.126647902e-08 7.879376338e-07 1.894308567e-08 3.589558707e-07 -2.126647902e-08 4.580805765e-06 -2.204402884e-08 -4.4061701e-07 -5.507479926e-07 7.879376338e-07 -2.204402884e-08 8.911292183e-08 1.11098153e-08 -1.696372761e-07 1.894308567e-08 -4.4061701e-07 1.11098153e-08 -6.487250658e-08 +-1.564510701e-05 -2.084468008e-06 3.589558707e-07 -5.507479926e-07 -1.696372761e-07 -2.084468008e-06 4.135593322e-06 -2.126647902e-08 7.879376338e-07 1.894308567e-08 3.589558707e-07 -2.126647902e-08 4.580805766e-06 -2.204402884e-08 -4.4061701e-07 -5.507479926e-07 7.879376338e-07 -2.204402884e-08 8.911292183e-08 1.11098153e-08 -1.696372761e-07 1.894308567e-08 -4.4061701e-07 1.11098153e-08 -6.487250658e-08 -0.03265765383 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.06575855243 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.07807829645 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -89,19 +89,19 @@ -2.720862526e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.51619989e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.844056774e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.008918019385 0.05706096004 0.0008511168593 0.05706096004 -0.05510328104 -2.067454991e-05 0.0008511168593 -2.067454991e-05 -0.03207514566 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.00965455235 0.03470598427 -0.0001773012231 0.03470598427 -0.02287339477 0.0001926194879 -0.0001773012231 0.0001926194879 -0.02345193843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02454286647 0.03775253602 -3.624386829e-05 0.03775253602 -0.01866128088 -5.337745278e-05 -3.624386829e-05 -5.337745278e-05 -0.001594331122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00510031286 0.001335413551 3.740815465e-06 0.001335413551 -0.02692176236 3.061571374e-05 3.740815465e-06 3.061571374e-05 0.0006900079696 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007098288772 0.001481153287 6.005484464e-07 0.001481153287 0.003114292002 1.022524084e-06 6.005484464e-07 1.022524084e-06 0.000121276305 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003741543185 0.0007983349147 8.474783516e-07 0.0007983349147 0.0007763328323 -6.824910425e-07 8.474783516e-07 -6.824910425e-07 -0.0001766024349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001808119231 -6.605285676e-05 -1.478273663e-06 -6.605285676e-05 -0.001630387904 -4.480914641e-06 -1.478273663e-06 -4.480914641e-06 6.721522305e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001027296192 0.0002344504471 2.135435184e-07 0.0002344504471 0.0005307945826 3.050794816e-07 2.135435184e-07 3.050794816e-07 7.595557744e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.629334554e-05 2.50207258e-06 2.47839999e-07 2.50207258e-06 7.951560775e-05 8.074266696e-08 2.47839999e-07 8.074266696e-08 -2.839317764e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.889225565e-05 -2.88327816e-05 -1.440336238e-07 -2.88327816e-05 -0.0002779453083 -7.153769075e-07 -1.440336238e-07 -7.153769075e-07 1.399263865e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.048241264e-05 4.810250822e-05 3.468254186e-07 4.810250822e-05 0.0001101952606 5.1665104e-07 3.468254186e-07 5.1665104e-07 4.277966533e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.377613886e-06 -4.062117449e-06 1.261470392e-07 -4.062117449e-06 3.233416308e-06 4.784153314e-08 1.261470392e-07 4.784153314e-08 -2.665529577e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.35641851e-06 -1.329336693e-06 6.146346164e-08 -1.329336693e-06 -3.65671827e-05 -6.795852224e-08 6.146346164e-08 -6.795852224e-08 2.823108928e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.008918019385 0.05706096004 0.0008511168593 0 0 0.05706096004 -0.05510328104 -2.067454991e-05 0 0 0.0008511168593 -2.067454991e-05 -0.03207514566 0 0 0 0 0 0 0 0 0 0 0 0 +-0.00965455235 0.03470598427 -0.0001773012231 0 0 0.03470598427 -0.02287339477 0.0001926194879 0 0 -0.0001773012231 0.0001926194879 -0.02345193843 0 0 0 0 0 0 0 0 0 0 0 0 +0.02454286647 0.03775253602 -3.624386829e-05 0 0 0.03775253602 -0.01866128088 -5.337745278e-05 0 0 -3.624386829e-05 -5.337745278e-05 -0.001594331122 0 0 0 0 0 0 0 0 0 0 0 0 +0.00510031286 0.001335413551 3.740815465e-06 0 0 0.001335413551 -0.02692176236 3.061571374e-05 0 0 3.740815465e-06 3.061571374e-05 0.0006900079696 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007098288772 0.001481153287 6.005484464e-07 0 0 0.001481153287 0.003114292002 1.022524084e-06 0 0 6.005484464e-07 1.022524084e-06 0.000121276305 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003741543185 0.0007983349147 8.474783516e-07 0 0 0.0007983349147 0.0007763328323 -6.824910425e-07 0 0 8.474783516e-07 -6.824910425e-07 -0.0001766024349 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001808119231 -6.605285676e-05 -1.478273663e-06 0 0 -6.605285676e-05 -0.001630387904 -4.480914641e-06 0 0 -1.478273663e-06 -4.480914641e-06 6.721522305e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001027296192 0.0002344504471 2.135435184e-07 0 0 0.0002344504471 0.0005307945826 3.050794816e-07 0 0 2.135435184e-07 3.050794816e-07 7.595557744e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.629334554e-05 2.50207258e-06 2.47839999e-07 0 0 2.50207258e-06 7.951560775e-05 8.074266696e-08 0 0 2.47839999e-07 8.074266696e-08 -2.839317764e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.889225565e-05 -2.88327816e-05 -1.440336238e-07 0 0 -2.88327816e-05 -0.0002779453083 -7.153769075e-07 0 0 -1.440336238e-07 -7.153769075e-07 1.399263865e-05 0 0 0 0 0 0 0 0 0 0 0 0 +2.048241264e-05 4.810250822e-05 3.468254186e-07 0 0 4.810250822e-05 0.0001101952606 5.1665104e-07 0 0 3.468254186e-07 5.1665104e-07 4.277966533e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-6.377613886e-06 -4.062117449e-06 1.261470392e-07 0 0 -4.062117449e-06 3.233416308e-06 4.784153314e-08 0 0 1.261470392e-07 4.784153314e-08 -2.665529577e-06 0 0 0 0 0 0 0 0 0 0 0 0 +4.35641851e-06 -1.329336693e-06 6.146346164e-08 0 0 -1.329336693e-06 -3.65671827e-05 -6.795852224e-08 0 0 6.146346164e-08 -6.795852224e-08 2.823108928e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.1111284531 0.03247959817 -0.0003841152158 0.01588239556 -0.0003660883163 0.03247959817 -0.004612183861 -0.0003595179473 0.07301010585 0.001045233103 -0.0003841152158 -0.0003595179473 0.03268548893 -1.147364555e-05 0.1085359265 0.01588239556 0.07301010585 -1.147364555e-05 -0.02858016411 2.264217969e-05 -0.0003660883163 0.001045233103 0.1085359265 2.264217969e-05 -0.0401474754 0.04853768832 0.01104310377 0.0005188627155 -0.005392825435 5.202355294e-05 0.01104310377 -0.08084182988 2.180165771e-05 -0.002534039487 -0.0007364716035 0.0005188627155 2.180165771e-05 0.01663865402 -0.0004752262491 0.03045450094 -0.005392825435 -0.002534039487 -0.0004752262491 -0.01478453185 0.0002411715639 5.202355294e-05 -0.0007364716035 0.03045450094 0.0002411715639 -0.04614978251 -0.001706539775 -0.006939978249 3.610171433e-05 0.002179195337 3.441499577e-05 -0.006939978249 0.006414033432 3.671981368e-05 0.02258882724 -0.0001419598222 3.610171433e-05 3.671981368e-05 0.002503612813 -1.194453495e-05 0.0003048167721 0.002179195337 0.02258882724 -1.194453495e-05 0.006926081586 -7.566241747e-05 3.441499577e-05 -0.0001419598222 0.0003048167721 -7.566241747e-05 -0.009869400683 @@ -128,19 +128,19 @@ -4.694837486e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.510406419e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.155512284e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.009496959013 -0.0302211032 -0.04926943739 -0.0302211032 -0.04158865478 -0.009400459357 -0.04926943739 -0.009400459357 -0.05178772727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01989730206 -0.01361336322 -0.02495998163 -0.01361336322 -0.02729751069 0.001829510018 -0.02495998163 0.001829510018 -0.02687074433 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02655050699 -0.02015192875 -0.03641585039 -0.02015192875 -0.005590189283 -0.003649139717 -0.03641585039 -0.003649139717 -0.009623860091 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.008740264093 -0.001841398339 -0.003314677303 -0.001841398339 -0.006791231032 -0.01365001483 -0.003314677303 -0.01365001483 -0.02367441665 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.397675945e-05 -3.99699346e-05 -5.309244424e-05 -3.99699346e-05 3.850798765e-05 -8.424056937e-07 -5.309244424e-05 -8.424056937e-07 -6.802565003e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004362124368 -0.0004552357777 -0.0008316019364 -0.0004552357777 0.0001467481358 0.0006628946644 -0.0008316019364 0.0006628946644 0.001011835818 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003847112582 -8.791461636e-05 -0.0001621149778 -8.791461636e-05 -0.0002782215267 -0.0006495618405 -0.0001621149778 -0.0006495618405 -0.00105303467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.893212414e-05 -5.174928929e-05 -8.96177383e-05 -5.174928929e-05 5.780889456e-05 0.0001049972029 -8.96177383e-05 0.0001049972029 0.0001800925294 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.313991459e-05 6.605383672e-06 1.224949969e-05 6.605383672e-06 -1.301166559e-05 2.799992476e-05 1.224949969e-05 2.799992476e-05 2.285636872e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.046224724e-05 -1.114640972e-05 -2.00008788e-05 -1.114640972e-05 -2.893977482e-05 -8.8282037e-05 -2.00008788e-05 -8.8282037e-05 -0.0001339833789 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.828233088e-06 -1.622346681e-05 -2.629804822e-05 -1.622346681e-05 2.374789965e-05 4.07323708e-05 -2.629804822e-05 4.07323708e-05 6.854882336e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.932336825e-06 6.399707381e-06 1.175087007e-05 6.399707381e-06 -8.825427345e-06 -1.174026676e-05 1.175087007e-05 -1.174026676e-05 -2.243597715e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.018366568e-05 -4.151723689e-06 -6.88664335e-06 -4.151723689e-06 -4.798539685e-07 -8.708339862e-06 -6.88664335e-06 -8.708339862e-06 -1.113540995e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.009496959013 -0.0302211032 -0.04926943739 0 0 -0.0302211032 -0.04158865478 -0.009400459357 0 0 -0.04926943739 -0.009400459357 -0.05178772727 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01989730206 -0.01361336322 -0.02495998163 0 0 -0.01361336322 -0.02729751069 0.001829510018 0 0 -0.02495998163 0.001829510018 -0.02687074433 0 0 0 0 0 0 0 0 0 0 0 0 +0.02655050699 -0.02015192875 -0.03641585039 0 0 -0.02015192875 -0.005590189283 -0.003649139717 0 0 -0.03641585039 -0.003649139717 -0.009623860091 0 0 0 0 0 0 0 0 0 0 0 0 +0.008740264093 -0.001841398339 -0.003314677303 0 0 -0.001841398339 -0.006791231032 -0.01365001483 0 0 -0.003314677303 -0.01365001483 -0.02367441665 0 0 0 0 0 0 0 0 0 0 0 0 +4.397675945e-05 -3.99699346e-05 -5.309244424e-05 0 0 -3.99699346e-05 3.850798765e-05 -8.424056937e-07 0 0 -5.309244424e-05 -8.424056937e-07 -6.802565003e-06 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004362124368 -0.0004552357777 -0.0008316019364 0 0 -0.0004552357777 0.0001467481358 0.0006628946644 0 0 -0.0008316019364 0.0006628946644 0.001011835818 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003847112582 -8.791461636e-05 -0.0001621149778 0 0 -8.791461636e-05 -0.0002782215267 -0.0006495618405 0 0 -0.0001621149778 -0.0006495618405 -0.00105303467 0 0 0 0 0 0 0 0 0 0 0 0 +3.893212414e-05 -5.174928929e-05 -8.96177383e-05 0 0 -5.174928929e-05 5.780889456e-05 0.0001049972029 0 0 -8.96177383e-05 0.0001049972029 0.0001800925294 0 0 0 0 0 0 0 0 0 0 0 0 +-4.313991459e-05 6.605383672e-06 1.224949969e-05 0 0 6.605383672e-06 -1.301166559e-05 2.799992476e-05 0 0 1.224949969e-05 2.799992476e-05 2.285636872e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.046224724e-05 -1.114640972e-05 -2.00008788e-05 0 0 -1.114640972e-05 -2.893977482e-05 -8.8282037e-05 0 0 -2.00008788e-05 -8.8282037e-05 -0.0001339833789 0 0 0 0 0 0 0 0 0 0 0 0 +7.828233088e-06 -1.622346681e-05 -2.629804822e-05 0 0 -1.622346681e-05 2.374789965e-05 4.07323708e-05 0 0 -2.629804822e-05 4.07323708e-05 6.854882336e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.932336825e-06 6.399707381e-06 1.175087007e-05 0 0 6.399707381e-06 -8.825427345e-06 -1.174026676e-05 0 0 1.175087007e-05 -1.174026676e-05 -2.243597715e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.018366568e-05 -4.151723689e-06 -6.88664335e-06 0 0 -4.151723689e-06 -4.798539685e-07 -8.708339862e-06 0 0 -6.88664335e-06 -8.708339862e-06 -1.113540995e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.1208870674 -0.0107489489 -0.02605727769 -0.007800173008 0.01324538443 -0.0107489489 0.02998626915 -0.0156097345 -0.06553747996 -0.08109712255 -0.02605727769 -0.0156097345 0.009592657159 0.07780060147 -0.02713495539 -0.007800173008 -0.06553747996 0.07780060147 -0.03722428018 -0.006111226978 0.01324538443 -0.08109712255 -0.02713495539 -0.006111226978 -0.03095638096 0.05822704138 -0.004414480972 -0.006383231871 0.003361133092 -0.004946676834 -0.004414480972 -0.005524425981 -0.04703443956 -0.02518482311 -0.01255474446 -0.006383231871 -0.04703443956 -0.06434260536 0.01408333117 0.0109410697 0.003361133092 -0.02518482311 0.01408333117 -0.0420548866 -0.01395000283 -0.004946676834 -0.01255474446 0.0109410697 -0.01395000283 -0.02586079309 0.00221150016 0.003758941973 0.007092702426 0.0005607995045 -0.0008427969262 0.003758941973 0.001808789556 -0.003366957752 0.004907229375 -0.008585990016 0.007092702426 -0.003366957752 -0.002496646445 0.009826463454 -0.01482435229 0.0005607995045 0.004907229375 0.009826463454 -0.007094235275 -0.01021925678 -0.0008427969262 -0.008585990016 -0.01482435229 -0.01021925678 0.002806562539 @@ -167,19 +167,19 @@ -6.223748285e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.601166934e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.119021718e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.009599152713 -0.03029335386 0.05116053389 -0.03029335386 -0.04156887354 0.008537365194 0.05116053389 0.008537365194 -0.05084737843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.02495996118 -0.01208307482 0.02186830692 -0.01208307482 -0.02926208314 -0.002047754565 0.02186830692 -0.002047754565 -0.0279645474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02614311653 -0.02126443864 0.03835504507 -0.02126443864 -0.005185503041 0.001163872484 0.03835504507 0.001163872484 -0.006324422514 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.01107902223 -0.003202245814 0.005774864217 -0.003202245814 -0.006900894732 0.01380340902 0.005774864217 0.01380340902 -0.02392903476 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002612470159 0.000346152551 -0.0006362907382 0.000346152551 -0.0005637150233 0.0009513124809 -0.0006362907382 0.0009513124809 -0.00177620843 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003722329973 -0.0004052485948 0.0007448535551 -0.0004052485948 0.0001493873404 -0.0006579467379 0.0007448535551 -0.0006579467379 0.001005887238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0005134158357 -0.000210727323 0.0003778685122 -0.000210727323 -0.0001729885684 0.0004681379833 0.0003778685122 0.0004681379833 -0.0007374890711 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.195711786e-07 -1.180705407e-05 1.906810882e-05 -1.180705407e-05 -8.073439963e-07 -1.51394722e-05 1.906810882e-05 -1.51394722e-05 1.247496696e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.724552941e-05 2.210635392e-05 -3.938065897e-05 2.210635392e-05 -3.079449907e-05 1.385490242e-05 -3.938065897e-05 1.385490242e-05 -4.591272518e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.767109546e-05 -3.33659113e-05 5.899373362e-05 -3.33659113e-05 -9.350838207e-07 4.165948546e-05 5.899373362e-05 4.165948546e-05 -5.119204212e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.48931001e-07 -9.055762277e-06 1.451999866e-05 -9.055762277e-06 1.456396156e-05 -3.053972574e-05 1.451999866e-05 -3.053972574e-05 4.875577261e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.731522429e-06 9.059703938e-06 -1.629792128e-05 9.059703938e-06 -1.323288037e-05 2.192229962e-05 -1.629792128e-05 2.192229962e-05 -3.934422414e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.271661606e-05 -7.52568054e-06 1.297713367e-05 -7.52568054e-06 4.388992792e-06 6.028134515e-07 1.297713367e-05 6.028134515e-07 3.393748262e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.009599152713 -0.03029335386 0.05116053389 0 0 -0.03029335386 -0.04156887354 0.008537365194 0 0 0.05116053389 0.008537365194 -0.05084737843 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02495996118 -0.01208307482 0.02186830692 0 0 -0.01208307482 -0.02926208314 -0.002047754565 0 0 0.02186830692 -0.002047754565 -0.0279645474 0 0 0 0 0 0 0 0 0 0 0 0 +0.02614311653 -0.02126443864 0.03835504507 0 0 -0.02126443864 -0.005185503041 0.001163872484 0 0 0.03835504507 0.001163872484 -0.006324422514 0 0 0 0 0 0 0 0 0 0 0 0 +0.01107902223 -0.003202245814 0.005774864217 0 0 -0.003202245814 -0.006900894732 0.01380340902 0 0 0.005774864217 0.01380340902 -0.02392903476 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002612470159 0.000346152551 -0.0006362907382 0 0 0.000346152551 -0.0005637150233 0.0009513124809 0 0 -0.0006362907382 0.0009513124809 -0.00177620843 0 0 0 0 0 0 0 0 0 0 0 0 +0.0003722329973 -0.0004052485948 0.0007448535551 0 0 -0.0004052485948 0.0001493873404 -0.0006579467379 0 0 0.0007448535551 -0.0006579467379 0.001005887238 0 0 0 0 0 0 0 0 0 0 0 0 +0.0005134158357 -0.000210727323 0.0003778685122 0 0 -0.000210727323 -0.0001729885684 0.0004681379833 0 0 0.0003778685122 0.0004681379833 -0.0007374890711 0 0 0 0 0 0 0 0 0 0 0 0 +-6.195711786e-07 -1.180705407e-05 1.906810882e-05 0 0 -1.180705407e-05 -8.073439963e-07 -1.51394722e-05 0 0 1.906810882e-05 -1.51394722e-05 1.247496696e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.724552941e-05 2.210635392e-05 -3.938065897e-05 0 0 2.210635392e-05 -3.079449907e-05 1.385490242e-05 0 0 -3.938065897e-05 1.385490242e-05 -4.591272518e-05 0 0 0 0 0 0 0 0 0 0 0 0 +6.767109546e-05 -3.33659113e-05 5.899373362e-05 0 0 -3.33659113e-05 -9.350838207e-07 4.165948546e-05 0 0 5.899373362e-05 4.165948546e-05 -5.119204212e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.48931001e-07 -9.055762277e-06 1.451999866e-05 0 0 -9.055762277e-06 1.456396156e-05 -3.053972574e-05 0 0 1.451999866e-05 -3.053972574e-05 4.875577261e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.731522429e-06 9.059703938e-06 -1.629792128e-05 0 0 9.059703938e-06 -1.323288037e-05 2.192229962e-05 0 0 -1.629792128e-05 2.192229962e-05 -3.934422414e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.271661606e-05 -7.52568054e-06 1.297713367e-05 0 0 -7.52568054e-06 4.388992792e-06 6.028134515e-07 0 0 1.297713367e-05 6.028134515e-07 3.393748262e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.1247628055 -0.01088076106 0.02564237605 -0.00702029227 -0.01262416124 -0.01088076106 0.03038974215 0.01493337167 -0.06683344323 0.08199094225 0.02564237605 0.01493337167 0.00995829081 -0.07972522998 -0.02623410999 -0.00702029227 -0.06683344323 -0.07972522998 -0.03585155807 0.006212633005 -0.01262416124 0.08199094225 -0.02623410999 0.006212633005 -0.02949486283 0.06371202979 -0.004821105097 0.008347918643 0.003525147467 0.005140824086 -0.004821105097 -0.00497009875 0.0487381064 -0.02780363841 0.01423887502 0.008347918643 0.0487381064 -0.06612874764 -0.01440616592 0.01214520304 0.003525147467 -0.02780363841 -0.01440616592 -0.0423726678 0.01370260005 0.005140824086 0.01423887502 0.01214520304 0.01370260005 -0.02715122059 0.004953874942 0.00387935847 -0.007233769535 0.001632931582 0.002614128384 0.00387935847 0.0007012809263 0.006823846049 0.003822236458 0.008038875324 -0.007233769535 0.006823846049 -0.007831071915 -0.008989693584 -0.01312372753 0.001632931582 0.003822236458 -0.008989693584 -0.008081889793 0.01121413725 0.002614128384 0.008038875324 -0.01312372753 0.01121413725 0.002940345292 @@ -192,4 +192,4 @@ 7.825426972e-06 1.922359525e-05 -3.286835883e-05 1.389309205e-05 2.373909654e-05 1.922359525e-05 3.003664942e-05 -5.140947174e-05 2.285828862e-05 5.648431588e-05 -3.286835883e-05 -5.140947174e-05 9.306684092e-05 -5.864806569e-05 -8.938860856e-05 1.389309205e-05 2.285828862e-05 -5.864806569e-05 4.48922894e-05 3.661221961e-05 2.373909654e-05 5.648431588e-05 -8.938860856e-05 3.661221961e-05 8.382893942e-05 8.901831766e-06 4.426337568e-06 -7.135194354e-06 3.325172251e-06 5.614458309e-06 4.426337568e-06 -2.770857709e-06 7.417886602e-06 -2.599095142e-06 3.173199915e-06 -7.135194354e-06 7.417886602e-06 -1.237602215e-05 -2.255429469e-06 -9.390049064e-07 3.325172251e-06 -2.599095142e-06 -2.255429469e-06 -1.110481458e-05 8.919536684e-06 5.614458309e-06 3.173199915e-06 -9.390049064e-07 8.919536684e-06 -1.115055325e-06 -2.056155688e-06 -7.821322241e-06 1.489082681e-05 -1.219916941e-05 -1.984366128e-05 -7.821322241e-06 8.709212279e-07 2.711973702e-06 -1.18960212e-05 -2.606006997e-06 1.489082681e-05 2.711973702e-06 -2.614406524e-06 4.124859672e-06 1.535991695e-05 -1.219916941e-05 -1.18960212e-05 4.124859672e-06 -7.834204412e-06 -2.161301832e-05 -1.984366128e-05 -2.606006997e-06 1.535991695e-05 -2.161301832e-05 -3.011310778e-05 -7.214552373e-06 2.579738184e-06 -3.916194347e-06 2.808477652e-06 4.786029596e-06 2.579738184e-06 5.261333071e-06 -7.089262439e-06 -1.204575022e-07 1.142192099e-05 -3.916194347e-06 -7.089262439e-06 1.384844105e-05 -1.136182994e-05 -1.315231087e-05 2.808477652e-06 -1.204575022e-07 -1.136182994e-05 7.236509384e-06 5.682393516e-06 4.786029596e-06 1.142192099e-05 -1.315231087e-05 5.682393516e-06 1.32835301e-05 +7.214552373e-06 2.579738184e-06 -3.916194347e-06 2.808477652e-06 4.786029596e-06 2.579738184e-06 5.261333071e-06 -7.089262439e-06 -1.204575023e-07 1.142192099e-05 -3.916194347e-06 -7.089262439e-06 1.384844105e-05 -1.136182994e-05 -1.315231087e-05 2.808477652e-06 -1.204575023e-07 -1.136182994e-05 7.236509384e-06 5.682393516e-06 4.786029596e-06 1.142192099e-05 -1.315231087e-05 5.682393516e-06 1.32835301e-05 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_1_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_1_ref.dat index 1d85f8c8f5..a10b9dcff2 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_1_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_1_ref.dat @@ -11,19 +11,19 @@ 4.073986479e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.18315603e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.776799545e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1881182416 0.0009717198495 -6.920644982e-05 0.0009717198495 -0.002135927889 -1.546246364e-05 -6.920644982e-05 -1.546246364e-05 -0.002044851 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01940742404 -0.002529943485 -0.0003587365025 -0.002529943485 -0.007171429426 -1.015937888e-05 -0.0003587365025 -1.015937888e-05 -0.007211719551 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.1387632251 -0.002723070393 -0.0006779003816 -0.002723070393 -0.005880576622 2.024564476e-05 -0.0006779003816 2.024564476e-05 -0.006095082464 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.08423725993 -0.001169377698 -0.0004105918617 -0.001169377698 -0.002147699906 1.783846867e-05 -0.0004105918617 1.783846867e-05 -0.002282558341 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.02781694876 -0.0003998502436 -0.0001042398043 -0.0003998502436 -0.0005121504371 3.841757578e-07 -0.0001042398043 3.841757578e-07 -0.000516298183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.003282223878 -2.762324163e-05 -1.058517282e-05 -2.762324163e-05 -5.128842432e-07 -1.0716482e-07 -1.058517282e-05 -1.0716482e-07 -4.386673532e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003761371018 7.244386484e-05 9.0086934e-06 7.244386484e-05 8.714845782e-05 6.697745986e-07 9.0086934e-06 6.697745986e-07 8.37231881e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.002674306515 3.97329399e-05 1.076940933e-05 3.97329399e-05 2.639679391e-05 1.603273812e-07 1.076940933e-05 1.603273812e-07 2.648253692e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001245367695 1.554963818e-05 4.567481585e-06 1.554963818e-05 9.483017855e-06 4.444537793e-08 4.567481585e-06 4.444537793e-08 9.534366933e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000130718942 -1.524295117e-06 -7.898822488e-07 -1.524295117e-06 -1.865833479e-06 1.273929896e-08 -7.898822488e-07 1.273929896e-08 -2.010019481e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002736322537 -5.127651151e-06 -9.76099437e-07 -5.127651151e-06 -2.616103928e-07 -1.809427152e-08 -9.76099437e-07 -1.809427152e-08 -1.77079129e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001113057893 -1.373073593e-06 -5.087335729e-07 -1.373073593e-06 -6.269300168e-07 -2.920818494e-09 -5.087335729e-07 -2.920818494e-09 -6.356523227e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.710349104e-06 -1.929944504e-07 -6.465246248e-08 -1.929944504e-07 3.549982666e-07 2.487423914e-09 -6.465246248e-08 2.487423914e-09 3.436059282e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.1881182416 0.0009717198495 -6.920644982e-05 0 0 0.0009717198495 -0.002135927889 -1.546246364e-05 0 0 -6.920644982e-05 -1.546246364e-05 -0.002044851 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01940742404 -0.002529943485 -0.0003587365025 0 0 -0.002529943485 -0.007171429426 -1.015937888e-05 0 0 -0.0003587365025 -1.015937888e-05 -0.007211719551 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1387632251 -0.002723070393 -0.0006779003816 0 0 -0.002723070393 -0.005880576622 2.024564476e-05 0 0 -0.0006779003816 2.024564476e-05 -0.006095082464 0 0 0 0 0 0 0 0 0 0 0 0 +-0.08423725993 -0.001169377698 -0.0004105918617 0 0 -0.001169377698 -0.002147699906 1.783846867e-05 0 0 -0.0004105918617 1.783846867e-05 -0.002282558341 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02781694876 -0.0003998502436 -0.0001042398043 0 0 -0.0003998502436 -0.0005121504371 3.841757578e-07 0 0 -0.0001042398043 3.841757578e-07 -0.000516298183 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003282223878 -2.762324163e-05 -1.058517282e-05 0 0 -2.762324163e-05 -5.128842432e-07 -1.0716482e-07 0 0 -1.058517282e-05 -1.0716482e-07 -4.386673532e-07 0 0 0 0 0 0 0 0 0 0 0 0 +0.003761371018 7.244386484e-05 9.0086934e-06 0 0 7.244386484e-05 8.714845782e-05 6.697745986e-07 0 0 9.0086934e-06 6.697745986e-07 8.37231881e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.002674306515 3.97329399e-05 1.076940933e-05 0 0 3.97329399e-05 2.639679391e-05 1.603273812e-07 0 0 1.076940933e-05 1.603273812e-07 2.648253692e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.001245367695 1.554963818e-05 4.567481585e-06 0 0 1.554963818e-05 9.483017855e-06 4.444537793e-08 0 0 4.567481585e-06 4.444537793e-08 9.534366933e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000130718942 -1.524295117e-06 -7.898822488e-07 0 0 -1.524295117e-06 -1.865833479e-06 1.273929896e-08 0 0 -7.898822488e-07 1.273929896e-08 -2.010019481e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002736322537 -5.127651151e-06 -9.76099437e-07 0 0 -5.127651151e-06 -2.616103928e-07 -1.809427152e-08 0 0 -9.76099437e-07 -1.809427152e-08 -1.77079129e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001113057893 -1.373073593e-06 -5.087335729e-07 0 0 -1.373073593e-06 -6.269300168e-07 -2.920818494e-09 0 0 -5.087335729e-07 -2.920818494e-09 -6.356523227e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-8.710349104e-06 -1.929944504e-07 -6.465246248e-08 0 0 -1.929944504e-07 3.549982666e-07 2.487423914e-09 0 0 -6.465246248e-08 2.487423914e-09 3.436059282e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.05429443095 0.001221943013 0.0001883808199 -0.0001264364815 -0.0001174319222 0.001221943013 -0.0005435520234 -3.836030702e-06 -0.0004316696097 4.95805566e-06 0.0001883808199 -3.836030702e-06 -0.0005632738343 -6.695958918e-06 0.0003887347475 -0.0001264364815 -0.0004316696097 -6.695958918e-06 1.199233103e-05 1.646171857e-06 -0.0001174319222 4.95805566e-06 0.0003887347475 1.646171857e-06 -1.066919138e-05 0.04545233648 0.0008386191806 4.864444212e-05 3.578158483e-05 -1.643926838e-06 0.0008386191806 9.113771601e-05 -7.710698747e-08 8.482082156e-05 2.000080842e-06 4.864444212e-05 -7.710698747e-08 9.859487897e-05 -1.947326334e-06 -5.324342542e-05 3.578158483e-05 8.482082156e-05 -1.947326334e-06 4.308171387e-05 6.046218286e-06 -1.643926838e-06 2.000080842e-06 -5.324342542e-05 6.046218286e-06 -4.087298404e-05 -0.001154256611 -0.0005051543125 -7.597340874e-05 -4.453193515e-05 5.8059303e-06 -0.0005051543125 0.000682099328 -1.144013743e-05 0.0005767605335 6.49428464e-06 -7.597340874e-05 -1.144013743e-05 0.0008309884951 -9.516312331e-06 -0.0005733738569 -4.453193515e-05 0.0005767605335 -9.516312331e-06 3.93010253e-05 5.701149231e-06 5.8059303e-06 6.49428464e-06 -0.0005733738569 5.701149231e-06 -4.060684165e-05 @@ -34,9 +34,9 @@ -0.0001598387267 -7.449095173e-06 -1.418646756e-07 -2.510815567e-06 -1.135394449e-06 -7.449095173e-06 -7.271051387e-07 -1.255905944e-07 -3.907070081e-07 2.824526261e-08 -1.418646756e-07 -1.255905944e-07 1.670004419e-07 -1.033896718e-07 -1.128668091e-07 -2.510815567e-06 -3.907070081e-07 -1.033896718e-07 -1.373847751e-08 -1.609621836e-09 -1.135394449e-06 2.824526261e-08 -1.128668091e-07 -1.609621836e-09 -4.404866752e-09 4.555766828e-05 2.006411153e-06 2.487689858e-07 2.687241757e-07 -4.1543216e-07 2.006411153e-06 -1.066589435e-06 -1.550404763e-08 -8.798287142e-07 3.595586626e-09 2.487689858e-07 -1.550404763e-08 -1.171191671e-06 -1.738061974e-08 7.862934378e-07 2.687241757e-07 -8.798287142e-07 -1.738061974e-08 -3.778105706e-08 -5.377563568e-09 -4.1543216e-07 3.595586626e-09 7.862934378e-07 -5.377563568e-09 3.48467072e-08 1.545074947e-05 1.066481252e-06 -1.260497528e-07 7.383614116e-07 2.372666289e-07 1.066481252e-06 9.399794354e-08 1.03093266e-08 5.32787399e-08 -1.778257224e-10 -1.260497528e-07 1.03093266e-08 -4.368195207e-08 1.269522151e-08 3.204135426e-08 7.383614116e-07 5.32787399e-08 1.269522151e-08 1.191407558e-09 1.501213584e-10 2.372666289e-07 -1.778257224e-10 3.204135426e-08 1.501213584e-10 8.480937809e-10 -1.166474317e-06 -2.693891374e-08 -2.795036473e-08 4.612303371e-08 1.978208585e-08 -2.693891374e-08 1.967642899e-08 -2.577255075e-09 2.075311978e-08 1.065518457e-09 -2.795036473e-08 -2.577255075e-09 3.828979646e-08 -1.819661659e-09 -2.709929956e-08 4.612303371e-08 2.075311978e-08 -1.819661659e-09 4.371245779e-10 5.523278714e-11 1.978208585e-08 1.065518457e-09 -2.709929956e-08 5.523278714e-11 -6.356143943e-10 +1.166474317e-06 -2.693891375e-08 -2.795036473e-08 4.612303371e-08 1.978208585e-08 -2.693891375e-08 1.967642899e-08 -2.577255075e-09 2.075311978e-08 1.065518457e-09 -2.795036473e-08 -2.577255075e-09 3.828979646e-08 -1.819661659e-09 -2.709929956e-08 4.612303371e-08 2.075311978e-08 -1.819661659e-09 4.371245779e-10 5.523278714e-11 1.978208585e-08 1.065518457e-09 -2.709929956e-08 5.523278714e-11 -6.356143943e-10 1.1757683e-06 5.995496131e-09 4.129582241e-08 -7.75060479e-09 -5.590842201e-08 5.995496131e-09 -5.433965893e-08 -6.792164546e-10 -4.096808868e-08 -4.478596468e-10 4.129582241e-08 -6.792164546e-10 -5.091909608e-08 -1.383996463e-09 3.274077302e-08 -7.75060479e-09 -4.096808868e-08 -1.383996463e-09 -2.509819496e-09 -3.520766188e-10 -5.590842201e-08 -4.478596468e-10 3.274077302e-08 -3.520766188e-10 2.135877399e-09 --4.17773001e-06 -1.215825914e-07 -2.97563282e-08 6.100143615e-08 2.405057848e-08 -1.215825914e-07 4.224727357e-08 1.123662956e-09 3.757910224e-08 -3.6946019e-10 -2.97563282e-08 1.123662956e-09 3.241885981e-08 1.934588493e-09 -2.257303076e-08 6.100143615e-08 3.757910224e-08 1.934588493e-09 9.113624486e-10 1.252326062e-10 2.405057848e-08 -3.6946019e-10 -2.257303076e-08 1.252326062e-10 -5.625509722e-10 +-4.17773001e-06 -1.215825914e-07 -2.97563282e-08 6.100143615e-08 2.405057848e-08 -1.215825914e-07 4.224727357e-08 1.123662956e-09 3.757910223e-08 -3.6946019e-10 -2.97563282e-08 1.123662956e-09 3.241885981e-08 1.934588493e-09 -2.257303076e-08 6.100143615e-08 3.757910223e-08 1.934588493e-09 9.113624486e-10 1.252326062e-10 2.405057848e-08 -3.6946019e-10 -2.257303076e-08 1.252326062e-10 -5.625509721e-10 -0.2193709467 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04936564797 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.2459977683 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -50,19 +50,19 @@ -0.0002381140811 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0003283926605 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.193586422e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09097974953 -0.0009734825821 0.002058240537 -0.0009734825821 -0.2550089144 -0.002370978014 0.002058240537 -0.002370978014 -0.245043908 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.1273212577 0.01197802511 -0.00259919224 0.01197802511 -0.2260821649 0.001376510349 -0.00259919224 0.001376510349 -0.2399171775 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.1406053481 0.003622039363 2.379960381e-05 0.003622039363 -0.03606803827 0.0006169270973 2.379960381e-05 0.0006169270973 -0.03958428264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03134398149 -0.001715703929 -3.821031741e-05 -0.001715703929 0.0001979487657 -4.503526026e-05 -3.821031741e-05 -4.503526026e-05 0.0005937000385 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03776203938 -0.0007142209824 -0.0001691332421 -0.0007142209824 -0.001242484395 -5.191852236e-05 -0.0001691332421 -5.191852236e-05 -0.0008867244039 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.01047627827 -0.0002515240699 -1.357662051e-05 -0.0002515240699 0.0004553667722 1.76166741e-05 -1.357662051e-05 1.76166741e-05 0.000361443725 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005498779257 0.000162918892 -8.039125522e-06 0.000162918892 9.46137522e-05 3.326460027e-06 -8.039125522e-06 3.326460027e-06 6.070342771e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.953557611e-05 -6.506221579e-06 5.451670609e-06 -6.506221579e-06 -0.0003350143655 -3.46347865e-06 5.451670609e-06 -3.46347865e-06 -0.0003296585554 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.002152834414 -8.965363016e-05 4.43193091e-06 -8.965363016e-05 0.0001587099108 -2.210317399e-06 4.43193091e-06 -2.210317399e-06 0.0001868179854 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001015320838 4.650824151e-05 -8.615694616e-06 4.650824151e-05 6.819060643e-05 2.781964919e-06 -8.615694616e-06 2.781964919e-06 5.170149487e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.735362605e-05 1.001630961e-05 -1.932620957e-06 1.001630961e-05 -2.584696187e-05 1.411874868e-06 -1.932620957e-06 1.411874868e-06 -3.736256168e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000157075539 -5.005923804e-06 4.412575293e-07 -5.005923804e-06 1.444514556e-05 -4.438774634e-07 4.412575293e-07 -4.438774634e-07 1.487498947e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001719785453 2.978543811e-06 -3.014876177e-07 2.978543811e-06 1.022386758e-05 -2.822380907e-07 -3.014876177e-07 -2.822380907e-07 1.34035806e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.09097974953 -0.0009734825821 0.002058240537 0 0 -0.0009734825821 -0.2550089144 -0.002370978014 0 0 0.002058240537 -0.002370978014 -0.245043908 0 0 0 0 0 0 0 0 0 0 0 0 +-0.1273212577 0.01197802511 -0.00259919224 0 0 0.01197802511 -0.2260821649 0.001376510349 0 0 -0.00259919224 0.001376510349 -0.2399171775 0 0 0 0 0 0 0 0 0 0 0 0 +0.1406053481 0.003622039363 2.379960381e-05 0 0 0.003622039363 -0.03606803827 0.0006169270973 0 0 2.379960381e-05 0.0006169270973 -0.03958428264 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03134398149 -0.001715703929 -3.821031741e-05 0 0 -0.001715703929 0.0001979487657 -4.503526026e-05 0 0 -3.821031741e-05 -4.503526026e-05 0.0005937000385 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03776203938 -0.0007142209824 -0.0001691332421 0 0 -0.0007142209824 -0.001242484395 -5.191852236e-05 0 0 -0.0001691332421 -5.191852236e-05 -0.0008867244039 0 0 0 0 0 0 0 0 0 0 0 0 +-0.01047627827 -0.0002515240699 -1.357662051e-05 0 0 -0.0002515240699 0.0004553667722 1.76166741e-05 0 0 -1.357662051e-05 1.76166741e-05 0.000361443725 0 0 0 0 0 0 0 0 0 0 0 0 +0.005498779257 0.000162918892 -8.039125522e-06 0 0 0.000162918892 9.46137522e-05 3.326460027e-06 0 0 -8.039125522e-06 3.326460027e-06 6.070342771e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-7.953557611e-05 -6.506221579e-06 5.451670609e-06 0 0 -6.506221579e-06 -0.0003350143655 -3.46347865e-06 0 0 5.451670609e-06 -3.46347865e-06 -0.0003296585554 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002152834414 -8.965363016e-05 4.43193091e-06 0 0 -8.965363016e-05 0.0001587099108 -2.210317399e-06 0 0 4.43193091e-06 -2.210317399e-06 0.0001868179854 0 0 0 0 0 0 0 0 0 0 0 0 +0.001015320838 4.650824151e-05 -8.615694616e-06 0 0 4.650824151e-05 6.819060643e-05 2.781964919e-06 0 0 -8.615694616e-06 2.781964919e-06 5.170149487e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.735362605e-05 1.001630961e-05 -1.932620957e-06 0 0 1.001630961e-05 -2.584696187e-05 1.411874868e-06 0 0 -1.932620957e-06 1.411874868e-06 -3.736256168e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000157075539 -5.005923804e-06 4.412575293e-07 0 0 -5.005923804e-06 1.444514556e-05 -4.438774634e-07 0 0 4.412575293e-07 -4.438774634e-07 1.487498947e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001719785453 2.978543811e-06 -3.014876177e-07 0 0 2.978543811e-06 1.022386758e-05 -2.822380907e-07 0 0 -3.014876177e-07 -2.822380907e-07 1.34035806e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.3424307944 0.007063550105 -0.000694341937 0.002063644735 0.0002099293292 0.007063550105 0.1939344195 0.0004827187806 -0.01391692921 0.000274815827 -0.000694341937 0.0004827187806 0.1888423926 -0.0003450247398 0.01143513237 0.002063644735 -0.01391692921 -0.0003450247398 -0.01842088661 8.440794233e-05 0.0002099293292 0.000274815827 0.01143513237 8.440794233e-05 -0.01118584392 -0.08027003474 0.005771090195 -0.0004741842345 0.003863799937 4.032190168e-05 0.005771090195 -0.1561022574 6.796650262e-05 -0.05349620273 -0.0005965343304 -0.0004741842345 6.796650262e-05 -0.1677226297 0.0007389372149 0.04512066014 0.003863799937 -0.05349620273 0.0007389372149 -0.01310345628 -0.0003338229653 4.032190168e-05 -0.0005965343304 0.04512066014 -0.0003338229653 -0.008451620953 0.01785180134 0.007141952707 -0.0007772457178 0.0009283718352 0.0002028836688 0.007141952707 -0.07213913687 0.001468182653 -0.006493396738 -0.0005241003191 -0.0007772457178 0.001468182653 -0.08277329906 0.0006475514467 0.004854886643 0.0009283718352 -0.006493396738 0.0006475514467 1.168666652e-06 -7.383368081e-05 0.0002028836688 -0.0005241003191 0.004854886643 -7.383368081e-05 0.0002130798636 @@ -73,7 +73,7 @@ 0.001428665518 6.989866215e-05 1.165541925e-05 8.380899987e-06 1.999504309e-08 6.989866215e-05 -0.000585353764 -1.435171076e-05 -0.0001214318179 3.364920071e-06 1.165541925e-05 -1.435171076e-05 -0.0005260888045 -4.313889576e-06 6.704710595e-05 8.380899987e-06 -0.0001214318179 -4.313889576e-06 -2.430338835e-05 9.911859924e-07 1.999504309e-08 3.364920071e-06 6.704710595e-05 9.911859924e-07 -6.263128578e-06 7.166636181e-05 -3.592450173e-05 -7.137985547e-07 -1.349775319e-05 -1.316561742e-06 -3.592450173e-05 0.0003902961829 9.301741157e-06 9.088943052e-05 -1.497162372e-06 -7.137985547e-07 9.301741157e-06 0.0003600162351 1.797444217e-06 -6.79726518e-05 -1.349775319e-05 9.088943052e-05 1.797444217e-06 1.670586241e-05 -4.258356211e-08 -1.316561742e-06 -1.497162372e-06 -6.79726518e-05 -4.258356211e-08 1.040073831e-05 -0.0003100236882 8.463834758e-06 -7.101039498e-06 7.372987718e-06 1.895895182e-06 8.463834758e-06 1.220759081e-05 2.534820287e-06 9.369816549e-06 -9.01806683e-07 -7.101039498e-06 2.534820287e-06 -5.146630072e-06 1.176788996e-06 -2.670327915e-06 7.372987718e-06 9.369816549e-06 1.176788996e-06 5.002590091e-06 -3.908528571e-07 1.895895182e-06 -9.01806683e-07 -2.670327915e-06 -3.908528571e-07 1.959146507e-06 --0.0001891830937 -2.312186748e-07 -2.373886704e-06 1.924297928e-06 2.076252856e-07 -2.312186748e-07 -5.969071128e-06 1.428992464e-06 -6.607370632e-06 -3.68687082e-07 -2.373886704e-06 1.428992464e-06 -2.234283556e-05 4.897749827e-07 9.5562277e-06 1.924297928e-06 -6.607370632e-06 4.897749827e-07 -2.995355753e-06 -1.279424892e-07 2.076252856e-07 -3.68687082e-07 9.5562277e-06 -1.279424892e-07 -2.949758747e-06 +-0.0001891830937 -2.312186747e-07 -2.373886704e-06 1.924297928e-06 2.076252856e-07 -2.312186747e-07 -5.969071128e-06 1.428992464e-06 -6.607370632e-06 -3.68687082e-07 -2.373886704e-06 1.428992464e-06 -2.234283556e-05 4.897749827e-07 9.5562277e-06 1.924297928e-06 -6.607370632e-06 4.897749827e-07 -2.995355753e-06 -1.279424892e-07 2.076252856e-07 -3.68687082e-07 9.5562277e-06 -1.279424892e-07 -2.949758747e-06 0.0001860639624 1.624414844e-06 1.280607379e-06 -1.344940507e-06 -2.795968582e-07 1.624414844e-06 5.144822638e-05 -6.700931447e-07 6.585135119e-06 4.362598419e-07 1.280607379e-06 -6.700931447e-07 5.631638848e-05 -5.398584662e-07 -7.054848246e-06 -1.344940507e-06 6.585135119e-06 -5.398584662e-07 -1.243598223e-06 2.232988642e-07 -2.795968582e-07 4.362598419e-07 -7.054848246e-06 2.232988642e-07 -3.407210817e-07 2.507124122e-05 1.933258138e-06 -9.051855652e-07 3.608025584e-07 3.301002187e-07 1.933258138e-06 2.341077513e-05 4.516440801e-07 6.618625766e-06 -8.047597883e-08 -9.051855652e-07 4.516440801e-07 2.420129712e-05 9.151603906e-08 -6.478767636e-06 3.608025584e-07 6.618625766e-06 9.151603906e-08 1.851202264e-06 -1.489093027e-08 3.301002187e-07 -8.047597883e-08 -6.478767636e-06 -1.489093027e-08 1.72589511e-06 -0.01622477953 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -89,19 +89,19 @@ 1.203315591e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.22358909e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.683717761e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04619882473 -0.03787645652 -6.852610221e-05 -0.03787645652 -0.02790723318 -6.471460287e-05 -6.852610221e-05 -6.471460287e-05 -0.001393022596 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.05099517618 -0.03093893433 -0.0002169621727 -0.03093893433 -0.008984511215 -0.0001722618438 -0.0002169621727 -0.0001722618438 -0.001054806897 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.676487587e-05 0.001654484482 -2.033658897e-06 0.001654484482 3.343228684e-07 8.672071643e-08 -2.033658897e-06 8.672071643e-08 4.275187817e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.003268461652 -0.003684672661 -8.653725299e-06 -0.003684672661 -0.004192106668 -8.741902904e-06 -8.653725299e-06 -8.741902904e-06 -3.666563135e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004552569899 0.0003278383051 -7.485040012e-07 0.0003278383051 0.0002041741022 -1.706222133e-07 -7.485040012e-07 -1.706222133e-07 5.824616337e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.837335972e-06 -0.0003735150248 -2.55279503e-06 -0.0003735150248 -0.0006406298063 -1.999118197e-06 -2.55279503e-06 -1.999118197e-06 9.042807412e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.260762309e-05 1.141227452e-05 8.187068242e-09 1.141227452e-05 2.846525824e-05 2.024667189e-07 8.187068242e-09 2.024667189e-07 1.248696961e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.867922805e-05 -6.770076201e-05 4.362618546e-08 -6.770076201e-05 -7.25981678e-05 6.641069695e-08 4.362618546e-08 6.641069695e-08 4.207198759e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.133657974e-05 3.558461834e-07 -3.560665125e-08 3.558461834e-07 -4.794112234e-06 -5.126991693e-09 -3.560665125e-08 -5.126991693e-09 9.354786379e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.859798295e-05 3.046939083e-05 -2.144090805e-07 3.046939083e-05 1.547926973e-05 -1.070514875e-07 -2.144090805e-07 -1.070514875e-07 8.135099363e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.076408577e-05 3.279218444e-06 -9.683612488e-08 3.279218444e-06 2.239316049e-06 -6.83660093e-09 -9.683612488e-08 -6.83660093e-09 4.279451905e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.536338956e-06 -4.095688505e-06 -3.549153702e-08 -4.095688505e-06 -7.897991558e-08 2.419606028e-08 -3.549153702e-08 2.419606028e-08 3.271137841e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.085404378e-05 2.443744249e-06 -4.59174715e-08 2.443744249e-06 9.414705937e-07 -3.320156647e-09 -4.59174715e-08 -3.320156647e-09 3.647324895e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04619882473 -0.03787645652 -6.852610221e-05 0 0 -0.03787645652 -0.02790723318 -6.471460287e-05 0 0 -6.852610221e-05 -6.471460287e-05 -0.001393022596 0 0 0 0 0 0 0 0 0 0 0 0 +-0.05099517618 -0.03093893433 -0.0002169621727 0 0 -0.03093893433 -0.008984511215 -0.0001722618438 0 0 -0.0002169621727 -0.0001722618438 -0.001054806897 0 0 0 0 0 0 0 0 0 0 0 0 +7.676487587e-05 0.001654484482 -2.033658897e-06 0 0 0.001654484482 3.343228683e-07 8.672071643e-08 0 0 -2.033658897e-06 8.672071643e-08 4.275187817e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003268461652 -0.003684672661 -8.653725299e-06 0 0 -0.003684672661 -0.004192106668 -8.741902904e-06 0 0 -8.653725299e-06 -8.741902904e-06 -3.666563135e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004552569899 0.0003278383051 -7.485040012e-07 0 0 0.0003278383051 0.0002041741022 -1.706222133e-07 0 0 -7.485040012e-07 -1.706222133e-07 5.824616337e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-9.837335972e-06 -0.0003735150248 -2.55279503e-06 0 0 -0.0003735150248 -0.0006406298063 -1.999118197e-06 0 0 -2.55279503e-06 -1.999118197e-06 9.042807412e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.260762309e-05 1.141227452e-05 8.187068242e-09 0 0 1.141227452e-05 2.846525824e-05 2.024667189e-07 0 0 8.187068242e-09 2.024667189e-07 1.248696961e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-5.867922805e-05 -6.770076201e-05 4.362618546e-08 0 0 -6.770076201e-05 -7.25981678e-05 6.641069695e-08 0 0 4.362618546e-08 6.641069695e-08 4.207198759e-08 0 0 0 0 0 0 0 0 0 0 0 0 +4.133657974e-05 3.558461834e-07 -3.560665125e-08 0 0 3.558461834e-07 -4.794112234e-06 -5.126991693e-09 0 0 -3.560665125e-08 -5.126991693e-09 9.354786379e-07 0 0 0 0 0 0 0 0 0 0 0 0 +5.859798295e-05 3.046939083e-05 -2.144090805e-07 0 0 3.046939083e-05 1.547926973e-05 -1.070514875e-07 0 0 -2.144090805e-07 -1.070514875e-07 8.135099363e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.076408577e-05 3.279218444e-06 -9.683612488e-08 0 0 3.279218444e-06 2.239316049e-06 -6.83660093e-09 0 0 -9.683612488e-08 -6.83660093e-09 4.279451905e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.536338956e-06 -4.095688505e-06 -3.549153702e-08 0 0 -4.095688505e-06 -7.897991558e-08 2.419606028e-08 0 0 -3.549153702e-08 2.419606028e-08 3.271137841e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.085404378e-05 2.443744249e-06 -4.59174715e-08 0 0 2.443744249e-06 9.414705937e-07 -3.320156647e-09 0 0 -4.59174715e-08 -3.320156647e-09 3.647324895e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.06265576573 0.0773597103 9.171011414e-05 0.002617757107 3.341655997e-05 0.0773597103 0.02969199664 4.951348447e-05 -0.02199962873 -6.877571883e-05 9.171011414e-05 4.951348447e-05 2.88389272e-05 -2.012532753e-05 -6.901117226e-05 0.002617757107 -0.02199962873 -2.012532753e-05 -0.01028424644 -4.678997369e-05 3.341655997e-05 -6.877571883e-05 -6.901117226e-05 -4.678997369e-05 -0.002279351604 -0.002120680081 -0.01906356927 -4.051887892e-05 -0.01020770635 -5.396625851e-05 -0.01906356927 -0.08250577816 -0.0001263210752 -0.03044790583 -0.0003419357371 -4.051887892e-05 -0.0001263210752 -0.0003922355983 -3.162103375e-05 -0.001086981515 -0.01020770635 -0.03044790583 -3.162103375e-05 -0.006856502684 -0.000153318737 -5.396625851e-05 -0.0003419357371 -0.001086981515 -0.000153318737 -0.002089366775 -0.003388521055 -0.005146159188 -8.021727948e-06 0.0004419811749 -2.629897223e-05 -0.005146159188 -0.007454516172 -1.132754867e-05 0.001529329325 -4.795214154e-05 -8.021727948e-06 -1.132754867e-05 -0.0001074900511 4.129154329e-06 -0.0001482200419 0.0004419811749 0.001529329325 4.129154329e-06 0.002120198231 -1.199198867e-05 -2.629897223e-05 -4.795214154e-05 -0.0001482200419 -1.199198867e-05 -0.000146632984 @@ -128,19 +128,19 @@ -2.324731925e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.848185819e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.399508175e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04742346079 0.01825149548 0.03321020239 0.01825149548 -0.00629093453 -0.009268249277 0.03321020239 -0.009268249277 -0.01946189221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.06317325993 0.01733315882 0.03208776449 0.01733315882 -0.003389026077 -0.003979497703 0.03208776449 -0.003979497703 -0.008773173512 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000943699384 -0.001222617457 -0.002169148836 -0.001222617457 0.0004332001117 0.0008144575154 -0.002169148836 0.0008144575154 0.001459979798 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.003617181903 0.002053323444 0.003743652674 0.002053323444 -0.001175755709 -0.002091031043 0.003743652674 -0.002091031043 -0.003852608862 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004997343975 -0.000144538512 -0.0002802200933 -0.000144538512 5.563270581e-05 8.682671555e-05 -0.0002802200933 8.682671555e-05 0.0001761276093 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.974623165e-05 0.0002001968542 0.0003450411409 0.0002001968542 -0.0001418231826 -0.0002739604779 0.0003450411409 -0.0002739604779 -0.0004807061089 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.139547048e-05 2.350524588e-05 4.577508526e-05 2.350524588e-05 -5.3639523e-06 -1.192034366e-05 4.577508526e-05 -1.192034366e-05 -2.356976793e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.21575025e-05 2.30050432e-05 4.302236094e-05 2.30050432e-05 -8.506104566e-06 -1.625010537e-05 4.302236094e-05 -1.625010537e-05 -3.055045196e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.230475335e-05 -1.188480278e-06 -4.489810989e-06 -1.188480278e-06 -3.001341841e-06 -7.546600054e-06 -4.489810989e-06 -7.546600054e-06 -1.156959945e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.103847959e-05 -1.317084737e-05 -2.600812321e-05 -1.317084737e-05 4.461878103e-06 7.060950246e-06 -2.600812321e-05 7.060950246e-06 1.459676333e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.258094455e-07 1.350724525e-06 2.290548031e-06 1.350724525e-06 4.442745415e-07 -6.845396911e-08 2.290548031e-06 -6.845396911e-08 8.991544258e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.908210383e-07 1.864295363e-06 3.368892715e-06 1.864295363e-06 3.052989426e-07 -1.910267346e-07 3.368892715e-06 -1.910267346e-07 -1.979622064e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.536195931e-05 -2.114865379e-06 -4.364461541e-06 -2.114865379e-06 7.004386646e-07 6.300614613e-07 -4.364461541e-06 6.300614613e-07 1.662869237e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.04742346079 0.01825149548 0.03321020239 0 0 0.01825149548 -0.00629093453 -0.009268249277 0 0 0.03321020239 -0.009268249277 -0.01946189221 0 0 0 0 0 0 0 0 0 0 0 0 +-0.06317325993 0.01733315882 0.03208776449 0 0 0.01733315882 -0.003389026077 -0.003979497703 0 0 0.03208776449 -0.003979497703 -0.008773173512 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000943699384 -0.001222617457 -0.002169148836 0 0 -0.001222617457 0.0004332001117 0.0008144575154 0 0 -0.002169148836 0.0008144575154 0.001459979798 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003617181903 0.002053323444 0.003743652674 0 0 0.002053323444 -0.001175755709 -0.002091031043 0 0 0.003743652674 -0.002091031043 -0.003852608862 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004997343975 -0.000144538512 -0.0002802200933 0 0 -0.000144538512 5.563270581e-05 8.682671555e-05 0 0 -0.0002802200933 8.682671555e-05 0.0001761276093 0 0 0 0 0 0 0 0 0 0 0 0 +-3.974623165e-05 0.0002001968542 0.0003450411409 0 0 0.0002001968542 -0.0001418231826 -0.0002739604779 0 0 0.0003450411409 -0.0002739604779 -0.0004807061089 0 0 0 0 0 0 0 0 0 0 0 0 +-8.139547048e-05 2.350524588e-05 4.577508526e-05 0 0 2.350524588e-05 -5.3639523e-06 -1.192034366e-05 0 0 4.577508526e-05 -1.192034366e-05 -2.356976793e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-5.21575025e-05 2.30050432e-05 4.302236094e-05 0 0 2.30050432e-05 -8.506104566e-06 -1.625010537e-05 0 0 4.302236094e-05 -1.625010537e-05 -3.055045196e-05 0 0 0 0 0 0 0 0 0 0 0 0 +7.230475335e-05 -1.188480278e-06 -4.489810989e-06 0 0 -1.188480278e-06 -3.001341841e-06 -7.546600054e-06 0 0 -4.489810989e-06 -7.546600054e-06 -1.156959945e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.103847959e-05 -1.317084737e-05 -2.600812321e-05 0 0 -1.317084737e-05 4.461878103e-06 7.060950246e-06 0 0 -2.600812321e-05 7.060950246e-06 1.459676333e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.258094455e-07 1.350724525e-06 2.290548031e-06 0 0 1.350724525e-06 4.442745415e-07 -6.845396911e-08 0 0 2.290548031e-06 -6.845396911e-08 8.991544258e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-8.908210383e-07 1.864295363e-06 3.368892715e-06 0 0 1.864295363e-06 3.052989426e-07 -1.910267346e-07 0 0 3.368892715e-06 -1.910267346e-07 -1.979622064e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.536195931e-05 -2.114865379e-06 -4.364461541e-06 0 0 -2.114865379e-06 7.004386646e-07 6.300614613e-07 0 0 -4.364461541e-06 6.300614613e-07 1.662869237e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.07111543168 -0.03594713928 -0.0660157596 -0.0006955431559 -4.320429069e-05 -0.03594713928 0.005786638205 0.0106184801 -0.004872743662 0.007708657094 -0.0660157596 0.0106184801 0.01961236994 -0.009093118987 0.01401282557 -0.0006955431559 -0.004872743662 -0.009093118987 -0.004016818074 0.002597241634 -4.320429069e-05 0.007708657094 0.01401282557 0.002597241634 -0.005839291999 -0.004411688719 0.01180221299 0.02176554104 0.006354709319 -0.009772102413 0.01180221299 -0.0202056754 -0.03622122516 -0.006825527307 0.01242603367 0.02176554104 -0.03622122516 -0.06708395771 -0.01472979096 0.02139446767 0.006354709319 -0.006825527307 -0.01472979096 -0.003447086125 0.001835437027 -0.009772102413 0.01242603367 0.02139446767 0.001835437027 -0.004890781693 -0.005372365883 0.003890735636 0.007119999715 -4.287334945e-05 0.000154753743 0.003890735636 -0.00280651602 -0.004826159983 0.0004553326242 -0.0004071662811 0.007119999715 -0.004826159983 -0.009007214246 0.0004450817849 -0.001043753956 -4.287334945e-05 0.0004553326242 0.0004450817849 0.0005435579153 -0.00122518283 0.000154753743 -0.0004071662811 -0.001043753956 -0.00122518283 0.001700973483 @@ -152,7 +152,7 @@ 5.160248248e-05 -3.493746257e-05 -6.465478539e-05 -6.036728651e-06 7.481858478e-06 -3.493746257e-05 2.371983667e-05 4.376515141e-05 3.610774468e-06 -4.779371887e-06 -6.465478539e-05 4.376515141e-05 8.102600288e-05 7.16953271e-06 -8.486072188e-06 -6.036728651e-06 3.610774468e-06 7.16953271e-06 1.004092818e-07 1.610618402e-06 7.481858478e-06 -4.779371887e-06 -8.486072188e-06 1.610618402e-06 -2.273337279e-06 4.6133415e-06 -5.163901364e-06 -9.523705743e-06 -2.859740823e-06 3.747521592e-06 -5.163901364e-06 5.559163869e-06 1.02723433e-05 3.029195186e-06 -4.303349107e-06 -9.523705743e-06 1.02723433e-05 1.89641856e-05 5.572043089e-06 -7.964237211e-06 -2.859740823e-06 3.029195186e-06 5.572043089e-06 1.803653132e-06 -2.319441562e-06 3.747521592e-06 -4.303349107e-06 -7.964237211e-06 -2.319441562e-06 3.689393135e-06 -7.944536873e-08 2.442033152e-06 4.534567044e-06 1.634465821e-06 -2.611945569e-06 2.442033152e-06 -2.335913952e-06 -4.30105833e-06 -5.277739626e-07 8.12735049e-07 4.534567044e-06 -4.30105833e-06 -8.031122223e-06 -1.174198856e-06 1.407195712e-06 1.634465821e-06 -5.277739626e-07 -1.174198856e-06 2.716909647e-07 -4.913080851e-07 -2.611945569e-06 8.12735049e-07 1.407195712e-06 -4.913080851e-07 9.94776174e-07 -6.825015836e-06 -3.154328697e-06 -5.84248657e-06 1.417430744e-10 -2.297620728e-07 -3.154328697e-06 8.994917578e-07 1.710232845e-06 -1.677595629e-07 4.403006101e-07 -5.84248657e-06 1.710232845e-06 3.159530382e-06 -4.398177712e-07 7.296170814e-07 1.417430744e-10 -1.677595629e-07 -4.398177712e-07 -6.171107196e-08 1.884737061e-07 -2.297620728e-07 4.403006101e-07 7.296170814e-07 1.884737061e-07 -2.144224804e-07 +6.825015836e-06 -3.154328697e-06 -5.84248657e-06 1.41743074e-10 -2.297620728e-07 -3.154328697e-06 8.994917578e-07 1.710232845e-06 -1.677595629e-07 4.403006101e-07 -5.84248657e-06 1.710232845e-06 3.159530382e-06 -4.398177712e-07 7.296170814e-07 1.41743074e-10 -1.677595629e-07 -4.398177712e-07 -6.171107196e-08 1.884737061e-07 -2.297620728e-07 4.403006101e-07 7.296170814e-07 1.884737061e-07 -2.144224804e-07 8.224966424e-06 -5.385786335e-06 -9.985833563e-06 -1.260867584e-06 1.614862772e-06 -5.385786335e-06 3.503507081e-06 6.517070367e-06 9.21445434e-07 -1.177364692e-06 -9.985833563e-06 6.517070367e-06 1.207957344e-05 1.635681798e-06 -2.230823311e-06 -1.260867584e-06 9.21445434e-07 1.635681798e-06 3.095707421e-07 -2.970556979e-07 1.614862772e-06 -1.177364692e-06 -2.230823311e-06 -2.970556979e-07 4.745766092e-07 -0.01841703901 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01647387333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -167,19 +167,19 @@ -3.569892655e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.790346373e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.498944044e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.05018153921 0.01790982147 -0.03275808862 0.01790982147 -0.006131713253 0.008954713908 -0.03275808862 0.008954713908 -0.019074226 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.06746856856 0.01843378614 -0.03474991639 0.01843378614 -0.003655171956 0.00445866127 -0.03474991639 0.00445866127 -0.010163796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0018412741 -0.001368289162 0.002398775285 -0.001368289162 0.000626250034 -0.00118941455 0.002398775285 -0.00118941455 0.002125414561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.003528157173 0.002118594706 -0.003879554688 0.002118594706 -0.001258674061 0.00226078596 -0.003879554688 0.00226078596 -0.004177782312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004489563578 -9.157352851e-05 0.000184414245 -9.157352851e-05 3.280813946e-05 -4.081069067e-05 0.000184414245 -4.081069067e-05 9.5192576e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.400558639e-05 0.0001793252786 -0.0003133234507 0.0001793252786 -0.0001284031249 0.0002524465037 -0.0003133234507 0.0002524465037 -0.0004454224868 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001129187448 4.376547951e-05 -8.249346629e-05 4.376547951e-05 -1.636486121e-05 3.129164294e-05 -8.249346629e-05 3.129164294e-05 -5.899374144e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.219079347e-05 1.612124729e-05 -3.046824181e-05 1.612124729e-05 -3.803988754e-06 7.688259673e-06 -3.046824181e-05 7.688259673e-06 -1.47025347e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.551507509e-05 -2.668924989e-06 7.579652647e-06 -2.668924989e-06 -3.553261733e-06 8.883547532e-06 7.579652647e-06 8.883547532e-06 -1.366311056e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.380417429e-05 -1.222385866e-05 2.363637171e-05 -1.222385866e-05 4.610802087e-06 -7.214689723e-06 2.363637171e-05 -7.214689723e-06 1.459266074e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.344178795e-06 1.867057258e-06 -3.491833617e-06 1.867057258e-06 5.850646866e-07 -1.863651651e-07 -3.491833617e-06 -1.863651651e-07 5.336200568e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.005543489e-07 1.58171338e-06 -2.876945958e-06 1.58171338e-06 2.173242334e-07 3.404649866e-07 -2.876945958e-06 3.404649866e-07 -3.899543288e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.667073593e-05 -2.460242596e-06 4.940865469e-06 -2.460242596e-06 7.642082347e-07 -7.374326757e-07 4.940865469e-06 -7.374326757e-07 1.878059432e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.05018153921 0.01790982147 -0.03275808862 0 0 0.01790982147 -0.006131713253 0.008954713908 0 0 -0.03275808862 0.008954713908 -0.019074226 0 0 0 0 0 0 0 0 0 0 0 0 +-0.06746856856 0.01843378614 -0.03474991639 0 0 0.01843378614 -0.003655171956 0.00445866127 0 0 -0.03474991639 0.00445866127 -0.010163796 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0018412741 -0.001368289162 0.002398775285 0 0 -0.001368289162 0.000626250034 -0.00118941455 0 0 0.002398775285 -0.00118941455 0.002125414561 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003528157173 0.002118594706 -0.003879554688 0 0 0.002118594706 -0.001258674061 0.00226078596 0 0 -0.003879554688 0.00226078596 -0.004177782312 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004489563578 -9.157352851e-05 0.000184414245 0 0 -9.157352851e-05 3.280813946e-05 -4.081069067e-05 0 0 0.000184414245 -4.081069067e-05 9.5192576e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.400558639e-05 0.0001793252786 -0.0003133234507 0 0 0.0001793252786 -0.0001284031249 0.0002524465037 0 0 -0.0003133234507 0.0002524465037 -0.0004454224868 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001129187448 4.376547951e-05 -8.249346629e-05 0 0 4.376547951e-05 -1.636486121e-05 3.129164294e-05 0 0 -8.249346629e-05 3.129164294e-05 -5.899374144e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.219079347e-05 1.612124729e-05 -3.046824181e-05 0 0 1.612124729e-05 -3.803988754e-06 7.688259673e-06 0 0 -3.046824181e-05 7.688259673e-06 -1.47025347e-05 0 0 0 0 0 0 0 0 0 0 0 0 +8.551507509e-05 -2.668924989e-06 7.579652647e-06 0 0 -2.668924989e-06 -3.553261733e-06 8.883547532e-06 0 0 7.579652647e-06 8.883547532e-06 -1.366311056e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.380417429e-05 -1.222385866e-05 2.363637171e-05 0 0 -1.222385866e-05 4.610802087e-06 -7.214689723e-06 0 0 2.363637171e-05 -7.214689723e-06 1.459266074e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.344178795e-06 1.867057258e-06 -3.491833617e-06 0 0 1.867057258e-06 5.850646866e-07 -1.863651651e-07 0 0 -3.491833617e-06 -1.863651651e-07 5.336200568e-07 0 0 0 0 0 0 0 0 0 0 0 0 +9.005543489e-07 1.58171338e-06 -2.876945958e-06 0 0 1.58171338e-06 2.173242334e-07 3.404649866e-07 0 0 -2.876945958e-06 3.404649866e-07 -3.899543288e-07 0 0 0 0 0 0 0 0 0 0 0 0 +1.667073593e-05 -2.460242596e-06 4.940865469e-06 0 0 -2.460242596e-06 7.642082347e-07 -7.374326757e-07 0 0 4.940865469e-06 -7.374326757e-07 1.878059432e-06 0 0 0 0 0 0 0 0 0 0 0 0 0.07235270771 -0.03590172475 0.06624377286 -0.0008672287699 -0.0001877107877 -0.03590172475 0.00594361449 -0.01095976953 -0.004615017302 -0.007189867603 0.06624377286 -0.01095976953 0.0203701844 0.008597399359 0.0131456108 -0.0008672287699 -0.004615017302 0.008597399359 -0.003919910522 -0.002450884613 -0.0001877107877 -0.007189867603 0.0131456108 -0.002450884613 -0.005540170187 -0.00408941318 0.01174590028 -0.02182241765 0.006522674803 0.009866244279 0.01174590028 -0.02025230542 0.03648640335 -0.007067331475 -0.01253855784 -0.02182241765 0.03648640335 -0.06797467022 0.01532717266 0.02164102689 0.006522674803 -0.007067331475 0.01532717266 -0.003769657466 -0.002046258406 0.009866244279 -0.01253855784 0.02164102689 -0.002046258406 -0.005074863152 -0.00616998358 0.004558943277 -0.008394835982 0.0001440565202 4.282474275e-05 0.004558943277 -0.003369249239 0.005838602257 0.0003537453738 0.0002511250773 -0.008394835982 0.005838602257 -0.01095906676 -0.0001837220451 -0.0008215049849 0.0001440565202 0.0003537453738 -0.0001837220451 0.0005195553983 0.001285819071 4.282474275e-05 0.0002511250773 -0.0008215049849 0.001285819071 0.001772394959 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_2_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_2_ref.dat index ba9c8e4036..105abf7425 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_2_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_2_ref.dat @@ -11,19 +11,19 @@ 7.113366239e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.226450296e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.542508135e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.08697634992 -0.1332553374 -6.482962629e-05 -0.1332553374 0.04237803013 5.803977733e-07 -6.482962629e-05 5.803977733e-07 0.0006066846883 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.04099628069 -0.04967280631 0.000171148016 -0.04967280631 0.08909375677 -0.0001245079827 0.000171148016 -0.0001245079827 0.001902894421 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.002553870811 0.00278308869 3.739871179e-05 0.00278308869 0.05005385254 -0.0001167834891 3.739871179e-05 -0.0001167834891 0.001226873204 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003337655041 0.00600198087 -2.411942833e-05 0.00600198087 0.01075034032 -3.128579623e-05 -2.411942833e-05 -3.128579623e-05 0.0002659611512 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0007694156675 0.0009787369666 -5.656472964e-06 0.0009787369666 -0.0007394165387 3.313943058e-06 -5.656472964e-06 3.313943058e-06 -3.66053791e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.530665243e-05 -0.0002283398574 -1.509742472e-07 -0.0002283398574 -0.002096076134 4.280121889e-06 -1.509742472e-07 4.280121889e-06 -3.600837706e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003126463305 -0.0006531640727 6.629629389e-07 -0.0006531640727 -0.001179088789 1.388386263e-06 6.629629389e-07 1.388386263e-06 -1.495382031e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.214929078e-05 2.334520128e-06 1.725400109e-07 2.334520128e-06 0.0001051442412 -2.769475454e-07 1.725400109e-07 -2.769475454e-07 2.560503888e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.679974128e-05 2.237700706e-05 5.174061105e-08 2.237700706e-05 0.0003109338825 -6.913536716e-07 5.174061105e-08 -6.913536716e-07 9.290346257e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.436048676e-05 6.160383708e-05 -3.915151033e-07 6.160383708e-05 8.401580136e-05 -3.50925875e-07 -3.915151033e-07 -3.50925875e-07 8.517574618e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.063672567e-05 -2.012123694e-05 2.923660158e-08 -2.012123694e-05 -2.491582541e-05 5.157016066e-08 2.923660158e-08 5.157016066e-08 -5.093151432e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.753851598e-06 2.34712756e-06 -2.843329655e-08 2.34712756e-06 -1.448544379e-05 5.079605431e-08 -2.843329655e-08 5.079605431e-08 9.370015427e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.840177741e-06 -1.444732348e-05 -2.154744971e-08 -1.444732348e-05 -1.230874775e-05 7.501815772e-10 -2.154744971e-08 7.501815772e-10 -2.267313043e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.08697634992 -0.1332553374 -6.482962629e-05 0 0 -0.1332553374 0.04237803013 5.803977733e-07 0 0 -6.482962629e-05 5.803977733e-07 0.0006066846883 0 0 0 0 0 0 0 0 0 0 0 0 +-0.04099628069 -0.04967280631 0.000171148016 0 0 -0.04967280631 0.08909375677 -0.0001245079827 0 0 0.000171148016 -0.0001245079827 0.001902894421 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002553870811 0.00278308869 3.739871179e-05 0 0 0.00278308869 0.05005385254 -0.0001167834891 0 0 3.739871179e-05 -0.0001167834891 0.001226873204 0 0 0 0 0 0 0 0 0 0 0 0 +0.003337655041 0.00600198087 -2.411942833e-05 0 0 0.00600198087 0.01075034032 -3.128579623e-05 0 0 -2.411942833e-05 -3.128579623e-05 0.0002659611512 0 0 0 0 0 0 0 0 0 0 0 0 +0.0007694156675 0.0009787369666 -5.656472964e-06 0 0 0.0009787369666 -0.0007394165387 3.313943058e-06 0 0 -5.656472964e-06 3.313943058e-06 -3.66053791e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.530665243e-05 -0.0002283398574 -1.509742472e-07 0 0 -0.0002283398574 -0.002096076134 4.280121889e-06 0 0 -1.509742472e-07 4.280121889e-06 -3.600837706e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003126463305 -0.0006531640727 6.629629389e-07 0 0 -0.0006531640727 -0.001179088789 1.388386263e-06 0 0 6.629629389e-07 1.388386263e-06 -1.495382031e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-1.214929078e-05 2.334520128e-06 1.725400109e-07 0 0 2.334520128e-06 0.0001051442412 -2.769475454e-07 0 0 1.725400109e-07 -2.769475454e-07 2.560503888e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.679974128e-05 2.237700706e-05 5.174061105e-08 0 0 2.237700706e-05 0.0003109338825 -6.913536716e-07 0 0 5.174061105e-08 -6.913536716e-07 9.290346257e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.436048676e-05 6.160383708e-05 -3.915151033e-07 0 0 6.160383708e-05 8.401580136e-05 -3.50925875e-07 0 0 -3.915151033e-07 -3.50925875e-07 8.517574618e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.063672567e-05 -2.012123694e-05 2.923660158e-08 0 0 -2.012123694e-05 -2.491582541e-05 5.157016066e-08 0 0 2.923660158e-08 5.157016066e-08 -5.093151432e-07 0 0 0 0 0 0 0 0 0 0 0 0 +3.753851598e-06 2.34712756e-06 -2.843329655e-08 0 0 2.34712756e-06 -1.448544379e-05 5.079605431e-08 0 0 -2.843329655e-08 5.079605431e-08 9.370015427e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-7.840177741e-06 -1.444732348e-05 -2.154744971e-08 0 0 -1.444732348e-05 -1.230874775e-05 7.501815772e-10 0 0 -2.154744971e-08 7.501815772e-10 -2.267313043e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.01274076474 0.004057483215 -3.790000147e-05 -0.01518576887 5.198699584e-05 0.004057483215 -0.04145223328 -8.167447962e-05 -0.03039750309 0.0001364898202 -3.790000147e-05 -8.167447962e-05 -0.0006801395247 6.605128709e-06 0.0005332186389 -0.01518576887 -0.03039750309 6.605128709e-06 0.005676205045 -1.036862808e-05 5.198699584e-05 0.0001364898202 0.0005332186389 -1.036862808e-05 -0.0001877591243 0.0141007508 0.0009168617141 -7.716105236e-06 -0.01764787085 -2.41807234e-06 0.0009168617141 -0.0313319813 -1.140518009e-05 -0.01996507023 -2.265657625e-06 -7.716105236e-06 -1.140518009e-05 -0.0007439092298 4.520356747e-06 0.0007423132308 -0.01764787085 -0.01996507023 4.520356747e-06 0.01444472247 1.085209723e-06 -2.41807234e-06 -2.265657625e-06 0.0007423132308 1.085209723e-06 -0.0006319224837 0.005680801482 -0.001410985555 5.983381494e-06 -0.007906015307 -3.036182575e-05 -0.001410985555 -0.007054818868 9.399604374e-06 -0.00276317046 -3.688912902e-05 5.983381494e-06 9.399604374e-06 -0.000161085098 -3.474979063e-06 0.0002931748492 -0.007906015307 -0.00276317046 -3.474979063e-06 0.00928286706 2.187627654e-05 -3.036182575e-05 -3.688912902e-05 0.0002931748492 2.187627654e-05 -0.0005070474862 @@ -50,19 +50,19 @@ 6.634063156e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.81156465e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.44005506e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0315885131 0.004629833675 2.204627879e-05 0.004629833675 0.1005526337 0.000161517943 2.204627879e-05 0.000161517943 0.001296324657 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02996998632 0.048498833 -0.0001029949107 0.048498833 0.06741586772 -7.572192722e-05 -0.0001029949107 -7.572192722e-05 0.001431873172 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001370275119 0.002318017599 -1.912432738e-05 0.002318017599 0.001531797332 -3.315607839e-06 -1.912432738e-05 -3.315607839e-06 -1.75761294e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.005801486308 0.002815643019 1.755199295e-05 0.002815643019 0.0001531587444 8.791300286e-06 1.755199295e-05 8.791300286e-06 5.406332702e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000142551142 -0.0003652618837 -1.627514952e-06 -0.0003652618837 -0.0003062890702 -1.544684081e-06 -1.627514952e-06 -1.544684081e-06 -6.025810122e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001419479599 -0.0002742003725 -7.687554771e-07 -0.0002742003725 -0.0003726254708 -1.245476419e-06 -7.687554771e-07 -1.245476419e-06 -6.541325306e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.670672135e-06 7.238435986e-06 1.182445651e-08 7.238435986e-06 6.047283495e-06 4.377448723e-08 1.182445651e-08 4.377448723e-08 -2.685203709e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.407152273e-05 1.503177376e-05 -1.228897503e-07 1.503177376e-05 8.131791736e-05 2.572242181e-09 -1.228897503e-07 2.572242181e-09 -7.433539323e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.849096759e-05 -4.121651779e-05 -2.044499111e-07 -4.121651779e-05 -2.340426348e-05 -9.267127018e-08 -2.044499111e-07 -9.267127018e-08 -8.20577752e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.836900424e-05 -4.592335743e-05 -3.084884988e-07 -4.592335743e-05 -3.484994977e-05 -2.131847782e-07 -3.084884988e-07 -2.131847782e-07 -3.709945933e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.425777987e-06 -1.071063235e-05 -2.591586979e-08 -1.071063235e-05 -6.789645637e-06 -1.634127779e-08 -2.591586979e-08 -1.634127779e-08 -3.515431878e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.164095241e-06 1.102635666e-06 -1.534814629e-08 1.102635666e-06 7.553218595e-06 1.56652296e-08 -1.534814629e-08 1.56652296e-08 -2.745581321e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --9.48653185e-06 -9.520312714e-06 -5.24542283e-08 -9.520312714e-06 -4.354680065e-06 -2.193257418e-08 -5.24542283e-08 -2.193257418e-08 -2.735940933e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0315885131 0.004629833675 2.204627879e-05 0 0 0.004629833675 0.1005526337 0.000161517943 0 0 2.204627879e-05 0.000161517943 0.001296324657 0 0 0 0 0 0 0 0 0 0 0 0 +0.02996998632 0.048498833 -0.0001029949107 0 0 0.048498833 0.06741586772 -7.572192722e-05 0 0 -0.0001029949107 -7.572192722e-05 0.001431873172 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001370275119 0.002318017599 -1.912432738e-05 0 0 0.002318017599 0.001531797332 -3.315607839e-06 0 0 -1.912432738e-05 -3.315607839e-06 -1.75761294e-06 0 0 0 0 0 0 0 0 0 0 0 0 +0.005801486308 0.002815643019 1.755199295e-05 0 0 0.002815643019 0.0001531587444 8.791300286e-06 0 0 1.755199295e-05 8.791300286e-06 5.406332702e-06 0 0 0 0 0 0 0 0 0 0 0 0 +0.000142551142 -0.0003652618837 -1.627514952e-06 0 0 -0.0003652618837 -0.0003062890702 -1.544684081e-06 0 0 -1.627514952e-06 -1.544684081e-06 -6.025810122e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001419479599 -0.0002742003725 -7.687554771e-07 0 0 -0.0002742003725 -0.0003726254708 -1.245476419e-06 0 0 -7.687554771e-07 -1.245476419e-06 -6.541325306e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.670672135e-06 7.238435986e-06 1.182445651e-08 0 0 7.238435986e-06 6.047283495e-06 4.377448723e-08 0 0 1.182445651e-08 4.377448723e-08 -2.685203709e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.407152273e-05 1.503177376e-05 -1.228897503e-07 0 0 1.503177376e-05 8.131791736e-05 2.572242181e-09 0 0 -1.228897503e-07 2.572242181e-09 -7.433539323e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-4.849096759e-05 -4.121651779e-05 -2.044499111e-07 0 0 -4.121651779e-05 -2.340426348e-05 -9.267127018e-08 0 0 -2.044499111e-07 -9.267127018e-08 -8.20577752e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-5.836900424e-05 -4.592335743e-05 -3.084884988e-07 0 0 -4.592335743e-05 -3.484994977e-05 -2.131847782e-07 0 0 -3.084884988e-07 -2.131847782e-07 -3.709945933e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.425777987e-06 -1.071063235e-05 -2.591586979e-08 0 0 -1.071063235e-05 -6.789645637e-06 -1.634127779e-08 0 0 -2.591586979e-08 -1.634127779e-08 -3.515431878e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.164095241e-06 1.102635666e-06 -1.534814629e-08 0 0 1.102635666e-06 7.553218595e-06 1.56652296e-08 0 0 -1.534814629e-08 1.56652296e-08 -2.745581321e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-9.48653185e-06 -9.520312714e-06 -5.24542283e-08 0 0 -9.520312714e-06 -4.354680065e-06 -2.193257418e-08 0 0 -5.24542283e-08 -2.193257418e-08 -2.735940933e-07 0 0 0 0 0 0 0 0 0 0 0 0 -0.05612752885 -0.08014156381 -0.0001444072342 -0.00883733953 -7.364367244e-05 -0.08014156381 -0.03072788297 -6.785787903e-05 0.02174656724 9.787558389e-05 -0.0001444072342 -6.785787903e-05 -0.0001557467676 3.116708476e-05 0.000918758109 -0.00883733953 0.02174656724 3.116708476e-05 0.01233330062 6.688544679e-05 -7.364367244e-05 9.787558389e-05 0.000918758109 6.688544679e-05 -0.0003435179466 0.004817680118 0.02124205788 3.830905942e-05 0.01004243303 5.876697441e-05 0.02124205788 0.08977158269 -1.811687903e-05 0.03315279972 0.0002509121372 3.830905942e-05 -1.811687903e-05 0.00183826828 -6.2920167e-05 0.001026552312 0.01004243303 0.03315279972 -6.2920167e-05 0.008112312932 9.60799664e-05 5.876697441e-05 0.0002509121372 0.001026552312 9.60799664e-05 -0.000273943826 0.0006056938038 0.005341854849 -3.422933175e-05 0.0002348831888 2.04663495e-05 0.005341854849 0.01701955461 -4.760300162e-05 0.003099029835 4.953776887e-05 -3.422933175e-05 -4.760300162e-05 0.0004522536044 -2.585884304e-05 0.0001504591806 0.0002348831888 0.003099029835 -2.585884304e-05 -4.619726127e-05 1.286200022e-05 2.04663495e-05 4.953776887e-05 0.0001504591806 1.286200022e-05 5.748303366e-06 @@ -89,19 +89,19 @@ 2.638847054e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.505182419e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.167952638e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02549479829 -0.1313735095 -0.001037975656 -0.1313735095 0.08243094992 -0.0003314698204 -0.001037975656 -0.0003314698204 0.03330269978 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.06168453081 -0.005818721401 0.000943127205 -0.005818721401 0.03109688415 -0.0001612103966 0.000943127205 -0.0001612103966 0.02465985768 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.02698145403 -0.04195617949 3.856058227e-05 -0.04195617949 0.01893435911 5.426018496e-05 3.856058227e-05 5.426018496e-05 0.001585698227 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001819900874 0.002176237891 1.993969123e-05 0.002176237891 0.03127549525 -3.304873373e-05 1.993969123e-05 -3.304873373e-05 -0.0006492357934 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001208567287 -0.002149733806 -1.253087887e-06 -0.002149733806 -0.003319648557 -1.485404779e-06 -1.253087887e-06 -1.485404779e-06 -0.0001272175348 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002800626073 -0.0003849270858 -5.439549101e-06 -0.0003849270858 -0.0001125222469 3.277479305e-06 -5.439549101e-06 3.277479305e-06 0.0001663584261 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001730197422 2.665874839e-05 -8.172213834e-07 2.665874839e-05 0.001598177343 4.93409155e-06 -8.172213834e-07 4.93409155e-06 -6.895821831e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.49579745e-05 -0.0001821908367 -3.433554875e-07 -0.0001821908367 -0.0004600007076 -4.85976604e-07 -3.433554875e-07 -4.85976604e-07 -8.037186645e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.078069621e-05 -1.160972386e-05 -3.659094536e-07 -1.160972386e-05 -7.485638016e-05 -2.461027137e-07 -3.659094536e-07 -2.461027137e-07 2.662357287e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.242319102e-05 -2.670154049e-05 -7.078429962e-07 -2.670154049e-05 0.0002619574198 8.999769575e-07 -7.078429962e-07 8.999769575e-07 -1.497298597e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.754937409e-05 -6.3619165e-05 -1.086994633e-06 -6.3619165e-05 -0.0001124222057 -3.788692545e-07 -1.086994633e-06 -3.788692545e-07 -4.761670356e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.350969096e-05 1.698933841e-06 -5.152380624e-07 1.698933841e-06 -3.289316146e-06 -3.346291127e-08 -5.152380624e-07 -3.346291127e-08 2.107979946e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.110372284e-05 -1.031831496e-05 -3.19713144e-07 -1.031831496e-05 3.512722833e-05 6.857806542e-08 -3.19713144e-07 6.857806542e-08 -3.4631081e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02549479829 -0.1313735095 -0.001037975656 0 0 -0.1313735095 0.08243094992 -0.0003314698204 0 0 -0.001037975656 -0.0003314698204 0.03330269978 0 0 0 0 0 0 0 0 0 0 0 0 +0.06168453081 -0.005818721401 0.000943127205 0 0 -0.005818721401 0.03109688415 -0.0001612103966 0 0 0.000943127205 -0.0001612103966 0.02465985768 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02698145403 -0.04195617949 3.856058227e-05 0 0 -0.04195617949 0.01893435911 5.426018496e-05 0 0 3.856058227e-05 5.426018496e-05 0.001585698227 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001819900874 0.002176237891 1.993969123e-05 0 0 0.002176237891 0.03127549525 -3.304873373e-05 0 0 1.993969123e-05 -3.304873373e-05 -0.0006492357934 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001208567287 -0.002149733806 -1.253087887e-06 0 0 -0.002149733806 -0.003319648557 -1.485404779e-06 0 0 -1.253087887e-06 -1.485404779e-06 -0.0001272175348 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002800626073 -0.0003849270858 -5.439549101e-06 0 0 -0.0003849270858 -0.0001125222469 3.277479305e-06 0 0 -5.439549101e-06 3.277479305e-06 0.0001663584261 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001730197422 2.665874839e-05 -8.172213834e-07 0 0 2.665874839e-05 0.001598177343 4.93409155e-06 0 0 -8.172213834e-07 4.93409155e-06 -6.895821831e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.49579745e-05 -0.0001821908367 -3.433554875e-07 0 0 -0.0001821908367 -0.0004600007076 -4.85976604e-07 0 0 -3.433554875e-07 -4.85976604e-07 -8.037186645e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.078069621e-05 -1.160972386e-05 -3.659094536e-07 0 0 -1.160972386e-05 -7.485638016e-05 -2.461027137e-07 0 0 -3.659094536e-07 -2.461027137e-07 2.662357287e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-7.242319102e-05 -2.670154049e-05 -7.078429962e-07 0 0 -2.670154049e-05 0.0002619574198 8.999769575e-07 0 0 -7.078429962e-07 8.999769575e-07 -1.497298597e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.754937409e-05 -6.3619165e-05 -1.086994633e-06 0 0 -6.3619165e-05 -0.0001124222057 -3.788692545e-07 0 0 -1.086994633e-06 -3.788692545e-07 -4.761670356e-06 0 0 0 0 0 0 0 0 0 0 0 0 +1.350969096e-05 1.698933841e-06 -5.152380624e-07 0 0 1.698933841e-06 -3.289316146e-06 -3.346291127e-08 0 0 -5.152380624e-07 -3.346291127e-08 2.107979946e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.110372284e-05 -1.031831496e-05 -3.19713144e-07 0 0 -1.031831496e-05 3.512722833e-05 6.857806542e-08 0 0 -3.19713144e-07 6.857806542e-08 -3.4631081e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.1775911757 -0.01556871632 0.00098301298 -0.01787382281 0.001101103808 -0.01556871632 0.02154181247 0.0007017578602 -0.1460821645 -0.001403141142 0.00098301298 0.0007017578602 -0.06062205597 -0.0002632650175 -0.2036298277 -0.01787382281 -0.1460821645 -0.0002632650175 0.03885062652 -0.0002757463747 0.001101103808 -0.001403141142 -0.2036298277 -0.0002757463747 0.04274533055 -0.04787463584 0.01761472553 -0.0008887354764 0.01617354454 0.0002518238735 0.01761472553 0.1721292432 0.0002563397629 0.02277707711 0.002605304287 -0.0008887354764 0.0002563397629 -0.0214035525 0.0009271956846 -0.04042811372 0.01617354454 0.02277707711 0.0009271956846 0.02146511542 -0.0002809947223 0.0002518238735 0.002605304287 -0.04042811372 -0.0002809947223 0.04863778268 0.005168934736 0.01204411359 -2.461394691e-05 -0.002651328197 -1.430272303e-05 0.01204411359 -0.002932164702 -1.892143316e-05 -0.02484762347 0.0001902144491 -2.461394691e-05 -1.892143316e-05 -0.001356326651 8.402450425e-06 0.000941494493 -0.002651328197 -0.02484762347 8.402450425e-06 -0.009093297151 9.142291312e-05 -1.430272303e-05 0.0001902144491 0.000941494493 9.142291312e-05 0.01001985581 @@ -128,19 +128,19 @@ 2.3989153e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.965308273e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5.004079098e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.02787513252 -0.08341770939 -0.02099455056 -0.08341770939 -0.002842814169 -0.001144791589 -0.02099455056 -0.001144791589 -0.0003996543706 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002234024015 -0.001105338108 -0.0004916404603 -0.001105338108 -0.001093698611 -0.0001392383526 -0.0004916404603 -0.0001392383526 0.0001880437497 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001277682332 -0.0001029427151 -0.001074957651 -0.0001029427151 -8.717358666e-05 -0.0001387899519 -0.001074957651 -0.0001387899519 -0.000130581159 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.899674707e-05 -6.036875638e-05 -5.896298555e-05 -6.036875638e-05 -0.0001071031635 -0.0001001027475 -5.896298555e-05 -0.0001001027475 -8.014870527e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.322670487e-06 -0.0001411212625 -6.227136443e-05 -0.0001411212625 -5.464025029e-06 -2.261937184e-06 -6.227136443e-05 -2.261937184e-06 -8.416274358e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.616383334e-05 -3.025239036e-05 2.752980768e-05 -3.025239036e-05 3.098401309e-06 -6.169782552e-06 2.752980768e-05 -6.169782552e-06 -8.006535058e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.67373363e-06 -1.756534094e-05 -1.354250162e-05 -1.756534094e-05 6.692448988e-06 4.878966356e-06 -1.354250162e-05 4.878966356e-06 3.434873614e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.748695124e-06 -7.166008075e-06 -2.09187696e-06 -7.166008075e-06 -3.15841465e-07 -1.646433331e-07 -2.09187696e-06 -1.646433331e-07 -8.284414995e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.277494739e-05 -1.823567806e-05 1.937452388e-06 -1.823567806e-05 -4.989045096e-07 -2.127082941e-07 1.937452388e-06 -2.127082941e-07 -7.964315495e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -7.744914218e-08 -1.780037787e-05 -8.558111614e-06 -1.780037787e-05 1.19307049e-06 6.702802584e-07 -8.558111614e-06 6.702802584e-07 3.868377762e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.441545655e-06 -9.038613878e-06 -2.251014154e-06 -9.038613878e-06 9.084792206e-07 3.491831729e-07 -2.251014154e-06 3.491831729e-07 1.091926848e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.699668358e-06 -6.974517511e-06 -1.126873047e-06 -6.974517511e-06 4.246239746e-07 1.390970162e-07 -1.126873047e-06 1.390970162e-07 2.506115697e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.56603349e-06 -7.470040586e-06 -2.308790109e-06 -7.470040586e-06 2.925180429e-07 1.367605997e-07 -2.308790109e-06 1.367605997e-07 6.536241751e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02787513252 -0.08341770939 -0.02099455056 0 0 -0.08341770939 -0.002842814169 -0.001144791589 0 0 -0.02099455056 -0.001144791589 -0.0003996543706 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002234024015 -0.001105338108 -0.0004916404603 0 0 -0.001105338108 -0.001093698611 -0.0001392383526 0 0 -0.0004916404603 -0.0001392383526 0.0001880437497 0 0 0 0 0 0 0 0 0 0 0 0 +0.001277682332 -0.0001029427151 -0.001074957651 0 0 -0.0001029427151 -8.717358666e-05 -0.0001387899519 0 0 -0.001074957651 -0.0001387899519 -0.000130581159 0 0 0 0 0 0 0 0 0 0 0 0 +2.899674707e-05 -6.036875638e-05 -5.896298555e-05 0 0 -6.036875638e-05 -0.0001071031635 -0.0001001027475 0 0 -5.896298555e-05 -0.0001001027475 -8.014870527e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.322670487e-06 -0.0001411212625 -6.227136443e-05 0 0 -0.0001411212625 -5.464025029e-06 -2.261937184e-06 0 0 -6.227136443e-05 -2.261937184e-06 -8.416274358e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-4.616383334e-05 -3.025239036e-05 2.752980768e-05 0 0 -3.025239036e-05 3.098401309e-06 -6.169782552e-06 0 0 2.752980768e-05 -6.169782552e-06 -8.006535058e-06 0 0 0 0 0 0 0 0 0 0 0 0 +5.67373363e-06 -1.756534094e-05 -1.354250162e-05 0 0 -1.756534094e-05 6.692448988e-06 4.878966356e-06 0 0 -1.354250162e-05 4.878966356e-06 3.434873614e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.748695124e-06 -7.166008075e-06 -2.09187696e-06 0 0 -7.166008075e-06 -3.15841465e-07 -1.646433331e-07 0 0 -2.09187696e-06 -1.646433331e-07 -8.284414995e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-1.277494739e-05 -1.823567806e-05 1.937452388e-06 0 0 -1.823567806e-05 -4.989045096e-07 -2.127082941e-07 0 0 1.937452388e-06 -2.127082941e-07 -7.964315495e-08 0 0 0 0 0 0 0 0 0 0 0 0 +7.744914218e-08 -1.780037787e-05 -8.558111614e-06 0 0 -1.780037787e-05 1.19307049e-06 6.702802584e-07 0 0 -8.558111614e-06 6.702802584e-07 3.868377762e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.441545655e-06 -9.038613878e-06 -2.251014154e-06 0 0 -9.038613878e-06 9.084792206e-07 3.491831729e-07 0 0 -2.251014154e-06 3.491831729e-07 1.091926848e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.699668358e-06 -6.974517511e-06 -1.126873047e-06 0 0 -6.974517511e-06 4.246239746e-07 1.390970162e-07 0 0 -1.126873047e-06 1.390970162e-07 2.506115697e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-1.56603349e-06 -7.470040586e-06 -2.308790109e-06 0 0 -7.470040586e-06 2.925180429e-07 1.367605997e-07 0 0 -2.308790109e-06 1.367605997e-07 6.536241751e-08 0 0 0 0 0 0 0 0 0 0 0 0 -0.0008909365498 0.04753593702 0.0273564007 0.001577710772 0.002551173997 0.04753593702 0.01918495579 -0.008175254176 -0.05169188529 -0.08381881812 0.0273564007 -0.008175254176 -0.0152893366 -0.02856943079 -0.04790379344 0.001577710772 -0.05169188529 -0.02856943079 -0.00082503148 -0.001308262083 0.002551173997 -0.08381881812 -0.04790379344 -0.001308262083 -0.002164329191 5.551950941e-05 0.004453107752 0.002557170907 0.0005000918444 0.0006634938301 0.004453107752 0.002885896902 -0.001737980075 -0.005170571419 -0.008531958914 0.002557170907 -0.001737980075 -0.002917703681 -0.002783268517 -0.004848899761 0.0005000918444 -0.005170571419 -0.002783268517 -0.0006535009624 -0.0009443557835 0.0006634938301 -0.008531958914 -0.004848899761 -0.0009443557835 -0.001398572316 -4.745573528e-05 -0.0001913323253 -0.0001197314333 -4.144257658e-05 7.18885328e-06 -0.0001913323253 -0.0001306747056 0.001052148909 0.001058744118 0.0005374412591 -0.0001197314333 0.001052148909 0.001286017444 0.0006029673376 0.0002738856502 -4.144257658e-05 0.001058744118 0.0006029673376 -2.160863381e-05 -2.053892977e-05 7.18885328e-06 0.0005374412591 0.0002738856502 -2.053892977e-05 -7.855496943e-06 @@ -167,19 +167,19 @@ 7.499945321e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.134496227e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.851725545e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.02895116191 -0.08594598814 0.02125628191 -0.08594598814 -0.002147623067 0.0008385329545 0.02125628191 0.0008385329545 -0.0002780957195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0006846828455 -0.001731586179 0.0004847734994 -0.001731586179 -0.000959499172 0.0001210642321 0.0004847734994 0.0001210642321 0.0001579858118 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001414990612 -1.609236116e-05 0.001115675563 -1.609236116e-05 -6.345324279e-05 0.0001048101808 0.001115675563 0.0001048101808 -9.748679668e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.536450136e-05 -8.967923885e-05 0.0001063048898 -8.967923885e-05 -0.0001054533468 0.0001045147654 0.0001063048898 0.0001045147654 -8.431979262e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.741113411e-05 -0.0001322106907 3.513257489e-05 -0.0001322106907 -1.603389698e-06 -5.868574437e-08 3.513257489e-05 -5.868574437e-08 5.520870346e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.965053297e-05 -2.86140104e-05 -2.289299331e-05 -2.86140104e-05 2.050248283e-06 6.303938531e-06 -2.289299331e-05 6.303938531e-06 -7.639524187e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.072469905e-06 -1.437059667e-05 1.205091731e-05 -1.437059667e-05 5.014206872e-06 -4.007203219e-06 1.205091731e-05 -4.007203219e-06 2.937472983e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.711256114e-06 -6.937755092e-06 2.332773411e-07 -6.937755092e-06 -2.767417213e-07 1.392379119e-07 2.332773411e-07 1.392379119e-07 -6.876213967e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.262198481e-05 -1.999378634e-05 -1.063239369e-06 -1.999378634e-05 -1.160241717e-07 1.186838375e-07 -1.063239369e-06 1.186838375e-07 -9.431564471e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.349965414e-07 -1.677386466e-05 8.423241349e-06 -1.677386466e-05 1.096092371e-06 -6.266660105e-07 8.423241349e-06 -6.266660105e-07 3.647292e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.89958181e-06 -7.964436228e-06 1.220444716e-06 -7.964436228e-06 6.006200049e-07 -1.651550261e-07 1.220444716e-06 -1.651550261e-07 9.355044953e-10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.534799171e-06 -6.959032951e-06 1.195889613e-06 -6.959032951e-06 3.341065262e-07 -1.099185599e-07 1.195889613e-06 -1.099185599e-07 2.14637686e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.507914861e-06 -7.396378094e-06 2.22979844e-06 -7.396378094e-06 2.893161068e-07 -1.282196125e-07 2.22979844e-06 -1.282196125e-07 5.588410864e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02895116191 -0.08594598814 0.02125628191 0 0 -0.08594598814 -0.002147623067 0.0008385329545 0 0 0.02125628191 0.0008385329545 -0.0002780957195 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0006846828455 -0.001731586179 0.0004847734994 0 0 -0.001731586179 -0.000959499172 0.0001210642321 0 0 0.0004847734994 0.0001210642321 0.0001579858118 0 0 0 0 0 0 0 0 0 0 0 0 +0.001414990612 -1.609236116e-05 0.001115675563 0 0 -1.609236116e-05 -6.345324279e-05 0.0001048101808 0 0 0.001115675563 0.0001048101808 -9.748679668e-05 0 0 0 0 0 0 0 0 0 0 0 0 +6.536450136e-05 -8.967923885e-05 0.0001063048898 0 0 -8.967923885e-05 -0.0001054533468 0.0001045147654 0 0 0.0001063048898 0.0001045147654 -8.431979262e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.741113411e-05 -0.0001322106907 3.513257489e-05 0 0 -0.0001322106907 -1.603389698e-06 -5.868574437e-08 0 0 3.513257489e-05 -5.868574437e-08 5.520870346e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.965053297e-05 -2.86140104e-05 -2.289299331e-05 0 0 -2.86140104e-05 2.050248283e-06 6.303938531e-06 0 0 -2.289299331e-05 6.303938531e-06 -7.639524187e-06 0 0 0 0 0 0 0 0 0 0 0 0 +6.072469905e-06 -1.437059667e-05 1.205091731e-05 0 0 -1.437059667e-05 5.014206872e-06 -4.007203219e-06 0 0 1.205091731e-05 -4.007203219e-06 2.937472983e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.711256114e-06 -6.937755092e-06 2.332773411e-07 0 0 -6.937755092e-06 -2.767417213e-07 1.392379119e-07 0 0 2.332773411e-07 1.392379119e-07 -6.876213967e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-1.262198481e-05 -1.999378634e-05 -1.063239369e-06 0 0 -1.999378634e-05 -1.160241717e-07 1.186838375e-07 0 0 -1.063239369e-06 1.186838375e-07 -9.431564471e-08 0 0 0 0 0 0 0 0 0 0 0 0 +8.349965414e-07 -1.677386466e-05 8.423241349e-06 0 0 -1.677386466e-05 1.096092371e-06 -6.266660105e-07 0 0 8.423241349e-06 -6.266660105e-07 3.647292e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.89958181e-06 -7.964436228e-06 1.220444716e-06 0 0 -7.964436228e-06 6.006200049e-07 -1.651550261e-07 0 0 1.220444716e-06 -1.651550261e-07 9.355044953e-10 0 0 0 0 0 0 0 0 0 0 0 0 +-2.534799171e-06 -6.959032951e-06 1.195889613e-06 0 0 -6.959032951e-06 3.341065262e-07 -1.099185599e-07 0 0 1.195889613e-06 -1.099185599e-07 2.14637686e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-1.507914861e-06 -7.396378094e-06 2.22979844e-06 0 0 -7.396378094e-06 2.893161068e-07 -1.282196125e-07 0 0 2.22979844e-06 -1.282196125e-07 5.588410864e-08 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002086566402 0.04794640418 -0.0269642189 0.001167549132 -0.001838609197 0.04794640418 0.01896749681 0.008307886699 -0.052497205 0.08401461565 -0.0269642189 0.008307886699 -0.01497486642 0.02842912468 -0.04708849263 0.001167549132 -0.052497205 0.02842912468 -0.0006541590569 0.00101367912 -0.001838609197 0.08401461565 -0.04708849263 0.00101367912 -0.001622799678 0.000222309513 0.005372404097 -0.002957544798 0.0003815655706 -0.0004853929067 0.005372404097 0.003355515545 0.001985594458 -0.006087298871 0.01009425177 -0.002957544798 0.001985594458 -0.00326433934 0.003172884502 -0.005563097055 0.0003815655706 -0.006087298871 0.003172884502 -0.0005592108887 0.0007954010604 -0.0004853929067 0.01009425177 -0.005563097055 0.0007954010604 -0.001153232115 -3.887757498e-05 -0.0002762227744 0.0001613528515 -3.477207646e-05 4.116853064e-06 -0.0002762227744 -0.0001857282938 -0.001029076881 0.001074357119 -0.0006702878 0.0001613528515 -0.001029076881 0.001250779153 -0.0005970228183 0.0003480784913 -3.477207646e-05 0.001074357119 -0.0005970228183 -3.361700202e-05 2.787129805e-05 4.116853064e-06 -0.0006702878 0.0003480784913 2.787129805e-05 -2.558769597e-06 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_3_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_3_ref.dat index a47ec0bc40..47f68e5feb 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_3_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_3_ref.dat @@ -11,19 +11,19 @@ 6.879910873e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.767165299e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.285308318e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.09439255942 0.06317922388 0.1106867236 0.06317922388 0.01019360583 0.01684425977 0.1106867236 0.01684425977 0.03055015238 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.05033580992 0.02556454642 0.04623016323 0.02556454642 0.02347303263 0.03823621729 0.04623016323 0.03823621729 0.07084596183 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.004792894199 -0.001461663339 -0.002397963533 -0.001461663339 0.01471952138 0.02391238616 -0.002397963533 0.02391238616 0.04473420355 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003955400295 -0.003502907191 -0.0063456397 -0.003502907191 0.003836190704 0.006269574235 -0.0063456397 0.006269574235 0.01176734391 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001218202336 -0.000806050228 -0.001467239195 -0.000806050228 0.0002030447468 0.0003721413063 -0.001467239195 0.0003721413063 0.0006656369758 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001667875192 5.039801337e-05 9.098330354e-05 5.039801337e-05 -0.0004882058444 -0.0008075357062 9.098330354e-05 -0.0008075357062 -0.001493120177 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003387680253 0.0003537555428 0.0006304847898 0.0003537555428 -0.0003909346855 -0.0006595318752 0.0006304847898 -0.0006595318752 -0.001204967032 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.876632757e-05 5.010701928e-05 9.220540577e-05 5.010701928e-05 -3.949406107e-05 -7.167115225e-05 9.220540577e-05 -7.167115225e-05 -0.0001295052338 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.797475965e-05 1.022137697e-06 1.679082839e-06 1.022137697e-06 6.350104579e-05 0.0001130109356 1.679082839e-06 0.0001130109356 0.0002049180156 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.081821355e-05 -3.620237784e-05 -6.632125447e-05 -3.620237784e-05 3.160880721e-05 5.591329107e-05 -6.632125447e-05 5.591329107e-05 0.000103216986 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.071165625e-06 9.06273645e-07 1.240917196e-06 9.06273645e-07 4.531324266e-06 8.767215534e-06 1.240917196e-06 8.767215534e-06 1.544226451e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.105773913e-06 -1.722526156e-06 -3.143819286e-06 -1.722526156e-06 -2.547109217e-06 -4.797259279e-06 -3.143819286e-06 -4.797259279e-06 -8.652358228e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.10361673e-06 7.306366261e-06 1.269057498e-05 7.306366261e-06 -4.582922069e-06 -7.691376788e-06 1.269057498e-05 -7.691376788e-06 -1.388667744e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.09439255942 0.06317922388 0.1106867236 0 0 0.06317922388 0.01019360583 0.01684425977 0 0 0.1106867236 0.01684425977 0.03055015238 0 0 0 0 0 0 0 0 0 0 0 0 +-0.05033580992 0.02556454642 0.04623016323 0 0 0.02556454642 0.02347303263 0.03823621729 0 0 0.04623016323 0.03823621729 0.07084596183 0 0 0 0 0 0 0 0 0 0 0 0 +-0.004792894199 -0.001461663339 -0.002397963533 0 0 -0.001461663339 0.01471952138 0.02391238616 0 0 -0.002397963533 0.02391238616 0.04473420355 0 0 0 0 0 0 0 0 0 0 0 0 +0.003955400295 -0.003502907191 -0.0063456397 0 0 -0.003502907191 0.003836190704 0.006269574235 0 0 -0.0063456397 0.006269574235 0.01176734391 0 0 0 0 0 0 0 0 0 0 0 0 +0.001218202336 -0.000806050228 -0.001467239195 0 0 -0.000806050228 0.0002030447468 0.0003721413063 0 0 -0.001467239195 0.0003721413063 0.0006656369758 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001667875192 5.039801337e-05 9.098330354e-05 0 0 5.039801337e-05 -0.0004882058444 -0.0008075357062 0 0 9.098330354e-05 -0.0008075357062 -0.001493120177 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003387680253 0.0003537555428 0.0006304847898 0 0 0.0003537555428 -0.0003909346855 -0.0006595318752 0 0 0.0006304847898 -0.0006595318752 -0.001204967032 0 0 0 0 0 0 0 0 0 0 0 0 +-5.876632757e-05 5.010701928e-05 9.220540577e-05 0 0 5.010701928e-05 -3.949406107e-05 -7.167115225e-05 0 0 9.220540577e-05 -7.167115225e-05 -0.0001295052338 0 0 0 0 0 0 0 0 0 0 0 0 +-3.797475965e-05 1.022137697e-06 1.679082839e-06 0 0 1.022137697e-06 6.350104579e-05 0.0001130109356 0 0 1.679082839e-06 0.0001130109356 0.0002049180156 0 0 0 0 0 0 0 0 0 0 0 0 +4.081821355e-05 -3.620237784e-05 -6.632125447e-05 0 0 -3.620237784e-05 3.160880721e-05 5.591329107e-05 0 0 -6.632125447e-05 5.591329107e-05 0.000103216986 0 0 0 0 0 0 0 0 0 0 0 0 +-4.071165625e-06 9.06273645e-07 1.240917196e-06 0 0 9.06273645e-07 4.531324266e-06 8.767215534e-06 0 0 1.240917196e-06 8.767215534e-06 1.544226451e-05 0 0 0 0 0 0 0 0 0 0 0 0 +5.105773913e-06 -1.722526156e-06 -3.143819286e-06 0 0 -1.722526156e-06 -2.547109217e-06 -4.797259279e-06 0 0 -3.143819286e-06 -4.797259279e-06 -8.652358228e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-8.10361673e-06 7.306366261e-06 1.269057498e-05 0 0 7.306366261e-06 -4.582922069e-06 -7.691376788e-06 0 0 1.269057498e-05 -7.691376788e-06 -1.388667744e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.01143076402 -0.0002489133586 -0.0008451177364 0.007614654174 -0.01209003761 -0.0002489133586 -0.01031241688 -0.01688909103 -0.00732101974 0.01060006669 -0.0008451177364 -0.01688909103 -0.0304699012 -0.01201834477 0.01960291205 0.007614654174 -0.00732101974 -0.01201834477 0.00119620399 -0.002274852069 -0.01209003761 0.01060006669 0.01960291205 -0.002274852069 0.003453074169 0.01415270408 0.0008575964682 0.001311139056 0.00946646905 -0.01545105788 0.0008575964682 -0.008758200783 -0.01425101522 -0.005496853586 0.007680301648 0.001311139056 -0.01425101522 -0.02630041676 -0.008381519453 0.01465188945 0.00946646905 -0.005496853586 -0.008381519453 0.003232559121 -0.006468624649 -0.01545105788 0.007680301648 0.01465188945 -0.006468624649 0.009865282298 0.006559709953 0.001178359062 0.002090691798 0.004736652559 -0.007920324583 0.001178359062 -0.002263546978 -0.003793979076 -0.0009372663091 0.001144123894 0.002090691798 -0.003793979076 -0.007104549894 -0.001107530968 0.00241798068 0.004736652559 -0.0009372663091 -0.001107530968 0.002342590812 -0.004856932681 -0.007920324583 0.001144123894 0.00241798068 -0.004856932681 0.007476868081 @@ -50,19 +50,19 @@ 4.587509211e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.851023589e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.578757228e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03159993316 -0.002305422345 -0.005359710285 -0.002305422345 0.02197061592 0.03729794046 -0.005359710285 0.03729794046 0.06918797271 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.03961870174 -0.0263311942 -0.04832213666 -0.0263311942 0.01686994378 0.02818665649 -0.04832213666 0.02818665649 0.05367144632 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.002557435303 -0.001458154968 -0.002593997169 -0.001458154968 0.000731010571 0.001269432912 -0.002593997169 0.001269432912 0.002358940998 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.006629214489 -0.001374867422 -0.00265804676 -0.001374867422 -7.536135138e-06 2.805772626e-05 -0.00265804676 2.805772626e-05 0.0001458398988 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0004460718509 0.0001861359664 0.0003002327769 0.0001861359664 -0.0001181188035 -0.0001860213273 0.0003002327769 -0.0001860213273 -0.0003361081009 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.984256294e-05 9.728277224e-05 0.0001626550141 9.728277224e-05 -7.588658275e-05 -0.0001181360281 0.0001626550141 -0.0001181360281 -0.0002129721307 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0001099484001 -2.710918039e-05 -5.077645838e-05 -2.710918039e-05 3.815629541e-06 7.496278551e-06 -5.077645838e-05 7.496278551e-06 1.405598113e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.355237025e-05 -7.812838823e-06 -1.273434472e-05 -7.812838823e-06 1.741900549e-05 3.14437797e-05 -1.273434472e-05 3.14437797e-05 5.593263705e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.440445442e-05 3.27365266e-05 5.777590269e-05 3.27365266e-05 -1.27803351e-05 -2.074443889e-05 5.777590269e-05 -2.074443889e-05 -3.838783626e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.679642366e-05 1.723003457e-05 2.997916399e-05 1.723003457e-05 -6.419726279e-06 -1.044480533e-05 2.997916399e-05 -1.044480533e-05 -1.878427706e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -8.266189485e-09 1.173581592e-06 1.798653217e-06 1.173581592e-06 6.689034301e-07 1.880336386e-06 1.798653217e-06 1.880336386e-06 3.018358985e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.415376218e-06 -5.541551023e-07 -1.249370034e-06 -5.541551023e-07 1.226671594e-06 2.786621016e-06 -1.249370034e-06 2.786621016e-06 4.769699692e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.08220895e-05 5.743976651e-06 9.886368445e-06 5.743976651e-06 -1.990270729e-06 -2.961336072e-06 9.886368445e-06 -2.961336072e-06 -5.555978305e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03159993316 -0.002305422345 -0.005359710285 0 0 -0.002305422345 0.02197061592 0.03729794046 0 0 -0.005359710285 0.03729794046 0.06918797271 0 0 0 0 0 0 0 0 0 0 0 0 +0.03961870174 -0.0263311942 -0.04832213666 0 0 -0.0263311942 0.01686994378 0.02818665649 0 0 -0.04832213666 0.02818665649 0.05367144632 0 0 0 0 0 0 0 0 0 0 0 0 +-0.002557435303 -0.001458154968 -0.002593997169 0 0 -0.001458154968 0.000731010571 0.001269432912 0 0 -0.002593997169 0.001269432912 0.002358940998 0 0 0 0 0 0 0 0 0 0 0 0 +0.006629214489 -0.001374867422 -0.00265804676 0 0 -0.001374867422 -7.536135138e-06 2.805772626e-05 0 0 -0.00265804676 2.805772626e-05 0.0001458398988 0 0 0 0 0 0 0 0 0 0 0 0 +0.0004460718509 0.0001861359664 0.0003002327769 0 0 0.0001861359664 -0.0001181188035 -0.0001860213273 0 0 0.0003002327769 -0.0001860213273 -0.0003361081009 0 0 0 0 0 0 0 0 0 0 0 0 +-5.984256294e-05 9.728277224e-05 0.0001626550141 0 0 9.728277224e-05 -7.588658275e-05 -0.0001181360281 0 0 0.0001626550141 -0.0001181360281 -0.0002129721307 0 0 0 0 0 0 0 0 0 0 0 0 +0.0001099484001 -2.710918039e-05 -5.077645838e-05 0 0 -2.710918039e-05 3.815629541e-06 7.496278551e-06 0 0 -5.077645838e-05 7.496278551e-06 1.405598113e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.355237025e-05 -7.812838823e-06 -1.273434472e-05 0 0 -7.812838823e-06 1.741900549e-05 3.14437797e-05 0 0 -1.273434472e-05 3.14437797e-05 5.593263705e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-7.440445442e-05 3.27365266e-05 5.777590269e-05 0 0 3.27365266e-05 -1.27803351e-05 -2.074443889e-05 0 0 5.777590269e-05 -2.074443889e-05 -3.838783626e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-4.679642366e-05 1.723003457e-05 2.997916399e-05 0 0 1.723003457e-05 -6.419726279e-06 -1.044480533e-05 0 0 2.997916399e-05 -1.044480533e-05 -1.878427706e-05 0 0 0 0 0 0 0 0 0 0 0 0 +8.266189485e-09 1.173581592e-06 1.798653217e-06 0 0 1.173581592e-06 6.689034301e-07 1.880336386e-06 0 0 1.798653217e-06 1.880336386e-06 3.018358985e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.415376218e-06 -5.541551023e-07 -1.249370034e-06 0 0 -5.541551023e-07 1.226671594e-06 2.786621016e-06 0 0 -1.249370034e-06 2.786621016e-06 4.769699692e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.08220895e-05 5.743976651e-06 9.886368445e-06 0 0 5.743976651e-06 -1.990270729e-06 -2.961336072e-06 0 0 9.886368445e-06 -2.961336072e-06 -5.555978305e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.06521902921 0.0373038614 0.06742249305 0.003500974148 -0.004121833421 0.0373038614 -0.006122824045 -0.01090540346 0.004227826271 -0.008014814167 0.06742249305 -0.01090540346 -0.02003707484 0.009211705533 -0.01338250342 0.003500974148 0.004227826271 0.009211705533 0.002493471938 -0.004278109606 -0.004121833421 -0.008014814167 -0.01338250342 -0.004278109606 0.005853429539 0.00781927671 -0.01315030598 -0.02421022822 -0.006493381366 0.009825895055 -0.01315030598 0.02213053253 0.03722318781 0.007398487229 -0.0125615233 -0.02421022822 0.03722318781 0.07116923718 0.01552782808 -0.02211503451 -0.006493381366 0.007398487229 0.01552782808 0.001831551245 -0.003180246953 0.009825895055 -0.0125615233 -0.02211503451 -0.003180246953 0.004257234482 0.001745499054 -0.003784491362 -0.00689455078 -0.0003173223171 0.0003566902205 -0.003784491362 0.005288116522 0.008686629059 0.0008699973328 -0.001514531836 -0.00689455078 0.008686629059 0.01663176316 0.001935382424 -0.002565131955 -0.0003173223171 0.0008699973328 0.001935382424 -3.669608692e-06 4.89242362e-05 0.0003566902205 -0.001514531836 -0.002565131955 4.89242362e-05 -0.000138924636 @@ -74,7 +74,7 @@ -8.416230876e-05 4.451669223e-05 8.132538992e-05 1.623264927e-05 -2.363983728e-05 4.451669223e-05 -2.14534474e-05 -3.862447431e-05 -7.679308594e-06 1.13281123e-05 8.132538992e-05 -3.862447431e-05 -7.049700531e-05 -1.430556356e-05 2.040870467e-05 1.623264927e-05 -7.679308594e-06 -1.430556356e-05 -2.753516114e-06 4.184510268e-06 -2.363983728e-05 1.13281123e-05 2.040870467e-05 4.184510268e-06 -5.896731736e-06 2.56574684e-06 3.116655493e-06 4.654475272e-06 1.097877094e-06 -1.388298209e-06 3.116655493e-06 -4.918305599e-06 -8.519280176e-06 -1.632477136e-06 2.436283272e-06 4.654475272e-06 -8.519280176e-06 -1.458092262e-05 -2.940035842e-06 4.141692111e-06 1.097877094e-06 -1.632477136e-06 -2.940035842e-06 -5.408485631e-07 8.412855844e-07 -1.388298209e-06 2.436283272e-06 4.141692111e-06 8.412855844e-07 -1.176634135e-06 -2.856562727e-07 -7.093069449e-08 -3.303824751e-07 -4.020020237e-07 6.614391025e-07 -7.093069449e-08 3.483553179e-06 6.032778249e-06 1.769772496e-06 -2.589511078e-06 -3.303824751e-07 6.032778249e-06 1.124985191e-05 3.11126489e-06 -4.699036649e-06 -4.020020237e-07 1.769772496e-06 3.11126489e-06 6.77708068e-07 -9.796490906e-07 6.614391025e-07 -2.589511078e-06 -4.699036649e-06 -9.796490906e-07 1.440366414e-06 --6.817514727e-06 3.983371228e-06 7.032831756e-06 8.246727876e-07 -1.125165698e-06 3.983371228e-06 -1.539950929e-06 -2.954999787e-06 -9.229520494e-08 1.696222722e-07 7.032831756e-06 -2.954999787e-06 -5.170949685e-06 -2.475433237e-07 2.747057101e-07 8.246727876e-07 -9.229520494e-08 -2.475433237e-07 1.176586068e-07 -1.52100389e-07 -1.125165698e-06 1.696222722e-07 2.747057101e-07 -1.52100389e-07 2.388772292e-07 +-6.817514727e-06 3.983371228e-06 7.032831756e-06 8.246727876e-07 -1.125165698e-06 3.983371228e-06 -1.539950929e-06 -2.954999787e-06 -9.229520495e-08 1.696222722e-07 7.032831756e-06 -2.954999787e-06 -5.170949685e-06 -2.475433237e-07 2.747057101e-07 8.246727876e-07 -9.229520495e-08 -2.475433237e-07 1.176586068e-07 -1.52100389e-07 -1.125165698e-06 1.696222722e-07 2.747057101e-07 -1.52100389e-07 2.388772292e-07 -3.533537095e-06 5.342403492e-06 9.203854064e-06 1.649858917e-06 -2.290828039e-06 5.342403492e-06 -4.591870855e-06 -8.29555273e-06 -1.336846942e-06 1.992708665e-06 9.203854064e-06 -8.29555273e-06 -1.468288948e-05 -2.470054842e-06 3.524689736e-06 1.649858917e-06 -1.336846942e-06 -2.470054842e-06 -3.870380853e-07 5.919985358e-07 -2.290828039e-06 1.992708665e-06 3.524689736e-06 5.919985358e-07 -8.446504776e-07 0.0003444464134 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0006613936461 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 @@ -89,19 +89,19 @@ -2.32364548e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.233101354e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.511284608e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0314787175 0.05617587518 0.05719551801 0.05617587518 0.0005464589719 0.0003540732579 0.05719551801 0.0003540732579 0.000237711749 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.000282722103 0.0008211028254 0.0006443467169 0.0008211028254 0.000427628181 0.0001071457845 0.0006443467169 0.0001071457845 -1.399663298e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001143537387 0.001221634683 -0.0002400935216 0.001221634683 -0.0001338981334 -3.622832054e-05 -0.0002400935216 -3.622832054e-05 3.546973701e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.245822945e-06 6.795702963e-05 3.90611346e-05 6.795702963e-05 -6.637196373e-05 -1.961876289e-05 3.90611346e-05 -1.961876289e-05 8.414585488e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.979927066e-05 0.0001694465324 8.461756687e-05 0.0001694465324 1.208073788e-06 5.017374615e-07 8.461756687e-05 5.017374615e-07 2.363787422e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.510184451e-05 -1.748066395e-05 3.221724653e-05 -1.748066395e-05 -1.048347915e-05 -3.039317223e-06 3.221724653e-05 -3.039317223e-06 -2.574654096e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.087267405e-06 1.584031843e-05 7.560077093e-06 1.584031843e-05 1.384624307e-06 4.531596429e-07 7.560077093e-06 4.531596429e-07 2.02087043e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.963763086e-07 7.797965e-06 4.108076306e-06 7.797965e-06 1.012670491e-06 4.91025514e-07 4.108076306e-06 4.91025514e-07 2.272745456e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.294386174e-05 4.543468917e-06 1.389480316e-05 4.543468917e-06 1.432432038e-07 4.775019591e-07 1.389480316e-05 4.775019591e-07 4.921698347e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.736971087e-06 1.33505787e-05 1.044654114e-05 1.33505787e-05 2.059988104e-07 1.140113985e-07 1.044654114e-05 1.140113985e-07 5.367584357e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.998487867e-06 6.777117368e-06 5.867171262e-06 6.777117368e-06 -9.021568869e-08 -3.763159804e-08 5.867171262e-06 -3.763159804e-08 -1.984323693e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.911684165e-06 3.522395871e-06 4.62291932e-06 3.522395871e-06 5.282319206e-08 1.049336719e-07 4.62291932e-06 1.049336719e-07 9.854669708e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.130214184e-06 4.824969218e-06 4.687958243e-06 4.824969218e-06 2.549753943e-07 1.970505195e-07 4.687958243e-06 1.970505195e-07 1.371902632e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0314787175 0.05617587518 0.05719551801 0 0 0.05617587518 0.0005464589719 0.0003540732579 0 0 0.05719551801 0.0003540732579 0.000237711749 0 0 0 0 0 0 0 0 0 0 0 0 +-0.000282722103 0.0008211028254 0.0006443467169 0 0 0.0008211028254 0.000427628181 0.0001071457845 0 0 0.0006443467169 0.0001071457845 -1.399663298e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.001143537387 0.001221634683 -0.0002400935216 0 0 0.001221634683 -0.0001338981334 -3.622832054e-05 0 0 -0.0002400935216 -3.622832054e-05 3.546973701e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-7.245822945e-06 6.795702963e-05 3.90611346e-05 0 0 6.795702963e-05 -6.637196373e-05 -1.961876289e-05 0 0 3.90611346e-05 -1.961876289e-05 8.414585488e-08 0 0 0 0 0 0 0 0 0 0 0 0 +1.979927066e-05 0.0001694465324 8.461756687e-05 0 0 0.0001694465324 1.208073788e-06 5.017374615e-07 0 0 8.461756687e-05 5.017374615e-07 2.363787422e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-4.510184451e-05 -1.748066395e-05 3.221724653e-05 0 0 -1.748066395e-05 -1.048347915e-05 -3.039317223e-06 0 0 3.221724653e-05 -3.039317223e-06 -2.574654096e-08 0 0 0 0 0 0 0 0 0 0 0 0 +2.087267405e-06 1.584031843e-05 7.560077093e-06 0 0 1.584031843e-05 1.384624307e-06 4.531596429e-07 0 0 7.560077093e-06 4.531596429e-07 2.02087043e-08 0 0 0 0 0 0 0 0 0 0 0 0 +3.963763086e-07 7.797965e-06 4.108076306e-06 0 0 7.797965e-06 1.012670491e-06 4.91025514e-07 0 0 4.108076306e-06 4.91025514e-07 2.272745456e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.294386174e-05 4.543468917e-06 1.389480316e-05 0 0 4.543468917e-06 1.432432038e-07 4.775019591e-07 0 0 1.389480316e-05 4.775019591e-07 4.921698347e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.736971087e-06 1.33505787e-05 1.044654114e-05 0 0 1.33505787e-05 2.059988104e-07 1.140113985e-07 0 0 1.044654114e-05 1.140113985e-07 5.367584357e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-1.998487867e-06 6.777117368e-06 5.867171262e-06 0 0 6.777117368e-06 -9.021568869e-08 -3.763159804e-08 0 0 5.867171262e-06 -3.763159804e-08 -1.984323693e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-2.911684165e-06 3.522395871e-06 4.62291932e-06 0 0 3.522395871e-06 5.282319206e-08 1.049336719e-07 0 0 4.62291932e-06 1.049336719e-07 9.854669708e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-2.130214184e-06 4.824969218e-06 4.687958243e-06 0 0 4.824969218e-06 2.549753943e-07 1.970505195e-07 0 0 4.687958243e-06 1.970505195e-07 1.371902632e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.002210482023 -0.04717019386 -0.02662543222 -0.0005168208836 -0.0007615367465 -0.04717019386 -0.02355368776 0.00582937469 0.0473027673 0.08461462501 -0.02662543222 0.00582937469 0.01401537387 0.0259534965 0.04815745363 -0.0005168208836 0.0473027673 0.0259534965 9.691429176e-05 8.323665346e-05 -0.0007615367465 0.08461462501 0.04815745363 8.323665346e-05 0.0001059859368 0.0007916167586 -0.004328098164 -0.002652152952 -0.0003483081226 -0.0003643136205 -0.004328098164 -0.004064905084 0.001066687742 0.004637229501 0.008561307066 -0.002652152952 0.001066687742 0.002434129904 0.002699900979 0.005185482457 -0.0003483081226 0.004637229501 0.002699900979 0.0001412969933 9.348792622e-05 -0.0003643136205 0.008561307066 0.005185482457 9.348792622e-05 -2.314103737e-05 -4.096924423e-05 1.397348596e-05 1.868322719e-05 1.845102145e-05 -2.280479021e-05 1.397348596e-05 0.001981351326 3.451898575e-05 0.0003598023218 -0.0009862217616 1.868322719e-05 3.451898575e-05 -0.000532558285 0.0001682820926 -0.0005535276903 1.845102145e-05 0.0003598023218 0.0001682820926 1.864529205e-05 1.701128664e-05 -2.280479021e-05 -0.0009862217616 -0.0005535276903 1.701128664e-05 3.748014286e-06 @@ -128,19 +128,19 @@ 4.905409178e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.467742983e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.169132552e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.02199611695 0.07287874992 0.1175399994 0.07287874992 0.05072157814 0.01948294475 0.1175399994 0.01948294475 0.07369488634 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.08482634461 -0.003450948555 -0.003885546289 -0.003450948555 0.03177465756 0.001874894995 -0.003885546289 0.001874894995 0.03612524472 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.02845883934 0.0224744595 0.04057723002 0.0224744595 0.005245240818 0.0030232807 0.04057723002 0.0030232807 0.00843304975 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.005210424515 -0.0001040605843 -0.0001737547806 -0.0001040605843 0.008075232206 0.0158868097 -0.0001737547806 0.0158868097 0.02782303349 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0005368044295 0.0003116621076 0.0005382469185 0.0003116621076 -8.867757049e-05 -8.36862921e-05 0.0005382469185 -8.36862921e-05 -0.0001688773215 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003171906137 0.0002580681287 0.0004522029073 0.0002580681287 -7.876908499e-06 -0.0003739516946 0.0004522029073 -0.0003739516946 -0.0005101189253 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003128912297 8.355738976e-05 0.0001402734591 8.355738976e-05 0.0002768644097 0.0006558398409 0.0001402734591 0.0006558398409 0.00106701292 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.697503373e-05 3.411380142e-05 5.52374296e-05 3.411380142e-05 -4.898742271e-05 -8.858804573e-05 5.52374296e-05 -8.858804573e-05 -0.0001491499303 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.584983996e-06 2.386326562e-06 2.715962111e-06 2.386326562e-06 1.651384868e-05 -2.00540876e-05 2.715962111e-06 -2.00540876e-05 -1.119131523e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001015147786 4.075026735e-05 6.877101634e-05 4.075026735e-05 2.328119037e-05 8.057300875e-05 6.877101634e-05 8.057300875e-05 0.0001175722707 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.519420099e-06 2.168238364e-05 3.148512159e-05 2.168238364e-05 -2.510015106e-05 -4.087038919e-05 3.148512159e-05 -4.087038919e-05 -6.921317833e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.517396497e-05 -3.556852035e-06 -9.315310219e-06 -3.556852035e-06 8.095689482e-06 1.188011244e-05 -9.315310219e-06 1.188011244e-05 2.236300658e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.23383948e-05 1.213480833e-05 1.95735442e-05 1.213480833e-05 -5.13899529e-07 7.986592764e-06 1.95735442e-05 7.986592764e-06 9.032786762e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +0.02199611695 0.07287874992 0.1175399994 0 0 0.07287874992 0.05072157814 0.01948294475 0 0 0.1175399994 0.01948294475 0.07369488634 0 0 0 0 0 0 0 0 0 0 0 0 +0.08482634461 -0.003450948555 -0.003885546289 0 0 -0.003450948555 0.03177465756 0.001874894995 0 0 -0.003885546289 0.001874894995 0.03612524472 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02845883934 0.0224744595 0.04057723002 0 0 0.0224744595 0.005245240818 0.0030232807 0 0 0.04057723002 0.0030232807 0.00843304975 0 0 0 0 0 0 0 0 0 0 0 0 +-0.005210424515 -0.0001040605843 -0.0001737547806 0 0 -0.0001040605843 0.008075232206 0.0158868097 0 0 -0.0001737547806 0.0158868097 0.02782303349 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0005368044295 0.0003116621076 0.0005382469185 0 0 0.0003116621076 -8.867757049e-05 -8.36862921e-05 0 0 0.0005382469185 -8.36862921e-05 -0.0001688773215 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003171906137 0.0002580681287 0.0004522029073 0 0 0.0002580681287 -7.876908499e-06 -0.0003739516946 0 0 0.0004522029073 -0.0003739516946 -0.0005101189253 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003128912297 8.355738976e-05 0.0001402734591 0 0 8.355738976e-05 0.0002768644097 0.0006558398409 0 0 0.0001402734591 0.0006558398409 0.00106701292 0 0 0 0 0 0 0 0 0 0 0 0 +1.697503373e-05 3.411380142e-05 5.52374296e-05 0 0 3.411380142e-05 -4.898742271e-05 -8.858804573e-05 0 0 5.52374296e-05 -8.858804573e-05 -0.0001491499303 0 0 0 0 0 0 0 0 0 0 0 0 +-2.584983996e-06 2.386326562e-06 2.715962111e-06 0 0 2.386326562e-06 1.651384868e-05 -2.00540876e-05 0 0 2.715962111e-06 -2.00540876e-05 -1.119131523e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001015147786 4.075026735e-05 6.877101634e-05 0 0 4.075026735e-05 2.328119037e-05 8.057300875e-05 0 0 6.877101634e-05 8.057300875e-05 0.0001175722707 0 0 0 0 0 0 0 0 0 0 0 0 +-3.519420099e-06 2.168238364e-05 3.148512159e-05 0 0 2.168238364e-05 -2.510015106e-05 -4.087038919e-05 0 0 3.148512159e-05 -4.087038919e-05 -6.921317833e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.517396497e-05 -3.556852035e-06 -9.315310219e-06 0 0 -3.556852035e-06 8.095689482e-06 1.188011244e-05 0 0 -9.315310219e-06 1.188011244e-05 2.236300658e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.23383948e-05 1.213480833e-05 1.95735442e-05 0 0 1.213480833e-05 -5.13899529e-07 7.986592764e-06 0 0 1.95735442e-05 7.986592764e-06 9.032786762e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.1911702673 -0.001744703951 0.009671168091 0.008883134721 -0.01564710327 -0.001744703951 -0.05469020022 0.03208811799 0.1210821023 0.1580070353 0.009671168091 0.03208811799 -0.01093393251 -0.1502071447 0.05871138926 0.008883134721 0.1210821023 -0.1502071447 0.0441403956 0.004861301045 -0.01564710327 0.1580070353 0.05871138926 0.004861301045 0.03896910252 -0.0541086518 -0.01193688935 -0.02595160971 -0.009603703675 0.01417685656 -0.01193688935 0.02295449729 0.08957296631 0.03712186031 0.008801849963 -0.02595160971 0.08957296631 0.1357326937 -0.01270160106 -0.02774583128 -0.009603703675 0.03712186031 -0.01270160106 0.04779786005 0.01318152325 0.01417685656 0.008801849963 -0.02774583128 0.01318152325 0.03215324917 0.003233227485 -0.007451979378 -0.01380751984 -0.000501203704 0.0006625825035 -0.007451979378 0.001071717468 0.006045055706 -0.006440771712 0.00847795031 -0.01380751984 0.006045055706 0.00885354471 -0.009886811171 0.01639128256 -0.000501203704 -0.006440771712 -0.009886811171 0.006598785759 0.01151353845 0.0006625825035 0.00847795031 0.01639128256 0.01151353845 -0.004501474945 @@ -150,7 +150,7 @@ 0.0001550406691 -9.073814874e-05 -0.0001578389931 6.148706982e-05 -0.0001025336273 -9.073814874e-05 -0.000246763869 -0.0004436814839 -0.0002051436496 0.0003383417313 -0.0001578389931 -0.0004436814839 -0.000787282071 -0.0003627357523 0.0005980475295 6.148706982e-05 -0.0002051436496 -0.0003627357523 -7.915148881e-05 9.774409651e-05 -0.0001025336273 0.0003383417313 0.0005980475295 9.774409651e-05 -0.0001772038862 7.916296109e-05 -1.137287831e-06 -2.395681499e-06 6.986540327e-05 -0.0001173638668 -1.137287831e-06 1.993951935e-05 4.100406401e-05 2.646454612e-05 -2.959089717e-05 -2.395681499e-06 4.100406401e-05 7.429359868e-05 2.936165928e-05 -6.408730131e-05 6.986540327e-05 2.646454612e-05 2.936165928e-05 0.0001262505126 -7.886844418e-05 -0.0001173638668 -2.959089717e-05 -6.408730131e-05 -7.886844418e-05 0.0002116183292 -3.611669293e-05 5.814025879e-05 0.0001126139816 5.87916094e-05 -9.419040738e-05 5.814025879e-05 -9.701355238e-06 1.308786971e-05 7.3660876e-05 -1.348071428e-05 0.0001126139816 1.308786971e-05 5.208196585e-06 2.332231862e-05 -9.306606466e-05 5.87916094e-05 7.3660876e-05 2.332231862e-05 6.148994591e-05 -9.957495375e-05 -9.419040738e-05 -1.348071428e-05 -9.306606466e-05 -9.957495375e-05 0.000165836089 --7.684792344e-07 -1.839941247e-05 -2.531143342e-05 8.239142414e-07 1.045572666e-06 -1.839941247e-05 -4.425659522e-05 -7.158382234e-05 -1.761558435e-05 7.697003389e-05 -2.531143342e-05 -7.158382234e-05 -0.0001309885163 -7.315057824e-05 0.0001059774496 8.239142414e-07 -1.761558435e-05 -7.315057824e-05 -4.388258902e-05 2.275630369e-05 1.045572666e-06 7.697003389e-05 0.0001059774496 2.275630369e-05 -6.730470643e-05 +-7.684792344e-07 -1.839941247e-05 -2.531143342e-05 8.239142414e-07 1.045572665e-06 -1.839941247e-05 -4.425659522e-05 -7.158382234e-05 -1.761558435e-05 7.697003389e-05 -2.531143342e-05 -7.158382234e-05 -0.0001309885163 -7.315057824e-05 0.0001059774496 8.239142414e-07 -1.761558435e-05 -7.315057824e-05 -4.388258902e-05 2.275630369e-05 1.045572665e-06 7.697003389e-05 0.0001059774496 2.275630369e-05 -6.730470643e-05 -8.421084032e-06 -9.874086937e-06 -1.475196377e-05 -4.599022741e-06 8.497972129e-06 -9.874086937e-06 4.951268648e-06 1.462633684e-05 9.470397313e-06 7.829058306e-06 -1.475196377e-05 1.462633684e-05 2.406570066e-05 -2.382765435e-06 -1.057591249e-07 -4.599022741e-06 9.470397313e-06 -2.382765435e-06 9.131512773e-06 7.409357924e-06 8.497972129e-06 7.829058306e-06 -1.057591249e-07 7.409357924e-06 -1.388357067e-06 -7.318010062e-06 5.282825635e-06 1.184377465e-05 9.364209983e-06 -1.510416582e-05 5.282825635e-06 -1.010247338e-06 6.511809094e-06 1.66798897e-05 3.24874626e-06 1.184377465e-05 6.511809094e-06 7.541432954e-06 -1.359311065e-07 -1.375617085e-05 9.364209983e-06 1.66798897e-05 -1.359311065e-07 8.769729016e-06 -1.741846751e-05 -1.510416582e-05 3.24874626e-06 -1.375617085e-05 -1.741846751e-05 2.706478893e-05 -1.379143857e-05 -4.888189759e-07 1.658249846e-06 1.81547479e-07 3.771740053e-07 -4.888189759e-07 -1.063626781e-05 -1.346635631e-05 4.098940063e-06 1.97317573e-05 1.658249846e-06 -1.346635631e-05 -2.716104438e-05 -1.825004305e-05 1.849390038e-05 1.81547479e-07 4.098940063e-06 -1.825004305e-05 -7.313522934e-06 3.568205829e-06 3.771740053e-07 1.97317573e-05 1.849390038e-05 3.568205829e-06 -1.102028927e-05 @@ -167,19 +167,19 @@ -1.805557491e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.149386479e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.216762503e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03344230768 0.02370471748 0.08301791568 0.02370471748 2.745125758e-06 -0.0001194171656 0.08301791568 -0.0001194171656 -0.0004411818022 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001555690729 0.000879899612 0.002613993402 0.000879899612 -2.58360115e-06 -0.0002500493574 0.002613993402 -0.0002500493574 -7.822251736e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001636012505 -0.001018361369 0.0007653069251 -0.001018361369 8.988963876e-07 3.820651369e-05 0.0007653069251 3.820651369e-05 -0.0001028720106 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.069885039e-05 -6.694095076e-05 0.0002114708018 -6.694095076e-05 1.077870908e-06 3.784889403e-05 0.0002114708018 3.784889403e-05 -0.0001593022804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.014196744e-05 3.427570355e-05 0.0001196283098 3.427570355e-05 4.051925473e-09 3.134377914e-07 0.0001196283098 3.134377914e-07 -3.946163491e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.269645944e-05 2.647124482e-05 2.741119612e-06 2.647124482e-05 9.086222878e-08 5.379249677e-06 2.741119612e-06 5.379249677e-06 -1.068274702e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.228718873e-06 -1.930652947e-06 1.146026411e-05 -1.930652947e-06 -2.884407412e-08 -7.063512272e-07 1.146026411e-05 -7.063512272e-07 4.525577218e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.168329879e-06 3.249955133e-06 5.474273942e-06 3.249955133e-06 8.790284724e-10 7.19467411e-08 5.474273942e-06 7.19467411e-08 3.991587748e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.375304839e-05 1.051402432e-05 1.482501583e-05 1.051402432e-05 2.879873644e-09 2.651313524e-07 1.482501583e-05 2.651313524e-07 3.408664762e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -4.296486562e-07 1.07942228e-06 1.525054447e-05 1.07942228e-06 -4.375529958e-09 -1.687875544e-08 1.525054447e-05 -1.687875544e-08 6.102788601e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.885382977e-06 2.638473513e-06 5.33813002e-06 2.638473513e-06 1.918097525e-10 1.060604598e-07 5.33813002e-06 1.060604598e-07 8.188547601e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.700503293e-06 2.283660076e-06 5.40773957e-06 2.283660076e-06 3.493236291e-11 8.49178997e-08 5.40773957e-06 8.49178997e-08 3.026336567e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.715935682e-06 1.67288371e-06 6.457817064e-06 1.67288371e-06 -7.709695497e-10 4.913124631e-08 6.457817064e-06 4.913124631e-08 3.817351989e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03344230768 0.02370471748 0.08301791568 0 0 0.02370471748 2.745125758e-06 -0.0001194171656 0 0 0.08301791568 -0.0001194171656 -0.0004411818022 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001555690729 0.000879899612 0.002613993402 0 0 0.000879899612 -2.58360115e-06 -0.0002500493574 0 0 0.002613993402 -0.0002500493574 -7.822251736e-05 0 0 0 0 0 0 0 0 0 0 0 0 +0.001636012505 -0.001018361369 0.0007653069251 0 0 -0.001018361369 8.988963876e-07 3.820651369e-05 0 0 0.0007653069251 3.820651369e-05 -0.0001028720106 0 0 0 0 0 0 0 0 0 0 0 0 +9.069885039e-05 -6.694095076e-05 0.0002114708018 0 0 -6.694095076e-05 1.077870908e-06 3.784889403e-05 0 0 0.0002114708018 3.784889403e-05 -0.0001593022804 0 0 0 0 0 0 0 0 0 0 0 0 +-3.014196744e-05 3.427570355e-05 0.0001196283098 0 0 3.427570355e-05 4.051925473e-09 3.134377914e-07 0 0 0.0001196283098 3.134377914e-07 -3.946163491e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.269645944e-05 2.647124482e-05 2.741119612e-06 0 0 2.647124482e-05 9.086222878e-08 5.379249677e-06 0 0 2.741119612e-06 5.379249677e-06 -1.068274702e-05 0 0 0 0 0 0 0 0 0 0 0 0 +4.228718873e-06 -1.930652947e-06 1.146026411e-05 0 0 -1.930652947e-06 -2.884407412e-08 -7.063512272e-07 0 0 1.146026411e-05 -7.063512272e-07 4.525577218e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-4.168329879e-06 3.249955133e-06 5.474273942e-06 0 0 3.249955133e-06 8.790284724e-10 7.19467411e-08 0 0 5.474273942e-06 7.19467411e-08 3.991587748e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.375304839e-05 1.051402432e-05 1.482501583e-05 0 0 1.051402432e-05 2.879873644e-09 2.651313524e-07 0 0 1.482501583e-05 2.651313524e-07 3.408664762e-07 0 0 0 0 0 0 0 0 0 0 0 0 +4.296486562e-07 1.07942228e-06 1.525054447e-05 0 0 1.07942228e-06 -4.375529958e-09 -1.687875544e-08 0 0 1.525054447e-05 -1.687875544e-08 6.102788601e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.885382977e-06 2.638473513e-06 5.33813002e-06 0 0 2.638473513e-06 1.918097525e-10 1.060604598e-07 0 0 5.33813002e-06 1.060604598e-07 8.188547601e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-2.700503293e-06 2.283660076e-06 5.40773957e-06 0 0 2.283660076e-06 3.493236291e-11 8.49178997e-08 0 0 5.40773957e-06 8.49178997e-08 3.026336567e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.715935682e-06 1.67288371e-06 6.457817064e-06 0 0 1.67288371e-06 -7.709695497e-10 4.913124631e-08 0 0 6.457817064e-06 4.913124631e-08 3.817351989e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.001393635448 -0.0002256371448 -0.05560252126 -0.0002935722646 7.088645707e-05 -0.0002256371448 0.0003408074949 0.01881631204 -0.0008417477117 0.0008288633405 -0.05560252126 0.01881631204 -0.003904152272 -0.1108849772 0.003768720876 -0.0002935722646 -0.0008417477117 -0.1108849772 -0.0007773589499 4.92570824e-05 7.088645707e-05 0.0008288633405 0.003768720876 4.92570824e-05 9.268583726e-06 0.0006962007995 -0.0001672208233 -0.007983079355 8.237504434e-05 9.786995035e-05 -0.0001672208233 4.276451173e-05 0.004563467328 -0.0003575105867 0.0001600231273 -0.007983079355 0.004563467328 -0.001295305138 -0.01614353885 0.0003564646981 8.237504434e-05 -0.0003575105867 -0.01614353885 -0.0006468516387 0.0001150465989 9.786995035e-05 0.0001600231273 0.0003564646981 0.0001150465989 4.419923818e-06 -2.139493536e-05 -3.859218321e-06 0.0003747750016 3.820636633e-05 -1.627153704e-05 -3.859218321e-06 2.011998054e-05 -0.001101451086 1.530792029e-05 4.124579761e-06 0.0003747750016 -0.001101451086 0.001281460469 0.001144524617 -0.000727047849 3.820636633e-05 1.530792029e-05 0.001144524617 8.831743404e-06 3.787590583e-05 -1.627153704e-05 4.124579761e-06 -0.000727047849 3.787590583e-05 -1.362712917e-06 diff --git a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_4_ref.dat b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_4_ref.dat index a3b49cb6ea..1df603ab9f 100644 --- a/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_4_ref.dat +++ b/tests/deepks/604_NO_deepks_ut_CH4_gamma/gdmz_4_ref.dat @@ -11,19 +11,19 @@ 4.40708515e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.875142072e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.118055757e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.09334960218 0.06252088647 -0.1097531806 0.06252088647 0.009598883342 -0.01576989293 -0.1097531806 -0.01576989293 0.02869133126 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.05433093252 0.02806814431 -0.05040527184 0.02806814431 0.02324931854 -0.03762223641 -0.05040527184 -0.03762223641 0.06966835513 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.006751484992 -0.0005078998742 0.0007696336822 -0.0005078998742 0.01548029056 -0.02500045996 0.0007696336822 -0.02500045996 0.04659709616 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.003885316768 -0.003665135463 0.006592935441 -0.003665135463 0.004445399149 -0.007230342911 0.006592935441 -0.007230342911 0.01348792202 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001432581206 -0.001019556072 0.001836825705 -0.001019556072 0.0004657620999 -0.0007999749984 0.001836825705 -0.0007999749984 0.001457820647 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0002683334002 -3.203582022e-05 5.561662884e-05 -3.203582022e-05 -0.0004312011991 0.0007057061808 5.561662884e-05 0.0007057061808 -0.001302630561 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0003038840465 0.0003391346311 -0.0006037544155 0.0003391346311 -0.0004194543274 0.0007032132897 -0.0006037544155 0.0007032132897 -0.001284362137 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.109464043e-05 7.83031781e-05 -0.000142156473 7.83031781e-05 -7.92199049e-05 0.0001399656715 -0.000142156473 0.0001399656715 -0.0002537332423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --5.535359116e-05 1.792784801e-05 -3.18344241e-05 1.792784801e-05 4.721473504e-05 -8.38481536e-05 -3.18344241e-05 -8.38481536e-05 0.0001513024288 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.8499739e-05 -3.652899644e-05 6.612987683e-05 -3.652899644e-05 3.546935282e-05 -6.236401133e-05 6.612987683e-05 -6.236401133e-05 0.0001140573832 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.323788473e-07 -3.763964193e-06 7.087185016e-06 -3.763964193e-06 1.077483675e-05 -1.969717567e-05 7.087185016e-06 -1.969717567e-05 3.506447474e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -6.164310539e-06 -2.813600143e-06 5.056155569e-06 -2.813600143e-06 -1.400861322e-06 2.701954698e-06 5.056155569e-06 2.701954698e-06 -4.79469584e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --7.127060465e-06 6.658268085e-06 -1.160107976e-05 6.658268085e-06 -4.581986749e-06 7.700976394e-06 -1.160107976e-05 7.700976394e-06 -1.390999953e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.09334960218 0.06252088647 -0.1097531806 0 0 0.06252088647 0.009598883342 -0.01576989293 0 0 -0.1097531806 -0.01576989293 0.02869133126 0 0 0 0 0 0 0 0 0 0 0 0 +-0.05433093252 0.02806814431 -0.05040527184 0 0 0.02806814431 0.02324931854 -0.03762223641 0 0 -0.05040527184 -0.03762223641 0.06966835513 0 0 0 0 0 0 0 0 0 0 0 0 +-0.006751484992 -0.0005078998742 0.0007696336822 0 0 -0.0005078998742 0.01548029056 -0.02500045996 0 0 0.0007696336822 -0.02500045996 0.04659709616 0 0 0 0 0 0 0 0 0 0 0 0 +0.003885316768 -0.003665135463 0.006592935441 0 0 -0.003665135463 0.004445399149 -0.007230342911 0 0 0.006592935441 -0.007230342911 0.01348792202 0 0 0 0 0 0 0 0 0 0 0 0 +0.001432581206 -0.001019556072 0.001836825705 0 0 -0.001019556072 0.0004657620999 -0.0007999749984 0 0 0.001836825705 -0.0007999749984 0.001457820647 0 0 0 0 0 0 0 0 0 0 0 0 +0.0002683334002 -3.203582022e-05 5.561662884e-05 0 0 -3.203582022e-05 -0.0004312011991 0.0007057061808 0 0 5.561662884e-05 0.0007057061808 -0.001302630561 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0003038840465 0.0003391346311 -0.0006037544155 0 0 0.0003391346311 -0.0004194543274 0.0007032132897 0 0 -0.0006037544155 0.0007032132897 -0.001284362137 0 0 0 0 0 0 0 0 0 0 0 0 +-8.109464043e-05 7.83031781e-05 -0.000142156473 0 0 7.83031781e-05 -7.92199049e-05 0.0001399656715 0 0 -0.000142156473 0.0001399656715 -0.0002537332423 0 0 0 0 0 0 0 0 0 0 0 0 +-5.535359116e-05 1.792784801e-05 -3.18344241e-05 0 0 1.792784801e-05 4.721473504e-05 -8.38481536e-05 0 0 -3.18344241e-05 -8.38481536e-05 0.0001513024288 0 0 0 0 0 0 0 0 0 0 0 0 +3.8499739e-05 -3.652899644e-05 6.612987683e-05 0 0 -3.652899644e-05 3.546935282e-05 -6.236401133e-05 0 0 6.612987683e-05 -6.236401133e-05 0.0001140573832 0 0 0 0 0 0 0 0 0 0 0 0 +-4.323788473e-07 -3.763964193e-06 7.087185016e-06 0 0 -3.763964193e-06 1.077483675e-05 -1.969717567e-05 0 0 7.087185016e-06 -1.969717567e-05 3.506447474e-05 0 0 0 0 0 0 0 0 0 0 0 0 +6.164310539e-06 -2.813600143e-06 5.056155569e-06 0 0 -2.813600143e-06 -1.400861322e-06 2.701954698e-06 0 0 5.056155569e-06 2.701954698e-06 -4.79469584e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-7.127060465e-06 6.658268085e-06 -1.160107976e-05 0 0 6.658268085e-06 -4.581986749e-06 7.700976394e-06 0 0 -1.160107976e-05 7.700976394e-06 -1.390999953e-05 0 0 0 0 0 0 0 0 0 0 0 0 0.01074832949 -0.0001142153414 0.0005293080071 0.007142347276 0.01141207092 -0.0001142153414 -0.009808021245 0.01599611809 -0.006957075276 -0.01005753135 0.0005293080071 0.01599611809 -0.02909019064 0.01130257534 0.01867575331 0.007142347276 -0.006957075276 0.01130257534 0.00104930806 0.002048587373 0.01141207092 -0.01005753135 0.01867575331 0.002048587373 0.003094515415 0.01421027164 0.0008503658013 -0.001306343296 0.009408737692 0.01532771451 0.0008503658013 -0.008994459548 0.01458279037 -0.005718615213 -0.00794205959 -0.001306343296 0.01458279037 -0.02700680183 0.008685100613 0.01517879958 0.009408737692 -0.005718615213 0.008685100613 0.003039865427 0.006161431167 0.01532771451 -0.00794205959 0.01517879958 0.006161431167 0.009334905379 0.007127241319 0.001186784425 -0.002087859468 0.005085481313 0.008411217361 0.001186784425 -0.002619430589 0.00437469896 -0.001180851085 -0.001466268955 -0.002087859468 0.00437469896 -0.00816715752 0.001502829781 0.003031760374 0.005085481313 -0.001180851085 0.001502829781 0.002438027487 0.004998274932 0.008411217361 -0.001466268955 0.003031760374 0.004998274932 0.007641226233 @@ -50,19 +50,19 @@ 5.185133339e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.332668512e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.849075372e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03192358013 -0.001471499674 0.003914566852 -0.001471499674 0.02100761244 -0.03563575553 0.003914566852 -0.03563575553 0.06659291793 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.04181310365 -0.02715479338 0.04974314968 -0.02715479338 0.01720839097 -0.02866952634 0.04974314968 -0.02866952634 0.05463009474 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.003316653648 -0.001619254066 0.0027911434 -0.001619254066 0.00092014701 -0.001568049192 0.0027911434 -0.001568049192 0.002899734716 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.00684584969 -0.001422435134 0.002795302469 -0.001422435134 1.569717867e-06 -5.500864061e-05 0.002795302469 -5.500864061e-05 0.0002142376971 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0006698334117 0.0001606029393 -0.0002492288795 0.0001606029393 -0.0001283985621 0.0001996581231 -0.0002492288795 0.0001996581231 -0.0003646911863 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.94513383e-05 7.602550355e-05 -0.000125508232 7.602550355e-05 -6.61350604e-05 0.0001009278497 -0.000125508232 0.0001009278497 -0.0001842047406 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.000163486934 -3.705891964e-05 7.068786664e-05 -3.705891964e-05 4.583275e-06 -9.172790603e-06 7.068786664e-05 -9.172790603e-06 1.800519221e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.308004524e-05 -5.529228724e-06 8.495951015e-06 -5.529228724e-06 1.538962724e-05 -2.798727064e-05 8.495951015e-06 -2.798727064e-05 4.966845885e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --8.047529471e-05 3.615592524e-05 -6.457819772e-05 3.615592524e-05 -1.480647772e-05 2.42715389e-05 -6.457819772e-05 2.42715389e-05 -4.535523578e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.835475021e-05 1.399045015e-05 -2.468134183e-05 1.399045015e-05 -5.234340477e-06 8.403928349e-06 -2.468134183e-05 8.403928349e-06 -1.546025192e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.691911413e-07 -3.215815595e-07 7.531177092e-07 -3.215815595e-07 1.544220688e-06 -3.466527675e-06 7.531177092e-07 -3.466527675e-06 5.845201476e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.155321688e-06 -1.350165218e-08 2.453290514e-07 -1.350165218e-08 8.534076791e-07 -2.158631227e-06 2.453290514e-07 -2.158631227e-06 3.637079077e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.035079538e-05 5.836771187e-06 -1.016097017e-05 5.836771187e-06 -2.179010554e-06 3.296900971e-06 -1.016097017e-05 3.296900971e-06 -6.239832685e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03192358013 -0.001471499674 0.003914566852 0 0 -0.001471499674 0.02100761244 -0.03563575553 0 0 0.003914566852 -0.03563575553 0.06659291793 0 0 0 0 0 0 0 0 0 0 0 0 +0.04181310365 -0.02715479338 0.04974314968 0 0 -0.02715479338 0.01720839097 -0.02866952634 0 0 0.04974314968 -0.02866952634 0.05463009474 0 0 0 0 0 0 0 0 0 0 0 0 +-0.003316653648 -0.001619254066 0.0027911434 0 0 -0.001619254066 0.00092014701 -0.001568049192 0 0 0.0027911434 -0.001568049192 0.002899734716 0 0 0 0 0 0 0 0 0 0 0 0 +0.00684584969 -0.001422435134 0.002795302469 0 0 -0.001422435134 1.569717867e-06 -5.500864061e-05 0 0 0.002795302469 -5.500864061e-05 0.0002142376971 0 0 0 0 0 0 0 0 0 0 0 0 +0.0006698334117 0.0001606029393 -0.0002492288795 0 0 0.0001606029393 -0.0001283985621 0.0001996581231 0 0 -0.0002492288795 0.0001996581231 -0.0003646911863 0 0 0 0 0 0 0 0 0 0 0 0 +-1.94513383e-05 7.602550355e-05 -0.000125508232 0 0 7.602550355e-05 -6.61350604e-05 0.0001009278497 0 0 -0.000125508232 0.0001009278497 -0.0001842047406 0 0 0 0 0 0 0 0 0 0 0 0 +0.000163486934 -3.705891964e-05 7.068786664e-05 0 0 -3.705891964e-05 4.583275e-06 -9.172790603e-06 0 0 7.068786664e-05 -9.172790603e-06 1.800519221e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.308004524e-05 -5.529228724e-06 8.495951015e-06 0 0 -5.529228724e-06 1.538962724e-05 -2.798727064e-05 0 0 8.495951015e-06 -2.798727064e-05 4.966845885e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-8.047529471e-05 3.615592524e-05 -6.457819772e-05 0 0 3.615592524e-05 -1.480647772e-05 2.42715389e-05 0 0 -6.457819772e-05 2.42715389e-05 -4.535523578e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-3.835475021e-05 1.399045015e-05 -2.468134183e-05 0 0 1.399045015e-05 -5.234340477e-06 8.403928349e-06 0 0 -2.468134183e-05 8.403928349e-06 -1.546025192e-05 0 0 0 0 0 0 0 0 0 0 0 0 +9.691911413e-07 -3.215815595e-07 7.531177092e-07 0 0 -3.215815595e-07 1.544220688e-06 -3.466527675e-06 0 0 7.531177092e-07 -3.466527675e-06 5.845201476e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-3.155321688e-06 -1.350165218e-08 2.453290514e-07 0 0 -1.350165218e-08 8.534076791e-07 -2.158631227e-06 0 0 2.453290514e-07 -2.158631227e-06 3.637079077e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.035079538e-05 5.836771187e-06 -1.016097017e-05 0 0 5.836771187e-06 -2.179010554e-06 3.296900971e-06 0 0 -1.016097017e-05 3.296900971e-06 -6.239832685e-06 0 0 0 0 0 0 0 0 0 0 0 0 -0.06538472814 0.03697016271 -0.06721363531 0.003680312083 0.004301658889 0.03697016271 -0.006261226175 0.011153282 0.003912282872 0.007468113445 -0.06721363531 0.011153282 -0.02068358234 -0.008717219498 -0.01243038102 0.003680312083 0.003912282872 -0.008717219498 0.00237757694 0.004057257152 0.004301658889 0.007468113445 -0.01243038102 0.004057257152 0.005441834279 0.007581219172 -0.01304237694 0.02416317012 -0.006647628537 -0.00989805786 -0.01304237694 0.02212055607 -0.03716000056 0.007559104844 0.01260852305 0.02416317012 -0.03716000056 0.07126325336 -0.01585506222 -0.02210939752 -0.006647628537 0.007559104844 -0.01585506222 0.001996030419 0.003328182212 -0.00989805786 0.01260852305 -0.02210939752 0.003328182212 0.004344421015 0.001891964815 -0.004153328394 0.007483999925 -0.0004218071107 -0.0004514426766 -0.004153328394 0.005819348741 -0.009524141135 0.001037171579 0.001737021999 0.007483999925 -0.009524141135 0.01815527871 -0.002252913892 -0.002892267558 -0.0004218071107 0.001037171579 -0.002252913892 5.06939199e-05 5.154097042e-06 -0.0004514426766 0.001737021999 -0.002892267558 5.154097042e-06 -8.134191462e-05 @@ -89,19 +89,19 @@ -1.507963217e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.985318024e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.221075006e-09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.03129688614 0.0560131308 -0.05694013311 0.0560131308 3.310532792e-05 6.278571525e-05 -0.05694013311 6.278571525e-05 -7.224327354e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0007520801813 0.001230568635 -0.001193210526 0.001230568635 0.0003333936521 3.370696798e-05 -0.001193210526 3.370696798e-05 -0.0001391157197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001218285295 0.001327524307 0.0002398104665 0.001327524307 -0.0001395144227 3.525886764e-05 0.0002398104665 3.525886764e-05 4.658402239e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --4.704510846e-06 0.0001050641893 -5.408791599e-05 0.0001050641893 -9.525425296e-05 3.079368578e-05 -5.408791599e-05 3.079368578e-05 -4.190690692e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.368214951e-05 0.0001712956814 -8.321652343e-05 0.0001712956814 -2.562149208e-08 1.317654473e-07 -8.321652343e-05 1.317654473e-07 -1.197652035e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.91525307e-05 -2.241214019e-05 -2.507238075e-05 -2.241214019e-05 -1.269729997e-05 2.443447157e-06 -2.507238075e-05 2.443447157e-06 1.226947906e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -2.728174757e-06 1.214151542e-05 -5.272769114e-06 1.214151542e-05 2.360678776e-06 -1.108803271e-06 -5.272769114e-06 -1.108803271e-06 4.740895941e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.112070572e-07 7.643186568e-06 -4.021890522e-06 7.643186568e-06 7.916222912e-07 -3.765390885e-07 -4.021890522e-06 -3.765390885e-07 1.722823684e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.288006867e-05 4.208336175e-06 -1.374112705e-05 4.208336175e-06 -8.35856152e-09 -3.070149207e-07 -1.374112705e-05 -3.070149207e-07 3.419563037e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.330076503e-06 1.171435256e-05 -9.380255443e-06 1.171435256e-05 3.026200446e-07 -1.915599611e-07 -9.380255443e-06 -1.915599611e-07 1.131615413e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.698636457e-06 5.460320962e-06 -5.030165923e-06 5.460320962e-06 7.784470533e-08 -9.331358654e-08 -5.030165923e-06 -9.331358654e-08 7.56018694e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.684053958e-06 2.936476242e-06 -4.19833676e-06 2.936476242e-06 8.205656157e-08 -1.43508354e-07 -4.19833676e-06 -1.43508354e-07 1.3188915e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.976525266e-06 4.378938187e-06 -4.383791089e-06 4.378938187e-06 2.435083763e-07 -1.943499061e-07 -4.383791089e-06 -1.943499061e-07 1.380764194e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.03129688614 0.0560131308 -0.05694013311 0 0 0.0560131308 3.310532792e-05 6.278571525e-05 0 0 -0.05694013311 6.278571525e-05 -7.224327354e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0007520801813 0.001230568635 -0.001193210526 0 0 0.001230568635 0.0003333936521 3.370696798e-05 0 0 -0.001193210526 3.370696798e-05 -0.0001391157197 0 0 0 0 0 0 0 0 0 0 0 0 +0.001218285295 0.001327524307 0.0002398104665 0 0 0.001327524307 -0.0001395144227 3.525886764e-05 0 0 0.0002398104665 3.525886764e-05 4.658402239e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-4.704510846e-06 0.0001050641893 -5.408791599e-05 0 0 0.0001050641893 -9.525425296e-05 3.079368578e-05 0 0 -5.408791599e-05 3.079368578e-05 -4.190690692e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.368214951e-05 0.0001712956814 -8.321652343e-05 0 0 0.0001712956814 -2.562149208e-08 1.317654473e-07 0 0 -8.321652343e-05 1.317654473e-07 -1.197652035e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.91525307e-05 -2.241214019e-05 -2.507238075e-05 0 0 -2.241214019e-05 -1.269729997e-05 2.443447157e-06 0 0 -2.507238075e-05 2.443447157e-06 1.226947906e-06 0 0 0 0 0 0 0 0 0 0 0 0 +2.728174757e-06 1.214151542e-05 -5.272769114e-06 0 0 1.214151542e-05 2.360678776e-06 -1.108803271e-06 0 0 -5.272769114e-06 -1.108803271e-06 4.740895941e-07 0 0 0 0 0 0 0 0 0 0 0 0 +5.112070572e-07 7.643186568e-06 -4.021890522e-06 0 0 7.643186568e-06 7.916222912e-07 -3.765390885e-07 0 0 -4.021890522e-06 -3.765390885e-07 1.722823684e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.288006867e-05 4.208336175e-06 -1.374112705e-05 0 0 4.208336175e-06 -8.35856152e-09 -3.070149207e-07 0 0 -1.374112705e-05 -3.070149207e-07 3.419563037e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.330076503e-06 1.171435256e-05 -9.380255443e-06 0 0 1.171435256e-05 3.026200446e-07 -1.915599611e-07 0 0 -9.380255443e-06 -1.915599611e-07 1.131615413e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.698636457e-06 5.460320962e-06 -5.030165923e-06 0 0 5.460320962e-06 7.784470533e-08 -9.331358654e-08 0 0 -5.030165923e-06 -9.331358654e-08 7.56018694e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-2.684053958e-06 2.936476242e-06 -4.19833676e-06 0 0 2.936476242e-06 8.205656157e-08 -1.43508354e-07 0 0 -4.19833676e-06 -1.43508354e-07 1.3188915e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.976525266e-06 4.378938187e-06 -4.383791089e-06 0 0 4.378938187e-06 2.435083763e-07 -1.943499061e-07 0 0 -4.383791089e-06 -1.943499061e-07 1.380764194e-07 0 0 0 0 0 0 0 0 0 0 0 0 0.001596474844 -0.04710039829 0.02593482434 -0.0001095089767 -6.895305e-06 -0.04710039829 -0.02306793749 -0.006221128087 0.04776892008 -0.08418794125 0.02593482434 -0.006221128087 0.01389235425 -0.02565863251 0.04700545874 -0.0001095089767 0.04776892008 -0.02565863251 -8.313026314e-05 0.0002166575153 -6.895305e-06 -0.08418794125 0.04700545874 0.0002166575153 -0.000424489481 0.0006660108376 -0.005266161872 0.003062544592 -0.000224704636 0.0001144324525 -0.005266161872 -0.004716730121 -0.001218508088 0.005567638703 -0.01008820401 0.003062544592 -0.001218508088 0.00272300417 -0.003120249381 0.005875111843 -0.000224704636 0.005567638703 -0.003120249381 3.462212236e-05 9.965396924e-05 0.0001144324525 -0.01008820401 0.005875111843 9.965396924e-05 -0.0003754923566 -3.29046621e-05 2.805036503e-05 -2.214926665e-05 1.17006638e-05 2.899148969e-05 2.805036503e-05 0.001991296116 -4.09898176e-05 0.0003696645811 0.0009859192763 -2.214926665e-05 -4.09898176e-05 -0.0005072378262 -0.0001688691624 -0.0005445635329 1.17006638e-05 0.0003696645811 -0.0001688691624 2.837204177e-05 -2.077979363e-05 2.899148969e-05 0.0009859192763 -0.0005445635329 -2.077979363e-05 -7.57015594e-06 @@ -128,19 +128,19 @@ -2.087652862e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.616533956e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.033402286e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0320474862 0.02250856718 -0.08048621382 0.02250856718 8.2533728e-07 0.0003305554684 -0.08048621382 0.0003305554684 -0.002045612484 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.001532380221 0.0008364910615 -0.00275059611 0.0008364910615 5.577816341e-06 0.0004143310421 -0.00275059611 0.0004143310421 -0.000669370625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.001574349406 -0.0009969705815 -0.0009172731494 -0.0009969705815 -1.078059903e-06 -4.980854736e-05 -0.0009172731494 -4.980854736e-05 -0.0001385882976 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.834557752e-05 -4.749576466e-05 -0.0001962576045 -4.749576466e-05 -1.142301749e-06 -4.566108316e-05 -0.0001962576045 -4.566108316e-05 -0.0002158592727 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.584057002e-06 1.396760148e-05 -0.0001426630165 1.396760148e-05 9.020699696e-10 -3.608057794e-08 -0.0001426630165 -3.608057794e-08 3.939046119e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --3.311175805e-05 2.722318512e-05 6.828080526e-06 2.722318512e-05 -1.464460383e-07 -8.81270933e-06 6.828080526e-06 -8.81270933e-06 -1.30042483e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -3.901708404e-06 -1.582678331e-06 -1.039106494e-05 -1.582678331e-06 2.862028048e-08 7.633769213e-07 -1.039106494e-05 7.633769213e-07 6.156644313e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.000960247e-06 1.796452746e-06 -6.550175279e-06 1.796452746e-06 4.741790446e-10 5.591540394e-09 -6.550175279e-06 5.591540394e-09 -3.093029972e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.380490738e-05 1.043244811e-05 -1.24131032e-05 1.043244811e-05 -1.936742886e-09 -1.865288158e-07 -1.24131032e-05 -1.865288158e-07 -1.581089046e-08 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --6.339739315e-08 1.367367607e-06 -1.420390272e-05 1.367367607e-06 3.635850698e-09 -2.220224861e-08 -1.420390272e-05 -2.220224861e-08 1.427507038e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.193076779e-06 2.228972523e-06 -5.226607241e-06 2.228972523e-06 -5.02348142e-10 -1.427108093e-07 -5.226607241e-06 -1.427108093e-07 4.652468412e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.651138749e-06 2.267366801e-06 -4.677579521e-06 2.267366801e-06 -1.850538961e-10 -8.791596482e-08 -4.677579521e-06 -8.791596482e-08 2.458716195e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.641196697e-06 1.601821328e-06 -6.0136492e-06 1.601821328e-06 7.967899708e-10 -4.507496268e-08 -6.0136492e-06 -4.507496268e-08 3.743915329e-07 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0320474862 0.02250856718 -0.08048621382 0 0 0.02250856718 8.2533728e-07 0.0003305554684 0 0 -0.08048621382 0.0003305554684 -0.002045612484 0 0 0 0 0 0 0 0 0 0 0 0 +-0.001532380221 0.0008364910615 -0.00275059611 0 0 0.0008364910615 5.577816341e-06 0.0004143310421 0 0 -0.00275059611 0.0004143310421 -0.000669370625 0 0 0 0 0 0 0 0 0 0 0 0 +0.001574349406 -0.0009969705815 -0.0009172731494 0 0 -0.0009969705815 -1.078059903e-06 -4.980854736e-05 0 0 -0.0009172731494 -4.980854736e-05 -0.0001385882976 0 0 0 0 0 0 0 0 0 0 0 0 +5.834557752e-05 -4.749576466e-05 -0.0001962576045 0 0 -4.749576466e-05 -1.142301749e-06 -4.566108316e-05 0 0 -0.0001962576045 -4.566108316e-05 -0.0002158592727 0 0 0 0 0 0 0 0 0 0 0 0 +-2.584057002e-06 1.396760148e-05 -0.0001426630165 0 0 1.396760148e-05 9.020699696e-10 -3.608057794e-08 0 0 -0.0001426630165 -3.608057794e-08 3.939046119e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-3.311175805e-05 2.722318512e-05 6.828080526e-06 0 0 2.722318512e-05 -1.464460383e-07 -8.81270933e-06 0 0 6.828080526e-06 -8.81270933e-06 -1.30042483e-05 0 0 0 0 0 0 0 0 0 0 0 0 +3.901708404e-06 -1.582678331e-06 -1.039106494e-05 0 0 -1.582678331e-06 2.862028048e-08 7.633769213e-07 0 0 -1.039106494e-05 7.633769213e-07 6.156644313e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.000960247e-06 1.796452746e-06 -6.550175279e-06 0 0 1.796452746e-06 4.741790446e-10 5.591540394e-09 0 0 -6.550175279e-06 5.591540394e-09 -3.093029972e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.380490738e-05 1.043244811e-05 -1.24131032e-05 0 0 1.043244811e-05 -1.936742886e-09 -1.865288158e-07 0 0 -1.24131032e-05 -1.865288158e-07 -1.581089046e-08 0 0 0 0 0 0 0 0 0 0 0 0 +-6.339739315e-08 1.367367607e-06 -1.420390272e-05 0 0 1.367367607e-06 3.635850698e-09 -2.220224861e-08 0 0 -1.420390272e-05 -2.220224861e-08 1.427507038e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-2.193076779e-06 2.228972523e-06 -5.226607241e-06 0 0 2.228972523e-06 -5.02348142e-10 -1.427108093e-07 0 0 -5.226607241e-06 -1.427108093e-07 4.652468412e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-2.651138749e-06 2.267366801e-06 -4.677579521e-06 0 0 2.267366801e-06 -1.850538961e-10 -8.791596482e-08 0 0 -4.677579521e-06 -8.791596482e-08 2.458716195e-07 0 0 0 0 0 0 0 0 0 0 0 0 +-1.641196697e-06 1.601821328e-06 -6.0136492e-06 0 0 1.601821328e-06 7.967899708e-10 -4.507496268e-08 0 0 -6.0136492e-06 -4.507496268e-08 3.743915329e-07 0 0 0 0 0 0 0 0 0 0 0 0 5.870478963e-05 0.0009048551087 0.0550454685 -0.001965129329 -0.0001062508686 0.0009048551087 -0.0002676629187 -0.01892160941 0.001020006573 -0.0007997516932 0.0550454685 -0.01892160941 -0.002981757983 0.110069093 0.002314534007 -0.001965129329 0.001020006573 0.110069093 -0.002074265872 -3.905361747e-05 -0.0001062508686 -0.0007997516932 0.002314534007 -3.905361747e-05 -9.100364304e-06 0.0002377796271 9.604957966e-05 0.008012129631 -0.0006122305809 -0.0001215711382 9.604957966e-05 -0.0001102928084 -0.00457932151 5.906152671e-05 -0.0001411802555 0.008012129631 -0.00457932151 -0.001388426904 0.01613132937 0.0002591936765 -0.0006122305809 5.906152671e-05 0.01613132937 -0.001642386365 -0.0001226016716 -0.0001215711382 -0.0001411802555 0.0002591936765 -0.0001226016716 -3.102067015e-06 -2.490602666e-05 -6.365906522e-06 -0.0002854508653 2.472012544e-05 1.827182642e-05 -6.365906522e-06 5.668370069e-05 0.00109591312 1.94655946e-05 -2.22352724e-05 -0.0002854508653 0.00109591312 0.001364298537 -0.0009877014051 -0.0007970619718 2.472012544e-05 1.94655946e-05 -0.0009877014051 -2.649976587e-05 -4.855990389e-05 1.827182642e-05 -2.22352724e-05 -0.0007970619718 -4.855990389e-05 1.794419948e-06 @@ -167,29 +167,29 @@ 6.591293181e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7.251813301e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4.708442433e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.0218110831 0.07462480304 -0.1226766429 0.07462480304 0.04984546474 -0.01821119489 -0.1226766429 -0.01821119489 0.07064088195 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.09466890331 -0.005499024757 0.009782842569 -0.005499024757 0.03387933786 -0.002281921579 0.009782842569 -0.002281921579 0.03804858011 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.02735284554 0.02366718153 -0.04263480284 0.02366718153 0.004621807354 -0.0001174746285 -0.04263480284 -0.0001174746285 0.00439936676 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.007706928408 0.001240271298 -0.002213085221 0.001240271298 0.008263944268 -0.01620655864 -0.002213085221 -0.01620655864 0.02835043915 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001301562403 -0.0001566440354 0.0002971156085 -0.0001566440354 0.0005325062216 -0.0009107565423 0.0002971156085 -0.0009107565423 0.001680858384 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0002758804185 0.0002280660818 -0.0004113782307 0.0002280660818 -2.312532601e-05 0.0003938170459 -0.0004113782307 0.0003938170459 -0.0005421424799 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0004107982797 0.0001832630931 -0.0003188862273 0.0001832630931 0.0001843680668 -0.0004947160718 -0.0003188862273 -0.0004947160718 0.0007890197623 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -5.068995064e-05 -6.263932549e-07 5.692581704e-06 -6.263932549e-07 4.887195443e-06 7.240027871e-06 5.692581704e-06 7.240027871e-06 1.897171102e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --1.189451248e-05 -9.957666915e-06 1.803922986e-05 -9.957666915e-06 3.44609051e-05 -2.312226514e-05 1.803922986e-05 -2.312226514e-05 5.932928491e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.0001127399149 6.128421234e-05 -0.0001063038911 6.128421234e-05 -4.767435107e-06 -3.380125097e-05 -0.0001063038911 -3.380125097e-05 3.562437332e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -9.978074583e-06 1.251466773e-05 -1.758673978e-05 1.251466773e-05 -1.574983806e-05 3.078518547e-05 -1.758673978e-05 3.078518547e-05 -4.937221365e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.306627054e-05 -5.966044444e-06 1.257123805e-05 -5.966044444e-06 1.268141467e-05 -2.223776395e-05 1.257123805e-05 -2.223776395e-05 3.941008105e-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --2.616350145e-05 1.570941752e-05 -2.660561464e-05 1.570941752e-05 -5.441746164e-06 2.137075904e-07 -2.660561464e-05 2.137075904e-07 -5.709427002e-06 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 --0.198300492 -0.0009382812288 -0.009319408749 0.007013544172 0.01457959477 -0.0009382812288 -0.05564166094 -0.03109780087 0.1247874132 -0.1596445536 -0.009319408749 -0.03109780087 -0.01144945653 0.1535836831 0.05640827095 0.007013544172 0.1247874132 0.1535836831 0.0412029866 -0.004824684595 0.01457959477 -0.1596445536 0.05640827095 -0.004824684595 0.03664856411 +0.0218110831 0.07462480304 -0.1226766429 0 0 0.07462480304 0.04984546474 -0.01821119489 0 0 -0.1226766429 -0.01821119489 0.07064088195 0 0 0 0 0 0 0 0 0 0 0 0 +0.09466890331 -0.005499024757 0.009782842569 0 0 -0.005499024757 0.03387933786 -0.002281921579 0 0 0.009782842569 -0.002281921579 0.03804858011 0 0 0 0 0 0 0 0 0 0 0 0 +-0.02735284554 0.02366718153 -0.04263480284 0 0 0.02366718153 0.004621807354 -0.0001174746285 0 0 -0.04263480284 -0.0001174746285 0.00439936676 0 0 0 0 0 0 0 0 0 0 0 0 +-0.007706928408 0.001240271298 -0.002213085221 0 0 0.001240271298 0.008263944268 -0.01620655864 0 0 -0.002213085221 -0.01620655864 0.02835043915 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001301562403 -0.0001566440354 0.0002971156085 0 0 -0.0001566440354 0.0005325062216 -0.0009107565423 0 0 0.0002971156085 -0.0009107565423 0.001680858384 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0002758804185 0.0002280660818 -0.0004113782307 0 0 0.0002280660818 -2.312532601e-05 0.0003938170459 0 0 -0.0004113782307 0.0003938170459 -0.0005421424799 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0004107982797 0.0001832630931 -0.0003188862273 0 0 0.0001832630931 0.0001843680668 -0.0004947160718 0 0 -0.0003188862273 -0.0004947160718 0.0007890197623 0 0 0 0 0 0 0 0 0 0 0 0 +5.068995064e-05 -6.263932549e-07 5.692581704e-06 0 0 -6.263932549e-07 4.887195443e-06 7.240027871e-06 0 0 5.692581704e-06 7.240027871e-06 1.897171102e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-1.189451248e-05 -9.957666915e-06 1.803922986e-05 0 0 -9.957666915e-06 3.44609051e-05 -2.312226514e-05 0 0 1.803922986e-05 -2.312226514e-05 5.932928491e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-0.0001127399149 6.128421234e-05 -0.0001063038911 0 0 6.128421234e-05 -4.767435107e-06 -3.380125097e-05 0 0 -0.0001063038911 -3.380125097e-05 3.562437332e-05 0 0 0 0 0 0 0 0 0 0 0 0 +9.978074583e-06 1.251466773e-05 -1.758673978e-05 0 0 1.251466773e-05 -1.574983806e-05 3.078518547e-05 0 0 -1.758673978e-05 3.078518547e-05 -4.937221365e-05 0 0 0 0 0 0 0 0 0 0 0 0 +1.306627054e-05 -5.966044444e-06 1.257123805e-05 0 0 -5.966044444e-06 1.268141467e-05 -2.223776395e-05 0 0 1.257123805e-05 -2.223776395e-05 3.941008105e-05 0 0 0 0 0 0 0 0 0 0 0 0 +-2.616350145e-05 1.570941752e-05 -2.660561464e-05 0 0 1.570941752e-05 -5.441746164e-06 2.137075904e-07 0 0 -2.660561464e-05 2.137075904e-07 -5.709427002e-06 0 0 0 0 0 0 0 0 0 0 0 0 +-0.198300492 -0.0009382812289 -0.009319408749 0.007013544172 0.01457959477 -0.0009382812289 -0.05564166094 -0.03109780087 0.1247874132 -0.1596445536 -0.009319408749 -0.03109780087 -0.01144945653 0.1535836831 0.05640827095 0.007013544172 0.1247874132 0.1535836831 0.0412029866 -0.004824684595 0.01457959477 -0.1596445536 0.05640827095 -0.004824684595 0.03664856411 -0.06054112692 -0.01212997846 0.02441512316 -0.01051176288 -0.01461954541 -0.01212997846 0.02182412411 -0.09177357154 0.04131577934 -0.01195459207 0.02441512316 -0.09177357154 0.1386630623 0.01204964762 -0.02857959757 -0.01051176288 0.04131577934 0.01204964762 0.04734838779 -0.0125667893 -0.01461954541 -0.01195459207 -0.02857959757 -0.0125667893 0.03337489593 0.001276381148 -0.008158219755 0.01509247766 -0.001780422392 -0.002644798443 -0.008158219755 0.002833576626 -0.01053192034 -0.00526564687 -0.007623837181 0.01509247766 -0.01053192034 0.01625789906 0.008625913831 0.01432420188 -0.001780422392 -0.00526564687 0.008625913831 0.007587119653 -0.01256570352 -0.002644798443 -0.007623837181 0.01432420188 -0.01256570352 -0.004708818769 0.00862080666 0.0007193267016 -0.001245440022 0.006678739174 0.01078092398 0.0007193267016 -0.006242676714 0.01173630256 -0.004106389554 -0.006085644584 -0.001245440022 0.01173630256 -0.02092724219 0.006930716551 0.01136204674 0.006678739174 -0.004106389554 0.006930716551 0.00168589713 0.004097611141 0.01078092398 -0.006085644584 0.01136204674 0.004097611141 0.005940658903 0.001944465828 0.000801045454 -0.001459334192 0.002094749506 0.00338032515 0.000801045454 -0.0001678428782 0.0002993950043 0.0005740269691 0.0008565336288 -0.001459334192 0.0002993950043 -0.0005330678125 -0.0009884497892 -0.001580179334 0.002094749506 0.0005740269691 -0.0009884497892 0.002486791467 0.002859274062 0.00338032515 0.0008565336288 -0.001580179334 0.002859274062 0.005276630849 0.0001662321467 0.0002285101252 -0.0004343325871 0.0003325546497 0.0005411968762 0.0002285101252 4.578108004e-06 -0.0001959105035 0.0002930980726 0.0001904651019 -0.0004343325871 -0.0001959105035 0.0002518690186 -0.0002352697397 -0.0005435171855 0.0003325546497 0.0002930980726 -0.0002352697397 0.000398449416 0.0005511614396 0.0005411968762 0.0001904651019 -0.0005435171855 0.0005511614396 0.0009994190022 6.515751627e-05 -0.0001161650859 0.0002053115393 -1.857214296e-05 -3.006315735e-05 -0.0001161650859 -0.0002372127122 0.000430338411 -0.0002263628886 -0.0003579664874 0.0002053115393 0.000430338411 -0.0007625888817 0.0003875632001 0.0006434347617 -1.857214296e-05 -0.0002263628886 0.0003875632001 -0.0001263851214 -0.0002134641582 -3.006315735e-05 -0.0003579664874 0.0006434347617 -0.0002134641582 -0.0003453491435 -6.958708012e-05 -1.193377173e-05 2.120586267e-05 6.59495293e-05 0.0001116750602 -1.193377173e-05 6.934790767e-06 -2.009105015e-05 1.205240992e-05 1.296530821e-06 2.120586267e-05 -2.009105015e-05 3.597691094e-05 3.636086884e-08 -1.569283734e-05 6.59495293e-05 1.205240992e-05 3.636086884e-08 0.0001366728169 4.862260118e-05 0.0001116750602 1.296530821e-06 -1.569283734e-05 4.862260118e-05 0.0001895412584 +6.958708012e-05 -1.193377173e-05 2.120586267e-05 6.59495293e-05 0.0001116750602 -1.193377173e-05 6.934790767e-06 -2.009105015e-05 1.205240992e-05 1.296530821e-06 2.120586267e-05 -2.009105015e-05 3.597691094e-05 3.636086883e-08 -1.569283734e-05 6.59495293e-05 1.205240992e-05 3.636086883e-08 0.0001366728169 4.862260118e-05 0.0001116750602 1.296530821e-06 -1.569283734e-05 4.862260118e-05 0.0001895412584 2.905569077e-06 7.512312535e-05 -0.0001417985667 9.459735385e-05 0.0001522576799 7.512312535e-05 -1.736190683e-05 2.63962589e-07 8.442119993e-05 2.169125998e-05 -0.0001417985667 2.63962589e-07 -1.944164972e-05 -3.111849889e-05 -0.0001131104015 9.459735385e-05 8.442119993e-05 -3.111849889e-05 7.148790721e-05 0.0001550990634 0.0001522576799 2.169125998e-05 -0.0001131104015 0.0001550990634 0.0002312963572 -1.132141057e-05 -2.320811851e-05 3.699999666e-05 -1.225350008e-05 -2.186962485e-05 -2.320811851e-05 -3.659054377e-05 6.012558844e-05 -1.924840538e-05 -7.148794812e-05 3.699999666e-05 6.012558844e-05 -0.000109412609 7.062620913e-05 0.0001024117147 -1.225350008e-05 -1.924840538e-05 7.062620913e-05 -4.605844118e-05 -3.774796695e-05 -2.186962485e-05 -7.148794812e-05 0.0001024117147 -3.774796695e-05 -8.658135184e-05 -7.688142546e-06 -1.062641948e-05 1.740941617e-05 -5.161163653e-06 -8.390711731e-06 -1.062641948e-05 5.752372483e-06 -1.651680051e-05 8.758763415e-06 -7.44661214e-06 1.740941617e-05 -1.651680051e-05 2.742048445e-05 4.374766883e-06 -1.272411912e-07 -5.161163653e-06 8.758763415e-06 4.374766883e-06 1.053749326e-05 -9.59633216e-06 -8.390711731e-06 -7.44661214e-06 -1.272411912e-07 -9.59633216e-06 -4.075269408e-07 -5.508027374e-06 7.769828389e-06 -1.571481009e-05 1.248440799e-05 2.038049477e-05 7.769828389e-06 -3.815491766e-06 -1.350329405e-06 1.666937465e-05 -4.477778934e-06 -1.571481009e-05 -1.350329405e-06 -1.743498342e-06 2.225056033e-06 -1.214437791e-05 1.248440799e-05 1.666937465e-05 2.225056033e-06 7.769131204e-06 2.169191498e-05 2.038049477e-05 -4.477778934e-06 -1.214437791e-05 2.169191498e-05 3.023668941e-05 --1.538618083e-05 -1.251496517e-06 3.721586481e-07 -1.795820191e-06 -3.311557673e-06 -1.251496517e-06 -9.508146312e-06 1.193069397e-05 3.904614066e-06 -1.90255694e-05 3.721586481e-07 1.193069397e-05 -2.412397345e-05 1.836495053e-05 1.798386036e-05 -1.795820191e-06 3.904614066e-06 1.836495053e-05 -7.525400092e-06 -5.930730092e-06 -3.311557673e-06 -1.90255694e-05 1.798386036e-05 -5.930730092e-06 -1.368125996e-05 +-1.538618083e-05 -1.251496517e-06 3.72158648e-07 -1.795820191e-06 -3.311557673e-06 -1.251496517e-06 -9.508146312e-06 1.193069397e-05 3.904614066e-06 -1.90255694e-05 3.72158648e-07 1.193069397e-05 -2.412397345e-05 1.836495053e-05 1.798386036e-05 -1.795820191e-06 3.904614066e-06 1.836495053e-05 -7.525400092e-06 -5.930730092e-06 -3.311557673e-06 -1.90255694e-05 1.798386036e-05 -5.930730092e-06 -1.368125996e-05