Refactor: modify EXX realx/md calculation framework#5403
Conversation
|
For EXX relax/md Integration Test, |
|
@1041176461 You can change the reference results of the related cases. |
|
@maki49 Thanks! I changed "result.ref" of tests "285_NO_KP_RE_HSE", "286_NO_KP_CR_HSE", "385_NO_GO_RE_S1_HSE" and "386_NO_GO_MD_S1_HSE". I guess density matrix extrapolation may be a good way to reduce the difference, and corresponding implementations are planned. |
There was a problem hiding this comment.
I notice you change the ref. I think these changes should be reviewed by more relevant developers. Could you make a review @PeizeLin ?
Since all the Integration Tests are unconverged, the older refs are meaningless when the loop is changed. |
* Use template to reconstruct parse_expression * Feature: output R matrix at each MD step * Modify'matrix_HS' to 'matrix' for R matrix output * Merge branches 'develop' and 'develop' of https://github.com/1041176461/abacus-develop into develop * Fix: modify index in parse_expression * Fix: add regfree for parse_expression * Doc: update phonopy doc * Doc: update phonopy doc * fix tdos plot for nspin=2 * optimize dosplot for nspin=2 * fix legend for dosplot * Refactor: modify exx loop for relax/md * add exx when istep>0 * Update dos.py * Update esolver_sdft_pw.cpp * Update lcao_before_scf.cpp * Update Exx_LRI_interface.h * Update Exx_LRI_interface.hpp * Fix: compile error * Fix: compile error * Fix: change HSE relax/md result.ref for new framework * Fix: compile error * compatible with exx_iter_finish --------- Co-authored-by: jiyuang <jiyuyang@mail.ustc.com> Co-authored-by: Qianrui <76200646+Qianruipku@users.noreply.github.com> Co-authored-by: maki49 <1579492865@qq.com>
The new EXX relax/md framework does not need to repeat the PBE calculation to build the density matrix for subsequent ion steps except step 0. Instead, it directly reads the density matrix of the previous step to perform EXX self-consistent calculation, reducing unnecessary self-consistent calculations.
Here are some comparsion
For relax,

exx_separate_loop 1, left -> new, right -> oldFor relax,

exx_separate_loop 0, left -> new, right -> oldFor md,

exx_separate_loop 1, left -> new, right -> oldFor md,

exx_separate_loop 0, left -> new, right -> old