diff --git a/source/source_estate/module_pot/H_TDDFT_pw.cpp b/source/source_estate/module_pot/H_TDDFT_pw.cpp index a71b2c6654d..babece4d784 100644 --- a/source/source_estate/module_pot/H_TDDFT_pw.cpp +++ b/source/source_estate/module_pot/H_TDDFT_pw.cpp @@ -16,7 +16,7 @@ bool H_TDDFT_pw::is_initialized = false; double H_TDDFT_pw::amp; // Used for calculating electric field force on ions, summing over directions -vector H_TDDFT_pw::global_vext_time = {0.0, 0.0, 0.0}; +std::vector H_TDDFT_pw::global_vext_time = {0.0, 0.0, 0.0}; int H_TDDFT_pw::stype; // 0 : length gauge 1: velocity gauge diff --git a/source/source_estate/module_pot/H_TDDFT_pw.h b/source/source_estate/module_pot/H_TDDFT_pw.h index 4565cd000ff..38463b2a95e 100644 --- a/source/source_estate/module_pot/H_TDDFT_pw.h +++ b/source/source_estate/module_pot/H_TDDFT_pw.h @@ -4,6 +4,8 @@ #include "pot_base.h" #include "source_io/module_parameter/parameter.h" +#include + namespace elecstate { @@ -120,7 +122,7 @@ class H_TDDFT_pw : public PotBase static bool is_initialized; // static flag variable, used to ensure initialization only once static double amp; - static vector global_vext_time; + static std::vector global_vext_time; const UnitCell* ucell_ = nullptr; diff --git a/source/source_io/module_current/td_current_io_comm.cpp b/source/source_io/module_current/td_current_io_comm.cpp index 2f3e45a43fe..66392a80394 100644 --- a/source/source_io/module_current/td_current_io_comm.cpp +++ b/source/source_io/module_current/td_current_io_comm.cpp @@ -1,20 +1,20 @@ -#include "td_current_io.h" -#include "source_base/timer.h" #include "source_base/global_function.h" #include "source_base/global_variable.h" -#include "source_io/module_parameter/parameter.h" -#include "source_lcao/module_rt/td_info.h" #include "source_base/libm/libm.h" +#include "source_base/module_external/lapack_connector.h" +#include "source_base/module_external/scalapack_connector.h" #include "source_base/parallel_reduce.h" +#include "source_base/timer.h" #include "source_base/tool_threading.h" #include "source_base/vector3.h" #include "source_estate/module_dm/cal_dm_psi.h" #include "source_estate/module_pot/H_TDDFT_pw.h" +#include "source_io/module_parameter/parameter.h" #include "source_lcao/LCAO_domain.h" -#include "source_base/module_external/lapack_connector.h" -#include "source_base/module_external/scalapack_connector.h" #include "source_lcao/module_hcontainer/hcontainer_funcs.h" #include "source_lcao/module_rt/td_folding.h" +#include "source_lcao/module_rt/td_info.h" +#include "td_current_io.h" #ifdef __EXX #include "source_lcao/module_operator_lcao/op_exx_lcao.h" #include "source_lcao/module_ri/Exx_LRI.h" @@ -77,8 +77,7 @@ void ModuleIO::init_from_adj(const UnitCell& ucell, // Note: the distance of atoms should less than the cutoff radius, // When equal, the theoretical value of matrix element is zero, // but the calculated value is not zero due to the numerical error, which would lead to result changes. - if (ucell.cal_dtau(iat1, iat2, R_index2).norm() * ucell.lat0 - < orb_cutoff_[T1] + orb_cutoff_[T2]) + if (ucell.cal_dtau(iat1, iat2, R_index2).norm() * ucell.lat0 < orb_cutoff_[T1] + orb_cutoff_[T2]) { is_adj[ad1] = true; } @@ -169,20 +168,16 @@ void ModuleIO::set_rR_from_hR(const UnitCell& ucell, // std::cout<<"L1: "< tmp_r = r_calculator.get_psi_r_psi(tau1 * ucell.lat0, - T1, - L1, - m1, - N1, - tau2 * ucell.lat0, - T2, - L2, - m2, - N2); + ModuleBase::Vector3 tmp_r + = r_calculator + .get_psi_r_psi(tau1 * ucell.lat0, T1, L1, m1, N1, tau2 * ucell.lat0, T2, L2, m2, N2); for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) { hamilt::BaseMatrix* HlocR = rR[i_alpha]->find_matrix(iat1, iat2, r_index); - if(HlocR!=nullptr)HlocR->add_element(iw1, iw2, tmp_r[i_alpha]); + if (HlocR != nullptr) + { + HlocR->add_element(iw1, iw2, tmp_r[i_alpha]); + } // if (i_alpha == 2) // { // std::cout << "iw1: " << iw1 << " iw2: " << iw2 << " i_alpha: " << i_alpha @@ -197,14 +192,12 @@ void ModuleIO::set_rR_from_hR(const UnitCell& ucell, ModuleBase::TITLE("ModuleIO", "set_rR_from_sR"); } template -void ModuleIO::sum_HR( - const UnitCell& ucell, - const Parallel_Orbitals& pv, - const K_Vectors& kv, - const hamilt::HContainer* hR, - hamilt::HContainer>* full_hR, - const Exx_NAO>& exx_nao -) +void ModuleIO::sum_HR(const UnitCell& ucell, + const Parallel_Orbitals& pv, + const K_Vectors& kv, + const hamilt::HContainer* hR, + hamilt::HContainer>* full_hR, + const Exx_NAO>& exx_nao) { ModuleBase::TITLE("ModuleIO", "sum_HR"); ModuleBase::timer::start("ModuleIO", "sum_HR"); @@ -214,7 +207,9 @@ void ModuleIO::sum_HR( #ifdef __EXX const bool use_cell_nearest = (ModuleBase::Vector3(std::fmod(kv.get_koffset(0), 1.0), std::fmod(kv.get_koffset(1), 1.0), - std::fmod(kv.get_koffset(2), 1.0)).norm()< 1e-10); + std::fmod(kv.get_koffset(2), 1.0)) + .norm() + < 1e-10); RI::Cell_Nearest cell_nearest; // reallocate full_hR for BvK used in EXX if (GlobalC::exx_info.info_global.cal_exx) @@ -226,8 +221,7 @@ void ModuleIO::sum_HR( std::map> atoms_pos; for (int iat = 0; iat < ucell.nat; ++iat) { - atoms_pos[iat] = RI_Util::Vector3_to_array3( - ucell.atoms[ucell.iat2it[iat]].tau[ucell.iat2ia[iat]]); + atoms_pos[iat] = RI_Util::Vector3_to_array3(ucell.atoms[ucell.iat2it[iat]].tau[ucell.iat2ia[iat]]); } const std::array, 3> latvec = {RI_Util::Vector3_to_array3(ucell.a1), RI_Util::Vector3_to_array3(ucell.a2), @@ -236,13 +230,15 @@ void ModuleIO::sum_HR( hamilt::reallocate_hcontainer(ucell.nat, full_hR, Rs_period, &cell_nearest); } else + { hamilt::reallocate_hcontainer(ucell.nat, full_hR, Rs_period); + } } #endif // add other hR add_HR(hR, full_hR); // add velocity complex hR - if (PARAM.inp.td_stype==1) + if (PARAM.inp.td_stype == 1) { if (TD_info::td_vel_op == nullptr) { @@ -258,9 +254,25 @@ void ModuleIO::sum_HR( for (size_t is = 0; is != PARAM.inp.nspin; ++is) { if (use_cell_nearest) - RI_2D_Comm::add_HexxR(is, GlobalC::exx_info.info_global.hybrid_alpha, exx_nao.exc->get_Hexxs(), pv, PARAM.globalv.npol, *full_hR, &cell_nearest); + { + RI_2D_Comm::add_HexxR(is, + GlobalC::exx_info.info_global.hybrid_alpha, + exx_nao.exc->get_Hexxs(), + pv, + PARAM.globalv.npol, + *full_hR, + &cell_nearest); + } else - RI_2D_Comm::add_HexxR(is, GlobalC::exx_info.info_global.hybrid_alpha, exx_nao.exc->get_Hexxs(), pv, PARAM.globalv.npol, *full_hR, nullptr); + { + RI_2D_Comm::add_HexxR(is, + GlobalC::exx_info.info_global.hybrid_alpha, + exx_nao.exc->get_Hexxs(), + pv, + PARAM.globalv.npol, + *full_hR, + nullptr); + } } } #endif @@ -287,7 +299,9 @@ void ModuleIO::add_HR(const hamilt::HContainer* hR, hamilt::HContainer* HlocR = hR->find_matrix(iat1, iat2, r_index.x, r_index.y, r_index.z); if (full_HlocR == nullptr || HlocR == nullptr) + { ModuleBase::WARNING_QUIT("ModuleIO::add_HR", "HR cannot be nullptr!"); + } for (int i = 0; i < atom_ij.get_row_size(); ++i) { @@ -325,7 +339,7 @@ void ModuleIO::cal_velocity_basis_k(const UnitCell& ucell, const std::complex one_real = ModuleBase::ONE; const std::complex neg_one_real = ModuleBase::NEG_ONE; const std::complex zero_complex = ModuleBase::ZERO; - std::cout<nloc<* hk = new std::complex[pv->nloc]; std::complex* sk = new std::complex[pv->nloc]; std::complex* partial_hk = new std::complex[pv->nloc]; @@ -358,15 +372,23 @@ void ModuleIO::cal_velocity_basis_k(const UnitCell& ucell, ModuleBase::GlobalFunc::ZEROS(hk, pv->nloc); const int nrow = pv->get_row_size(); if (elecstate::H_TDDFT_pw::stype == 2) + { module_rt::folding_HR_td(ucell, hR, hk, kv.kvec_d[ik], TD_info::cart_At, nrow, 1); + } else + { hamilt::folding_HR(hR, hk, kv.kvec_d[ik], nrow, 1); + } // 1.2 set S(k) ModuleBase::GlobalFunc::ZEROS(sk, pv->nloc); if (elecstate::H_TDDFT_pw::stype == 2) - module_rt::folding_HR_td(ucell, sR, sk, kv.kvec_d[ik], TD_info::cart_At, nrow, 1); + { + module_rt::folding_HR_td(ucell, sR, sk, kv.kvec_d[ik], TD_info::cart_At, nrow, 1); + } else + { hamilt::folding_HR(sR, sk, kv.kvec_d[ik], nrow, 1); + } // for (int ir = 0; ir < pv->nrow; ir++) // { // const int iwt1 = pv->local2global_row(ir); @@ -415,15 +437,37 @@ void ModuleIO::cal_velocity_basis_k(const UnitCell& ucell, // 3.1 set partial_H(k) ModuleBase::GlobalFunc::ZEROS(partial_hk, pv->nloc); if (elecstate::H_TDDFT_pw::stype == 2) - module_rt::folding_partial_HR_td(ucell, hR, partial_hk, kv.kvec_d[ik], TD_info::cart_At, i_alpha, nrow, 1); + { + module_rt::folding_partial_HR_td(ucell, + hR, + partial_hk, + kv.kvec_d[ik], + TD_info::cart_At, + i_alpha, + nrow, + 1); + } else - module_rt::folding_partial_HR(ucell, hR, partial_hk, kv.kvec_d[ik], i_alpha, nrow, 1); + { + module_rt::folding_partial_HR(ucell, hR, partial_hk, kv.kvec_d[ik], i_alpha, nrow, 1); + } // 3.2 set partial S(k) ModuleBase::GlobalFunc::ZEROS(partial_sk, pv->nloc); if (elecstate::H_TDDFT_pw::stype == 2) - module_rt::folding_partial_HR_td(ucell, sR, partial_sk, kv.kvec_d[ik], TD_info::cart_At, i_alpha, nrow, 1); + { + module_rt::folding_partial_HR_td(ucell, + sR, + partial_sk, + kv.kvec_d[ik], + TD_info::cart_At, + i_alpha, + nrow, + 1); + } else - module_rt::folding_partial_HR(ucell, sR, partial_sk, kv.kvec_d[ik], i_alpha, nrow, 1); + { + module_rt::folding_partial_HR(ucell, sR, partial_sk, kv.kvec_d[ik], i_alpha, nrow, 1); + } // if(i_alpha == 2) // { // for(int ir=0;ir< pv->nrow; ir++) @@ -445,9 +489,13 @@ void ModuleIO::cal_velocity_basis_k(const UnitCell& ucell, ModuleBase::GlobalFunc::ZEROS(rk, pv->nloc); // folding_rR(rR[i_alpha], partial_sk, rk, pv, kv.kvec_d[ik], nrow, 1); if (elecstate::H_TDDFT_pw::stype == 2) + { module_rt::folding_HR_td(ucell, *rR[i_alpha], rk, kv.kvec_d[ik], TD_info::cart_At, nrow, 1); + } else + { hamilt::folding_HR(*rR[i_alpha], rk, kv.kvec_d[ik], nrow, 1); // set r(k) + } // if (i_alpha == 2) // { // std::cout << "ik: " << ik << " i_alpha: " << i_alpha << std::endl; @@ -793,33 +841,35 @@ void ModuleIO::cal_current_comm_k(const UnitCell& ucell, for (size_t i_alpha = 0; i_alpha != 3; ++i_alpha) { for (size_t ib = 0; ib != PARAM.inp.nbands; ++ib) + { current_k[ik][i_alpha] -= pelec->wg(ik, ib) * velocity_k[ik][i_alpha](ib, ib).real() / 2.0; // for unit + } } for (size_t i_alpha = 0; i_alpha < 3; ++i_alpha) { delete rR[i_alpha]; for (int ik = 0; ik < kv.get_nks(); ik++) + { delete[] velocity_basis_k[ik][i_alpha]; + } } ModuleBase::timer::end("ModuleIO", "cal_current_exx"); ModuleBase::TITLE("ModuleIO", "cal_current_exx"); } template -void ModuleIO::write_current( - const UnitCell& ucell, - const Grid_Driver& GridD, - const int istep, - const psi::Psi>* psi, - const elecstate::ElecState* pelec, - const K_Vectors& kv, - const Parallel_Orbitals* pv, - const LCAO_Orbitals& orb, - cal_r_overlap_R& r_calculator, - const hamilt::HContainer* sR, - const hamilt::HContainer* hR, - const Exx_NAO>& exx_nao -) +void ModuleIO::write_current(const UnitCell& ucell, + const Grid_Driver& GridD, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer* sR, + const hamilt::HContainer* hR, + const Exx_NAO>& exx_nao) { ModuleBase::TITLE("ModuleIO", "write_current"); ModuleBase::timer::start("ModuleIO", "write_current"); @@ -846,8 +896,8 @@ void ModuleIO::write_current( { if (GlobalV::MY_RANK == 0 && TD_info::out_current_k) { - std::string filename = PARAM.globalv.global_out_dir + "currents" + std::to_string(is) - + "k" + std::to_string(ik) + "comm.txt"; + std::string filename = PARAM.globalv.global_out_dir + "currents" + std::to_string(is) + "k" + + std::to_string(ik) + "comm.txt"; std::ofstream fout; fout.open(filename, std::ios::app); fout << std::setprecision(16); @@ -862,8 +912,12 @@ void ModuleIO::write_current( ModuleBase::Vector3 current_total; for (int dir = 0; dir < 3; dir++) + { for (int ik = 0; ik < kv.get_nks(); ik++) + { current_total[dir] += current_k[ik][dir]; + } + } if (GlobalV::MY_RANK == 0) { std::string filename = PARAM.globalv.global_out_dir + "current_tot_comm.txt"; @@ -878,35 +932,29 @@ void ModuleIO::write_current( ModuleBase::timer::end("ModuleIO", "write_current"); } -template -void ModuleIO::write_current( - const UnitCell& ucell, - const Grid_Driver& GridD, - const int istep, - const psi::Psi>* psi, - const elecstate::ElecState* pelec, - const K_Vectors& kv, - const Parallel_Orbitals* pv, - const LCAO_Orbitals& orb, - cal_r_overlap_R& r_calculator, - const hamilt::HContainer* sR, - const hamilt::HContainer* hR, - const Exx_NAO>& exx_nao -); - -template -void ModuleIO::write_current>( - const UnitCell& ucell, - const Grid_Driver& GridD, - const int istep, - const psi::Psi>* psi, - const elecstate::ElecState* pelec, - const K_Vectors& kv, - const Parallel_Orbitals* pv, - const LCAO_Orbitals& orb, - cal_r_overlap_R& r_calculator, - const hamilt::HContainer>* sR, - const hamilt::HContainer>* hR, - const Exx_NAO>& exx_nao -); +template void ModuleIO::write_current(const UnitCell& ucell, + const Grid_Driver& GridD, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer* sR, + const hamilt::HContainer* hR, + const Exx_NAO>& exx_nao); + +template void ModuleIO::write_current>(const UnitCell& ucell, + const Grid_Driver& GridD, + const int istep, + const psi::Psi>* psi, + const elecstate::ElecState* pelec, + const K_Vectors& kv, + const Parallel_Orbitals* pv, + const LCAO_Orbitals& orb, + cal_r_overlap_R& r_calculator, + const hamilt::HContainer>* sR, + const hamilt::HContainer>* hR, + const Exx_NAO>& exx_nao); #endif //__LCAO diff --git a/source/source_lcao/module_operator_lcao/op_exx_lcao.h b/source/source_lcao/module_operator_lcao/op_exx_lcao.h index fdbc3743431..941d5e088c2 100644 --- a/source/source_lcao/module_operator_lcao/op_exx_lcao.h +++ b/source/source_lcao/module_operator_lcao/op_exx_lcao.h @@ -3,12 +3,13 @@ #ifdef __EXX -#include -#include #include "operator_lcao.h" #include "source_cell/klist.h" #include "source_hamilt/module_xc/exx_info.h" +#include +#include + namespace hamilt { @@ -21,13 +22,19 @@ class OperatorEXX : public T }; #endif -enum Add_Hexx_Type { R, k }; +enum Add_Hexx_Type +{ + R, + k +}; template class OperatorEXX> : public OperatorLCAO { using TAC = std::pair>; -public: - OperatorEXX>(HS_Matrix_K* hsk_in, + + public: + OperatorEXX>( + HS_Matrix_K* hsk_in, hamilt::HContainer* hR_in, const UnitCell& ucell, const K_Vectors& kv_in, @@ -42,36 +49,37 @@ class OperatorEXX> : public OperatorLCAO virtual void contributeHR() override; private: - Add_Hexx_Type add_hexx_type = Add_Hexx_Type::R; - int current_spin = 0; - bool HR_fixed_done = false; - - std::vector>>>* Hexxd = nullptr; - std::vector>>>>* Hexxc = nullptr; - - /// @brief the step of the outer loop. - /// nullptr: no dependence on the number of two_level_step, contributeHk will do enerything normally. - /// 0: the first outer loop. If restart, contributeHk will directly add Hexx to Hloc. else, do nothing. - /// >0: not the first outer loop. contributeHk will do enerything normally. - int* two_level_step = nullptr; - /// @brief if restart, read and save Hexx, and directly use it during the first outer loop. - bool restart = false; - - const int istep = 0; // the ion step - - void add_loaded_Hexx(const int ik); - - const UnitCell& ucell; - - const K_Vectors& kv; - - // if k points has no shift, use cell_nearest to reduce the memory cost - RI::Cell_Nearest cell_nearest; - bool use_cell_nearest = true; - - /// @brief Hexxk for all k-points, only for the 1st scf loop ofrestart load - std::vector> Hexxd_k_load; - std::vector>> Hexxc_k_load; + Add_Hexx_Type add_hexx_type = Add_Hexx_Type::R; + int current_spin = 0; + bool HR_fixed_done = false; + bool initial_gga_done = false; // Taoni Bao add 2026-05-18, to fix RT-TDDFT EXX missing problem in the evolution + + std::vector>>>* Hexxd = nullptr; + std::vector>>>>* Hexxc = nullptr; + + /// @brief the step of the outer loop. + /// nullptr: no dependence on the number of two_level_step, contributeHk will do enerything normally. + /// 0: the first outer loop. If restart, contributeHk will directly add Hexx to Hloc. else, do nothing. + /// >0: not the first outer loop. contributeHk will do enerything normally. + int* two_level_step = nullptr; + /// @brief if restart, read and save Hexx, and directly use it during the first outer loop. + bool restart = false; + + const int istep = 0; // the ion step + + void add_loaded_Hexx(const int ik); + + const UnitCell& ucell; + + const K_Vectors& kv; + + // if k points has no shift, use cell_nearest to reduce the memory cost + RI::Cell_Nearest cell_nearest; + bool use_cell_nearest = true; + + /// @brief Hexxk for all k-points, only for the 1st scf loop ofrestart load + std::vector> Hexxd_k_load; + std::vector>> Hexxc_k_load; }; using TAC = std::pair>; @@ -81,14 +89,15 @@ RI::Cell_Nearest init_cell_nearest(const UnitCell& ucell // allocate according to the read-in HexxR, used in nscf template void reallocate_hcontainer(const std::vector>>>& Hexxs, - HContainer* hR, - const RI::Cell_Nearest* const cell_nearest = nullptr); + HContainer* hR, + const RI::Cell_Nearest* const cell_nearest = nullptr); /// allocate according to BvK cells, used in scf template -void reallocate_hcontainer(const int nat, HContainer* hR, - const std::array& Rs_period, - const RI::Cell_Nearest* const cell_nearest = nullptr); +void reallocate_hcontainer(const int nat, + HContainer* hR, + const std::array& Rs_period, + const RI::Cell_Nearest* const cell_nearest = nullptr); } // namespace hamilt #endif // __EXX diff --git a/source/source_lcao/module_operator_lcao/op_exx_lcao.hpp b/source/source_lcao/module_operator_lcao/op_exx_lcao.hpp index 0b282950f1c..7c1ad176f75 100644 --- a/source/source_lcao/module_operator_lcao/op_exx_lcao.hpp +++ b/source/source_lcao/module_operator_lcao/op_exx_lcao.hpp @@ -417,6 +417,12 @@ void OperatorEXX>::contributeHk(int ik) // 2. For the first ionic step: else if (this->istep == 0) { + // If EXX is once turned on (two_level_step > 0), let OperatorEXX remember this + if (this->two_level_step != nullptr && *this->two_level_step > 0) + { + this->initial_gga_done = true; + } + // Check if we are in the pre-convergence stage of the two-level SCF (i.e., the pure GGA loop) bool in_gga_pre_loop = (this->two_level_step != nullptr && *this->two_level_step == 0); @@ -424,7 +430,9 @@ void OperatorEXX>::contributeHk(int ik) bool lacks_good_guess = (!this->restart); // If in the pre-convergence loop and lacking a good initial guess, skip adding the EXX contribution - if (in_gga_pre_loop && lacks_good_guess) + // Taoni Bao add 2026-05-18, only skip EXX if initial GGA loop is not done + // Fix RT-TDDFT EXX missing problem in the evolution + if (in_gga_pre_loop && lacks_good_guess && !this->initial_gga_done) { return; // In the non-EXX loop, skip adding EXX contribution } diff --git a/tests/08_EXX/14_NO_TDDFT_PBE0/current_tot.txt.ref b/tests/08_EXX/14_NO_TDDFT_PBE0/current_tot.txt.ref index 68bd2177675..1248e06af2b 100644 --- a/tests/08_EXX/14_NO_TDDFT_PBE0/current_tot.txt.ref +++ b/tests/08_EXX/14_NO_TDDFT_PBE0/current_tot.txt.ref @@ -1,6 +1,6 @@ -1 -2.4064298950993433e-19 2.4067857486819294e-19 2.4048227372973307e-19 -2 1.3583754132510189e-08 -1.3583754049585592e-08 2.4306592013239020e-06 -3 3.8454029971142809e-08 -3.8454029713369349e-08 7.2734897464115248e-06 -4 4.3394109439952714e-08 -4.3394109112344272e-08 9.6350822407378473e-06 -5 2.6144935011100098e-08 -2.6144935077756982e-08 9.4987415747287647e-06 -6 6.1114518547755749e-10 -6.1114527641090651e-10 9.2969143096824206e-06 +1 -2.4064812749552146e-19 2.4058918971736318e-19 2.4056235004085640e-19 +2 1.3401891378677289e-08 -1.3401891246959429e-08 2.4369369671292067e-06 +3 3.9314244407525817e-08 -3.9314246669204259e-08 7.3211566892522424e-06 +4 4.7934170184878929e-08 -4.7934175958037426e-08 9.7956029317437335e-06 +5 3.4376283041277918e-08 -3.4376284895741181e-08 9.8560550504479175e-06 +6 5.9843794461236954e-09 -5.9843813295237610e-09 9.9145073758045465e-06 diff --git a/tests/08_EXX/14_NO_TDDFT_PBE0/result.ref b/tests/08_EXX/14_NO_TDDFT_PBE0/result.ref index 826b8d7d7d2..1b0730251e2 100644 --- a/tests/08_EXX/14_NO_TDDFT_PBE0/result.ref +++ b/tests/08_EXX/14_NO_TDDFT_PBE0/result.ref @@ -1,4 +1,4 @@ -etotref -170.67031862 -etotperatomref -85.33515931 +etotref -203.7710904354790 +etotperatomref -101.8855452177 CompareCurrent_pass 0 totaltimeref 16.38