加载失败,
- Introduction to ABACUS: Path to PW calculation - Part 11
- Relax_Driver::relax_driver()
- ESolver_KS::Run()
- ESolver_KS_PW::hamilt2density()
- HSolverPW::solve(): the rest
- ElecStatePW::psiToRho()
- ElecState::cal_energies()
- Harris and Kohn-Sham energies
- GlobalC::ucell.magnet.compute_magnetization()
- ElecState::cal_delta_eband()
- Charge_Mixing::get_drho()
- HSolverPW::cal_hsolerror()
- Charge_Mixing::auto_set()
- Charge_Mixing::mix_rho()
- Mixing
- Broyden和Kerker mixing
- Pulay mixing
- CDIIS
- EDIIS
- GEDIIS
- ABACUS实现
- ESolver_KS::updatepot()
- Not converged case
- Potential::update_from_charge()
- ElecState::cal_delta_escf()
- Converged case
- ElecState::cal_converged()
- Potential::get_vnew()
Introduction to ABACUS: Path to PW calculation - Part 11
Introduction to ABACUS: Path to PW calculation - Part 11
本文讨论了ABACUS软件中平面波计算路径(Path to PW calculation)的相关内容,围绕电子结构计算的关键函数和流程展开,包括电荷密度计算、能量计算、收敛判断以及后处理等方面。关键要点包括:
1.
电荷密度计算:在psiToRho函数中,通过一系列操作更新电荷密度rho的数值,涉及内存指针指向、权重计算、波函数变换等步骤。
2.
能量计算:calculate_harris和calculate_etot分别计算Harris和Kohn-Sham能量,各项能量在不同函数中逐步计算并赋值。
3.
带隙计算:cal_bandgap和cal_bandgap_updw函数分别用于计算不同自旋情况下的带隙。
4.
收敛判断:判断scf收敛的标准是drho < scf_thr,若drho < hsolver_error则不进行电荷混合操作。
5.
电荷混合:常见方法有Broyden、Kerker、Pulay等,ABACUS采用继承方式实现混合操作,并使用异构数据存储。
6.
势场更新:在未收敛和收敛情况下,分别通过update_from_charge和get_vnew函数更新势场。
7.
后处理:ESolver_KS_PW::postprocess函数对电子态、DOS、能带性质等进行输出,还可进行平面波和球Bessel函数的overlap积分输出 。
📃写在前面
1.
不脱离代码——避免读者看完手册后对代码没有一丁点概念
2.
不堆砌代码解释——避免平庸的代码解释,努力兼顾拉近读者和代码距离的同时,做到提纲挈领,不逐行复制代码后进行停留在代码语义上的解释
Relax_Driver::relax_driver()
ESolver_KS::Run()