From 53b4338fbd927435d938f15812ce88dcb9ed0479 Mon Sep 17 00:00:00 2001 From: bao Date: Fri, 28 Mar 2025 11:11:17 +0800 Subject: [PATCH] fixing issue #5961 --- source/module_esolver/esolver_ks.cpp | 32 ++++++++--------- tests/integrate/218_NO_mixing_tau/INPUT | 37 ++++++++++++++++++++ tests/integrate/218_NO_mixing_tau/KPT | 4 +++ tests/integrate/218_NO_mixing_tau/STRU | 21 +++++++++++ tests/integrate/218_NO_mixing_tau/jd | 1 + tests/integrate/218_NO_mixing_tau/result.ref | 3 ++ tests/integrate/CASES_CPU.txt | 1 + 7 files changed, 83 insertions(+), 16 deletions(-) create mode 100644 tests/integrate/218_NO_mixing_tau/INPUT create mode 100644 tests/integrate/218_NO_mixing_tau/KPT create mode 100644 tests/integrate/218_NO_mixing_tau/STRU create mode 100644 tests/integrate/218_NO_mixing_tau/jd create mode 100644 tests/integrate/218_NO_mixing_tau/result.ref diff --git a/source/module_esolver/esolver_ks.cpp b/source/module_esolver/esolver_ks.cpp index 2a26b2c7de..734e1dd739 100644 --- a/source/module_esolver/esolver_ks.cpp +++ b/source/module_esolver/esolver_ks.cpp @@ -106,21 +106,6 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para //! 1) initialize "before_all_runniers" in ESolver_FP ESolver_FP::before_all_runners(ucell, inp); - //! 2) setup the charge mixing parameters - p_chgmix->set_mixing(PARAM.inp.mixing_mode, - PARAM.inp.mixing_beta, - PARAM.inp.mixing_ndim, - PARAM.inp.mixing_gg0, - PARAM.inp.mixing_tau, - PARAM.inp.mixing_beta_mag, - PARAM.inp.mixing_gg0_mag, - PARAM.inp.mixing_gg0_min, - PARAM.inp.mixing_angle, - PARAM.inp.mixing_dmr, - ucell.omega, - ucell.tpiba); - p_chgmix->init_mixing(); - /// PAW Section #ifdef USE_PAW if (PARAM.inp.use_paw) @@ -201,7 +186,7 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para #endif /// End PAW - //! 4) it has been established that + //! 3) it has been established that // xc_func is same for all elements, therefore // only the first one if used if (PARAM.inp.use_paw) @@ -214,6 +199,21 @@ void ESolver_KS::before_all_runners(UnitCell& ucell, const Input_para } ModuleBase::GlobalFunc::DONE(GlobalV::ofs_running, "SETUP UNITCELL"); + //! 4) setup the charge mixing parameters + p_chgmix->set_mixing(PARAM.inp.mixing_mode, + PARAM.inp.mixing_beta, + PARAM.inp.mixing_ndim, + PARAM.inp.mixing_gg0, + PARAM.inp.mixing_tau, + PARAM.inp.mixing_beta_mag, + PARAM.inp.mixing_gg0_mag, + PARAM.inp.mixing_gg0_min, + PARAM.inp.mixing_angle, + PARAM.inp.mixing_dmr, + ucell.omega, + ucell.tpiba); + p_chgmix->init_mixing(); + //! 5) ESolver depends on the Symmetry module // symmetry analysis should be performed every time the cell is changed if (ModuleSymmetry::Symmetry::symm_flag == 1) diff --git a/tests/integrate/218_NO_mixing_tau/INPUT b/tests/integrate/218_NO_mixing_tau/INPUT new file mode 100644 index 0000000000..6ab222c77c --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/INPUT @@ -0,0 +1,37 @@ +INPUT_PARAMETERS RUNNING ABACUS-DFT + +#Parameters (1.General) +suffix autotest # suffix of OUTPUT DIR +nspin 2 # 1/2/4 4 for SOC +symmetry 0 # 0/1 1 for open, default +esolver_type ksdft # ksdft, ofdft, sdft, tddft, lj, dp +dft_functional MGGA_X_R2SCAN+MGGA_C_R2SCAN # same as upf file, can be lda/pbe/scan/hf/pbe0/hse +ks_solver genelpa # default for ksdft-lcao +vdw_method none # d3 , d3_bj, none +pseudo_dir ../../PP_ORB +orbital_dir ../../PP_ORB + +#Parameters (2.Iteration) +calculation scf # scf relax cell-relax md +ecutwfc 20 +scf_thr 1e-7 +printe 1 +#Parameters (3.Basis) +basis_type lcao # lcao or pw +gamma_only 1 # 0/1, replace KPT + +#Parameters (4.Smearing) +smearing_method cold # mp/gaussian/cold/fixed +smearing_sigma 0.008 # Rydberg + +nx 3 +ny 3 +nz 3 + +#Parameters (5.Mixing) +mixing_type broyden # pulay/broyden +mixing_ndim 20 +mixing_beta 0.4 # for metal: 0.05-0.4 +mixing_gg0 1.0 # only for metal +mixing_tau true + diff --git a/tests/integrate/218_NO_mixing_tau/KPT b/tests/integrate/218_NO_mixing_tau/KPT new file mode 100644 index 0000000000..c289c0158a --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/KPT @@ -0,0 +1,4 @@ +K_POINTS +0 +Gamma +1 1 1 0 0 0 diff --git a/tests/integrate/218_NO_mixing_tau/STRU b/tests/integrate/218_NO_mixing_tau/STRU new file mode 100644 index 0000000000..ccb4619857 --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/STRU @@ -0,0 +1,21 @@ +ATOMIC_SPECIES +C 12.011 C.LDA.UPF + +NUMERICAL_ORBITAL +C_gga_8au_100Ry_2s2p1d.orb + +LATTICE_CONSTANT +1.889726 + +LATTICE_VECTORS + 1.5000000000 0.0000000000 0.0000000000 #latvec1 + 0.0000000000 1.5000000000 0.0000000000 #latvec2 + 0.0000000000 0.0000000000 1.5000000000 #latvec3 + +ATOMIC_POSITIONS +Direct + +C #label +0.0000 #magnetism +1 #number of atoms + 0.0000000000 0.0000000000 0.0000000000 m 0 0 0 diff --git a/tests/integrate/218_NO_mixing_tau/jd b/tests/integrate/218_NO_mixing_tau/jd new file mode 100644 index 0000000000..a2fce4bf60 --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/jd @@ -0,0 +1 @@ +r2scan functional with mixing tau test in LCAO base. System: C in a 2*2*2-Angstrom^3 box. diff --git a/tests/integrate/218_NO_mixing_tau/result.ref b/tests/integrate/218_NO_mixing_tau/result.ref new file mode 100644 index 0000000000..c6c8f33142 --- /dev/null +++ b/tests/integrate/218_NO_mixing_tau/result.ref @@ -0,0 +1,3 @@ +etotref -122.1473084278620 +etotperatomref -122.1473084279 +totaltimeref 2.60 diff --git a/tests/integrate/CASES_CPU.txt b/tests/integrate/CASES_CPU.txt index fd027b35fc..c7fd492883 100644 --- a/tests/integrate/CASES_CPU.txt +++ b/tests/integrate/CASES_CPU.txt @@ -188,6 +188,7 @@ 216_NO_scan_Si2 217_NO_out_pot 217_NO_out_pot_nscf +218_NO_mixing_tau 219_NO_out_elf 220_NO_KP_MD_MSST #220_NO_KP_MD_MSST_level2