From 308efb12e08c68176ce3dc367eb8c59f2cd2fb3f Mon Sep 17 00:00:00 2001 From: YuLiu98 Date: Wed, 19 Jul 2023 14:30:06 +0800 Subject: [PATCH] Fix: charge extrapolation in sdft-md --- source/module_esolver/esolver_sdft_pw.cpp | 12 ++++++++++++ tests/integrate/183_PW_MD_SDFT_10S/result.ref | 10 +++++----- tests/integrate/183_PW_MD_SDFT_5D10S/result.ref | 10 +++++----- tests/integrate/183_PW_MD_SDFT_ALL/result.ref | 10 +++++----- 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/source/module_esolver/esolver_sdft_pw.cpp b/source/module_esolver/esolver_sdft_pw.cpp index 3d6831847df..cc7356991cb 100644 --- a/source/module_esolver/esolver_sdft_pw.cpp +++ b/source/module_esolver/esolver_sdft_pw.cpp @@ -97,6 +97,18 @@ void ESolver_SDFT_PW::eachiterfinish(int iter) } void ESolver_SDFT_PW::afterscf(const int istep) { + // save charge difference into files for charge extrapolation + if (GlobalV::CALCULATION != "scf") + { + this->CE.save_files(istep, + GlobalC::ucell, +#ifdef __MPI + this->pw_big, +#endif + this->pelec->charge, + &this->sf); + } + if(GlobalV::out_chg > 0) { for(int is=0; is